From b526517404c973c1238ab2451457164865442ad8 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 3 Oct 2021 18:24:36 +0100 Subject: [PATCH] Fix placement shifting --- src/Dodge/Floor.hs | 20 ++++++++++---------- src/Dodge/LevelGen.hs | 4 ++++ src/Dodge/Room/Procedural.hs | 4 +++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 3b2bda78f..a811b47b1 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -71,16 +71,16 @@ initialRoomTree = do ---- ,[Corridor] ---- ,[Corridor] -- --,[SpecificRoom $ pure . Right <$> twinSlowDoorChasers] - ,[SpecificRoom $ pure $ (pure . Right) (twinSlowDoorRoom 80 200 40)] - ,[Corridor] - ,[DoorAno] - ,[SpecificRoom $ pure . Right <$> centerVaultExplosiveExit] - ,[SpecificRoom blockedCorridor] - ,[OrAno [[DoorAno] - ,[Corridor] - ,[DoorNumAno 0,AirlockAno]] - ] - ,[FirstWeapon] +--- ,[SpecificRoom $ pure $ (pure . Right) (twinSlowDoorRoom 80 200 40)] +--- ,[Corridor] +--- ,[DoorAno] +--- ,[SpecificRoom $ pure . Right <$> centerVaultExplosiveExit] +--- ,[SpecificRoom blockedCorridor] +--- ,[OrAno [[DoorAno] +--- ,[Corridor] +--- ,[DoorNumAno 0,AirlockAno]] +--- ] +--- ,[FirstWeapon] ,[CorridorDebug] ,[SpecificRoom $ fmap (pure . Right) randomFourCornerRoom] ,[Corridor] diff --git a/src/Dodge/LevelGen.hs b/src/Dodge/LevelGen.hs index faadb804f..b20c5ca1e 100644 --- a/src/Dodge/LevelGen.hs +++ b/src/Dodge/LevelGen.hs @@ -30,6 +30,10 @@ placeSpot' w (shift, plmnt) = let (i,w') = placeSpotID (shiftPSBy' shift (_placementSpot plmnt)) w in maybe w' (curry (placeSpot' w') shift) (_idPlacement plmnt i) +shiftPlacement :: (Point2,Float) -> Placement -> Placement +shiftPlacement shift (Placement ps f) = Placement (shiftPSBy' shift ps) + (fmap (fmap $ shiftPlacement shift) f) + shiftPSBy' :: (Point2,Float) -> PlacementSpot diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index 291d74e2f..181d19baf 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -87,9 +87,11 @@ combineRooms r r' = defaultRoom { _rmPolys = _rmPolys r ++ _rmPolys r' , _rmLinks = _rmLinks r ++ _rmLinks r' , _rmPath = _rmPath r ++ _rmPath r' - , _rmPS = _rmPS r ++ _rmPS r' + , _rmPS = map (shiftPlacement $ _rmShift r) (_rmPS r) + ++ map (shiftPlacement $ _rmShift r') (_rmPS r') , _rmBound = _rmBound r ++ _rmBound r' , _rmFloor = _rmFloor r ++ _rmFloor r' + , _rmShift = (V2 0 0 , 0) } --{- The top fourth of a room of a given height. -} --fourth