Refactor inventory management, add tweak, combine and inspect modes
This commit is contained in:
+59
-104
@@ -19,7 +19,6 @@ import Dodge.Config.Data
|
||||
import Dodge.Config.KeyConfig
|
||||
import Geometry
|
||||
import Picture
|
||||
import qualified DoubleStack as DS
|
||||
|
||||
import Control.Lens
|
||||
import System.Random
|
||||
@@ -28,50 +27,65 @@ import qualified Data.Map as M
|
||||
import qualified Data.Set as S
|
||||
import Data.Graph.Inductive.Graph hiding ((&))
|
||||
import Data.List
|
||||
{- Indestructible wall. -}
|
||||
defaultWall :: Wall
|
||||
defaultWall = Wall
|
||||
{ _wlLine = ((0,0),(50,0))
|
||||
, _wlID = 0
|
||||
, _wlColor = greyN 0.6
|
||||
, _wlSeen = False
|
||||
, _wlIsSeeThrough = False
|
||||
}
|
||||
{- Indestructible see-through wall. -}
|
||||
defaultCrystalWall :: Wall
|
||||
defaultCrystalWall = Wall
|
||||
{ _wlLine = ((0,0),(50,0))
|
||||
, _wlID = 0
|
||||
, _wlColor = withAlpha 0.5 aquamarine
|
||||
, _wlSeen = False
|
||||
, _wlIsSeeThrough = True
|
||||
}
|
||||
{- Door that opens on approach.
|
||||
Pathable. -}
|
||||
defaultAutoDoor :: Wall
|
||||
defaultAutoDoor = Door
|
||||
{ _wlLine = ((0,0),(50,0))
|
||||
, _wlID = 0
|
||||
, _doorMech = id
|
||||
, _wlColor = light $ dim $ dim $ dim yellow
|
||||
, _wlSeen = False
|
||||
, _wlIsSeeThrough = False
|
||||
, _doorPathable = True
|
||||
, _drPositions = DS.singleton ((0,0),(50,0))
|
||||
}
|
||||
{-
|
||||
Non-pathable door.
|
||||
-}
|
||||
defaultDoor :: Wall
|
||||
defaultDoor = Door
|
||||
{ _wlLine = ((0,0),(50,0))
|
||||
, _wlID = 0
|
||||
, _doorMech = id
|
||||
, _wlColor = light $ dim $ dim $ dim yellow
|
||||
, _wlSeen = False
|
||||
, _wlIsSeeThrough = False
|
||||
, _doorPathable = False
|
||||
, _drPositions = DS.singleton ((0,0),(50,0))
|
||||
defaultWorld :: World
|
||||
defaultWorld = World
|
||||
{ _keys = S.empty
|
||||
, _mouseButtons = S.empty
|
||||
, _cameraCenter = (0,0)
|
||||
, _cameraRot = 0
|
||||
, _cameraZoom = 1
|
||||
, _cameraViewFrom = (0,0)
|
||||
, _creatures = IM.empty
|
||||
, _creaturesZone = IM.empty
|
||||
, _creatureGroups = IM.empty
|
||||
, _clouds = IM.empty
|
||||
, _cloudsZone = IM.empty
|
||||
, _itemPositions = IM.empty
|
||||
, _projectiles = IM.empty
|
||||
, _particles = []
|
||||
, _staticWalls = []
|
||||
, _walls = IM.empty
|
||||
, _wallsZone = IM.empty
|
||||
, _forceFields = IM.empty
|
||||
, _floorItems = IM.empty
|
||||
, _randGen = mkStdGen 2
|
||||
, _mousePos = (0,0)
|
||||
, _testString = []
|
||||
, _yourID = 0
|
||||
, _worldEvents = id
|
||||
, _pressPlates = IM.empty
|
||||
, _buttons = IM.empty
|
||||
, _soundQueue = []
|
||||
, _sounds = M.empty
|
||||
, _corpses = IM.empty
|
||||
, _decorations = IM.empty
|
||||
, _storedLevel = Nothing
|
||||
, _menuLayers = [LevelMenu 1]
|
||||
, _worldState = M.empty
|
||||
, _worldTriggers = S.empty
|
||||
, _clickMousePos = (0,0)
|
||||
, _pathGraph = Data.Graph.Inductive.Graph.empty
|
||||
, _pathGraph' = []
|
||||
, _pathPoints = IM.empty
|
||||
, _pathInc = M.empty
|
||||
, _carteDisplay = False
|
||||
, _carteCenter = (0,0)
|
||||
, _carteZoom = 0.5
|
||||
, _carteRot = 0
|
||||
, _lightSources = IM.empty
|
||||
, _tempLightSources = [youLight]
|
||||
, _closeActiveObjects = []
|
||||
, _seenLocations = IM.fromList
|
||||
[(0, (_crPos . you, "CURRENT POSITION"))
|
||||
,(1, (const (0,0) , "START POSITION"))
|
||||
]
|
||||
, _selLocation = 0
|
||||
, _keyConfig = defaultKeyConfigSDL
|
||||
, _config = defaultConfig
|
||||
, _sideEffects = []
|
||||
, _doneSideEffects = []
|
||||
, _debugFlags = defaultDebugFlags
|
||||
, _inventoryMode = TopInventory
|
||||
}
|
||||
defaultCreature :: Creature
|
||||
defaultCreature = Creature
|
||||
@@ -220,65 +234,6 @@ defaultPP = PressPlate
|
||||
, _ppID = -1
|
||||
, _ppText = "Pressure plate"
|
||||
}
|
||||
defaultWorld :: World
|
||||
defaultWorld = World
|
||||
{ _keys = S.empty
|
||||
, _mouseButtons = S.empty
|
||||
, _cameraCenter = (0,0)
|
||||
, _cameraRot = 0
|
||||
, _cameraZoom = 1
|
||||
, _cameraViewFrom = (0,0)
|
||||
, _creatures = IM.empty
|
||||
, _creaturesZone = IM.empty
|
||||
, _creatureGroups = IM.empty
|
||||
, _clouds = IM.empty
|
||||
, _cloudsZone = IM.empty
|
||||
, _itemPositions = IM.empty
|
||||
, _projectiles = IM.empty
|
||||
, _particles = []
|
||||
, _staticWalls = []
|
||||
, _walls = IM.empty
|
||||
, _wallsZone = IM.empty
|
||||
, _forceFields = IM.empty
|
||||
, _floorItems = IM.empty
|
||||
, _randGen = mkStdGen 2
|
||||
, _mousePos = (0,0)
|
||||
, _testString = []
|
||||
, _yourID = 0
|
||||
, _worldEvents = id
|
||||
, _pressPlates = IM.empty
|
||||
, _buttons = IM.empty
|
||||
, _soundQueue = []
|
||||
, _sounds = M.empty
|
||||
, _corpses = IM.empty
|
||||
, _decorations = IM.empty
|
||||
, _storedLevel = Nothing
|
||||
, _menuLayers = [LevelMenu 1]
|
||||
, _worldState = M.empty
|
||||
, _worldTriggers = S.empty
|
||||
, _clickMousePos = (0,0)
|
||||
, _pathGraph = Data.Graph.Inductive.Graph.empty
|
||||
, _pathGraph' = []
|
||||
, _pathPoints = IM.empty
|
||||
, _pathInc = M.empty
|
||||
, _carteDisplay = False
|
||||
, _carteCenter = (0,0)
|
||||
, _carteZoom = 0.5
|
||||
, _carteRot = 0
|
||||
, _lightSources = IM.empty
|
||||
, _tempLightSources = [youLight]
|
||||
, _closeActiveObjects = []
|
||||
, _seenLocations = IM.fromList
|
||||
[(0, (_crPos . you, "CURRENT POSITION"))
|
||||
,(1, (const (0,0) , "START POSITION"))
|
||||
]
|
||||
, _selLocation = 0
|
||||
, _keyConfig = defaultKeyConfigSDL
|
||||
, _config = defaultConfig
|
||||
, _sideEffects = []
|
||||
, _doneSideEffects = []
|
||||
, _debugFlags = defaultDebugFlags
|
||||
}
|
||||
defaultDebugFlags :: DebugFlags
|
||||
defaultDebugFlags = DebugFlags
|
||||
{ _noClip = False
|
||||
|
||||
Reference in New Issue
Block a user