Add files

This commit is contained in:
2025-01-02 11:16:57 +00:00
parent 9a8645c2be
commit 8bfaa12ea7
4 changed files with 72 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
module Dodge.BlBl (doBlBl) where
import Dodge.Data.BlBl
doBlBl :: BlBl -> Bool -> Bool
doBlBl bb = case bb of
BlNegate -> not
BlConst bl -> const bl
BlId -> id
+17
View File
@@ -0,0 +1,17 @@
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.BlBl where
import Data.Aeson
import Data.Aeson.TH
data BlBl
= BlNegate
| BlConst Bool
| BlId
deriving (Eq, Ord, Show, Read) --Generic, Flat)
deriveJSON defaultOptions ''BlBl
+21
View File
@@ -0,0 +1,21 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Wall.Structure
where
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
data WallStructure
= StandaloneWall
| DoorPart {_wsDoor :: Int}
| MachinePart {_wsMachine :: Int}
| BlockPart {_wsBlock :: Int}
| CreaturePart { _wlStCreature :: Int }
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''WallStructure
deriveJSON defaultOptions ''WallStructure
+25
View File
@@ -0,0 +1,25 @@
module Dodge.SelectedClose (getSelectedCloseObj,interactWithCloseObj) where
import Dodge.Button.Event
import Dodge.Inventory.Add
import Control.Lens
import Dodge.Data.World
import NewInt
interactWithCloseObj :: Either FloorItem Button -> World -> World
interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e of
(Left flit) -> pickUpItem 0 flit w
(Right but) -> doButtonEvent (_btEvent but) but w
getSelectedCloseObj :: World -> Maybe (Either FloorItem Button)
getSelectedCloseObj w = do
(i, j, _) <- w ^? hud . hudElement . diSelection . _Just
case i of
3 -> do
NInt k <- w ^? hud . closeItems . ix j
fmap Left $ w ^? cWorld . lWorld . floorItems . unNIntMap . ix k
5 -> do
k <- w ^? hud . closeButtons . ix j
fmap Right $ w ^? cWorld . lWorld . buttons . ix k
_ -> Nothing