From 66d098cfef331dd787f185e4fc2a3c5a3f6833eb Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 2 Jun 2022 18:17:38 +0100 Subject: [PATCH] Move towards scrapping separate GenWorld, merging into World --- src/Dodge/Data.hs | 8 ++++++++ src/Dodge/Default/World.hs | 1 + src/Dodge/LevelGen/Data.hs | 11 +---------- src/Dodge/LevelGen/LevelStructure.hs | 6 ++++-- src/Dodge/Placement/Instance/Sensor.hs | 2 +- src/Dodge/Placement/PlaceSpot.hs | 4 ++-- src/Dodge/Placement/TopDecoration.hs | 3 ++- 7 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/Dodge/Data.hs b/src/Dodge/Data.hs index 810ae4bbc..432010a0f 100644 --- a/src/Dodge/Data.hs +++ b/src/Dodge/Data.hs @@ -139,8 +139,15 @@ data World = World , _worldClock :: Int , _doubleMouseHammer :: HammerPosition , _backspaceTimer :: Int + , _genParams :: GenParams } +newtype GenParams = GenParams + { _sensorCoding :: M.Map DamageType (PaletteColor,DecorationShape) + } +data DecorationShape = PlusDecoration | SquareDecoration | CircleDecoration | ThreeLineDecoration + deriving (Eq,Ord,Enum,Show) + data HUDElement = DisplayInventory {_subInventory :: SubInventory} | DisplayCarte @@ -1406,3 +1413,4 @@ makeLenses ''AllocateEquipment makeLenses ''ActivateEquipment makeLenses ''EquipParams makeLenses ''TerminalCommand +makeLenses ''GenParams diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index 612d46546..c415e372f 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -98,6 +98,7 @@ defaultWorld = World , _timeFlow = NormalTimeFlow , _doubleMouseHammer = HammerUp , _backspaceTimer = 0 + , _genParams = GenParams M.empty } youLight :: TempLightSource youLight = TLS diff --git a/src/Dodge/LevelGen/Data.hs b/src/Dodge/LevelGen/Data.hs index c04d04f92..1203f180f 100644 --- a/src/Dodge/LevelGen/Data.hs +++ b/src/Dodge/LevelGen/Data.hs @@ -9,7 +9,7 @@ import Shape.Data import Data.Tile import qualified Data.Set as S -import qualified Data.Map.Strict as M +--import qualified Data.Map.Strict as M import Control.Lens import Control.Monad.State import System.Random @@ -170,19 +170,11 @@ data RoomPosType | RoomPosExLink | RoomPosLab Int deriving (Eq,Ord,Show) -data DecorationShape = PlusDecoration | SquareDecoration | CircleDecoration - | ThreeLineDecoration - deriving (Eq,Ord,Enum,Show) - -newtype GenParams = GenParams - { _sensorCoding :: M.Map DamageType (PaletteColor,DecorationShape) - } data GenWorld = GenWorld { _gWorld :: World , _gPlacements :: IM.IntMap [(Placement,Int)] , _gRooms :: IM.IntMap Room - , _gParams :: GenParams } makeLenses ''Room @@ -195,7 +187,6 @@ makeLenses ''RoomPos makeLenses ''RoomPosType makeLenses ''RPLinkStatus makeLenses ''GenWorld -makeLenses ''GenParams spNoID :: PlacementSpot -> PSType -> Placement spNoID ps pst = Placement ps pst Nothing Nothing (const Nothing) diff --git a/src/Dodge/LevelGen/LevelStructure.hs b/src/Dodge/LevelGen/LevelStructure.hs index a54b70081..896d8c6c9 100644 --- a/src/Dodge/LevelGen/LevelStructure.hs +++ b/src/Dodge/LevelGen/LevelStructure.hs @@ -9,6 +9,7 @@ import Dodge.LevelGen.Data import Dodge.Data import Dodge.RandomHelp import Color +import LensHelp --import Data.Tree import qualified Data.IntMap.Strict as IM @@ -19,11 +20,12 @@ import System.Random worldToGenWorld :: IM.IntMap Room -> World -> GenWorld worldToGenWorld rms w = GenWorld - { _gWorld = w + { _gWorld = w & genParams .~ gparams , _gPlacements = IM.empty , _gRooms = rms - , _gParams = evalState generateGenParams (_randGen w) } + where + gparams = evalState generateGenParams (_randGen w) generateGenParams :: RandomGen g => State g GenParams generateGenParams = do diff --git a/src/Dodge/Placement/Instance/Sensor.hs b/src/Dodge/Placement/Instance/Sensor.hs index bd383bef0..f8bc81641 100644 --- a/src/Dodge/Placement/Instance/Sensor.hs +++ b/src/Dodge/Placement/Instance/Sensor.hs @@ -24,7 +24,7 @@ damageSensor damageSensor dt wdth upf ps = pContID ps (PutLS $ lsPosCol (V3 0 0 30) 0.1) $ \lsid -> Just $ spNoID ps $ PutUsingGenParams $ \gw -> (,) gw $ PutMachine yellow (reverse $ square wdth) defaultMachine - { _mcDraw = sensorSPic wdth $ _sensorCoding (_gParams gw) M.! dt + { _mcDraw = sensorSPic wdth $ _sensorCoding (_genParams $ _gWorld gw) M.! dt , _mcUpdate = \mc -> upf mc . sensorUpdate dt mc , _mcSensor = SensorToggleAmount False 0 , _mcLSs = [lsid] diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 0cdf03c98..10e7ba138 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -33,8 +33,8 @@ import Data.Bifunctor -- to the placement placeSpot :: (GenWorld,Room) -> Placement -> ( (GenWorld,Room), [Placement] ) placeSpot (w,rm) plmnt = case plmnt of - pl@Placement{_plGenUpdate = Just f} -> let (gp,pl') = f (_gParams w) pl - in placeSpot (w & gParams .~ gp,rm) pl' + pl@Placement{_plGenUpdate = Just f} -> let (gp,pl') = f (_genParams $ _gWorld w) pl + in placeSpot (w & gWorld . genParams .~ gp,rm) pl' Placement{_plSpot = PSRoomRand i f} -> placeSpotRoomRand rm i f plmnt w Placement{_plSpot = PSPos extract eff fallback} -> placeSpotUsingLink w rm plmnt extract eff fallback Placement{} -> placePlainPSSpot w rm plmnt shift diff --git a/src/Dodge/Placement/TopDecoration.hs b/src/Dodge/Placement/TopDecoration.hs index a3efae1a1..9a68122d9 100644 --- a/src/Dodge/Placement/TopDecoration.hs +++ b/src/Dodge/Placement/TopDecoration.hs @@ -1,6 +1,7 @@ module Dodge.Placement.TopDecoration where +import Dodge.Data import Dodge.Room.Foreground -import Dodge.LevelGen.Data +--import Dodge.LevelGen.Data import Shape import Geometry import Color