From 2db4e9bc6e1afc94147374b6e57433066471a80e Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 27 Mar 2026 11:55:52 +0000 Subject: [PATCH] Add variations to slowCrushRoom --- src/Dodge/Room/LongDoor.hs | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 1cfa0b7a9..05d59ab5a 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -3,7 +3,6 @@ -- | Rooms containing long doors, probably with a big reveal behind them. module Dodge.Room.LongDoor where -import Dodge.Base.CardinalPoint import Dodge.Room.Modify import qualified Data.IntMap.Strict as IM import Dodge.Default @@ -144,36 +143,41 @@ makeDumbSwitch i = defaultButton & btEvent .~ ButtonDumbSwitch i slowCrushRoom :: RandomGen g => State g Room slowCrushRoom = do - rm <- shuffleLinks =<< roomRectAutoLights 200 100 + rm <- shuffleLinks =<< roomRectAutoLights 220 100 let rm' = removeLights rm & rmPmnts .~ [spanLightI (V2 0 60) (V2 35 100) - , spanLightI (V2 200 60) (V2 165 100) + , spanLightI (V2 220 60) (V2 185 100) ] return $ rm' - & rmLinks %~ setOutLinks (\rl -> blcorner $ rl ^. rlType) - & rmLinks %~ setInLinksByType (OnEdge West) + & rmBound .:~ rectNSWE 0 (-50) 0 220 + & rmLinks %~ setOutLinks (\rl -> onside East $ rl ^. rlType) + & rmLinks %~ setInLinks (\rl -> onside West $ rl ^. rlType) & rmPmnts .:~ (ps0 (PutTrigger False) $ \i -> Just $ - pContID (apos West 5) (PutButton $ makeDumbSwitch i) $ \_ -> Just $ - pContID (apos East (-5)) (PutButton $ makeDumbSwitch i) $ \_ -> Just $ + pContID (apos West) (PutButton $ makeDumbSwitch i) $ \_ -> Just $ + pContID (apos East) (PutButton $ makeDumbSwitch i) $ \_ -> Just $ sps0 (PutDoor (dr & drTrigger .~ WdTrig i) defaultDoorWall) & plIDCont . mapped . mapped ?~ sps0 (PutDoor (dr1 & drTrigger .~ WdTrig i) defaultDoorWall) ) where - blcorner s = (OnEdge East `S.member` s && FromEdge South 0 `S.member` s) - || (OnEdge South `S.member` s && FromEdge East 0 `S.member` s) + onside x s = (OnEdge x `S.member` s) + || (OnEdge South `S.member` s && FromEdge x 0 `S.member` s) + || (OnEdge North `S.member` s && FromEdge x 0 `S.member` s) dr = defaultDoor & drUpdate .~ DoorLerp 0.01 - & drZeroPos .~ (V2 65 (-40), 0) - & drOnePos .~ (V2 65 50, 0) - & drFootPrint .~ IM.fromDistinctAscList (zip [0..] (loopPairs . reverse $ rectWH 35 50)) + & drZeroPos .~ (V2 75 (-40), 0) + & drOnePos .~ (V2 75 50, 0) + & drFootPrint .~ IM.fromDistinctAscList (zip [0..] (loopPairs . reverse $ rectWH 34 50)) dr1 = dr - & drOnePos .~ (V2 135 (-40), 0) - & drZeroPos .~ (V2 135 50, 0) - apos edge x = (rprBool (t edge) & psSelect . mapped . mapped . _Just . _1 %~ (psRot +~ pi) . (psPos +~ V2 x 0)) + & drOnePos .~ (V2 145 (-40), 0) + & drZeroPos .~ (V2 145 50, 0) + apos edge = (rprBool (t edge) & psSelect . mapped . mapped . _Just . _1 %~ f) + f ps = case ps of + PS _ r -> ps & psRot +~ pi & psPos +~ rotateV r (V2 0 (-5)) + _ -> ps t edge rp _ = case _rpType rp of - UnusedLink s -> OnEdge edge `S.member` s + UnusedLink s -> onside edge s _ -> False slowCrushRoom' :: RandomGen g => State g Room @@ -203,7 +207,7 @@ slowCrushRoom' = do dr1 = dr & drOnePos .~ (V2 135 (-40), 0) & drZeroPos .~ (V2 135 50, 0) - apos edge x = (rprBool (t edge) & psSelect . mapped . mapped . _Just . _1 %~ (psRot +~ pi) . (psPos +~ 5 *^ cardVec edge)) + apos edge x = (rprBool (t edge) & psSelect . mapped . mapped . _Just . _1 %~ (psRot +~ pi) . (psPos +~ V2 x 0)) t edge rp _ = case _rpType rp of UnusedLink s -> OnEdge edge `S.member` s _ -> False