Add variations to slowCrushRoom
This commit is contained in:
+21
-17
@@ -3,7 +3,6 @@
|
|||||||
-- | Rooms containing long doors, probably with a big reveal behind them.
|
-- | Rooms containing long doors, probably with a big reveal behind them.
|
||||||
module Dodge.Room.LongDoor where
|
module Dodge.Room.LongDoor where
|
||||||
|
|
||||||
import Dodge.Base.CardinalPoint
|
|
||||||
import Dodge.Room.Modify
|
import Dodge.Room.Modify
|
||||||
import qualified Data.IntMap.Strict as IM
|
import qualified Data.IntMap.Strict as IM
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
@@ -144,36 +143,41 @@ makeDumbSwitch i = defaultButton & btEvent .~ ButtonDumbSwitch i
|
|||||||
|
|
||||||
slowCrushRoom :: RandomGen g => State g Room
|
slowCrushRoom :: RandomGen g => State g Room
|
||||||
slowCrushRoom = do
|
slowCrushRoom = do
|
||||||
rm <- shuffleLinks =<< roomRectAutoLights 200 100
|
rm <- shuffleLinks =<< roomRectAutoLights 220 100
|
||||||
let rm' = removeLights rm
|
let rm' = removeLights rm
|
||||||
& rmPmnts .~ [spanLightI (V2 0 60) (V2 35 100)
|
& rmPmnts .~ [spanLightI (V2 0 60) (V2 35 100)
|
||||||
, spanLightI (V2 200 60) (V2 165 100)
|
, spanLightI (V2 220 60) (V2 185 100)
|
||||||
]
|
]
|
||||||
return $ rm'
|
return $ rm'
|
||||||
& rmLinks %~ setOutLinks (\rl -> blcorner $ rl ^. rlType)
|
& rmBound .:~ rectNSWE 0 (-50) 0 220
|
||||||
& rmLinks %~ setInLinksByType (OnEdge West)
|
& rmLinks %~ setOutLinks (\rl -> onside East $ rl ^. rlType)
|
||||||
|
& rmLinks %~ setInLinks (\rl -> onside West $ rl ^. rlType)
|
||||||
& rmPmnts .:~
|
& rmPmnts .:~
|
||||||
(ps0 (PutTrigger False) $ \i -> Just $
|
(ps0 (PutTrigger False) $ \i -> Just $
|
||||||
pContID (apos West 5) (PutButton $ makeDumbSwitch i) $ \_ -> Just $
|
pContID (apos West) (PutButton $ makeDumbSwitch i) $ \_ -> Just $
|
||||||
pContID (apos East (-5)) (PutButton $ makeDumbSwitch i) $ \_ -> Just $
|
pContID (apos East) (PutButton $ makeDumbSwitch i) $ \_ -> Just $
|
||||||
sps0 (PutDoor (dr & drTrigger .~ WdTrig i) defaultDoorWall) & plIDCont . mapped . mapped ?~
|
sps0 (PutDoor (dr & drTrigger .~ WdTrig i) defaultDoorWall) & plIDCont . mapped . mapped ?~
|
||||||
sps0 (PutDoor (dr1 & drTrigger .~ WdTrig i) defaultDoorWall)
|
sps0 (PutDoor (dr1 & drTrigger .~ WdTrig i) defaultDoorWall)
|
||||||
)
|
)
|
||||||
|
|
||||||
where
|
where
|
||||||
blcorner s = (OnEdge East `S.member` s && FromEdge South 0 `S.member` s)
|
onside x s = (OnEdge x `S.member` s)
|
||||||
|| (OnEdge South `S.member` s && FromEdge East 0 `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
|
dr = defaultDoor
|
||||||
& drUpdate .~ DoorLerp 0.01
|
& drUpdate .~ DoorLerp 0.01
|
||||||
& drZeroPos .~ (V2 65 (-40), 0)
|
& drZeroPos .~ (V2 75 (-40), 0)
|
||||||
& drOnePos .~ (V2 65 50, 0)
|
& drOnePos .~ (V2 75 50, 0)
|
||||||
& drFootPrint .~ IM.fromDistinctAscList (zip [0..] (loopPairs . reverse $ rectWH 35 50))
|
& drFootPrint .~ IM.fromDistinctAscList (zip [0..] (loopPairs . reverse $ rectWH 34 50))
|
||||||
dr1 = dr
|
dr1 = dr
|
||||||
& drOnePos .~ (V2 135 (-40), 0)
|
& drOnePos .~ (V2 145 (-40), 0)
|
||||||
& drZeroPos .~ (V2 135 50, 0)
|
& drZeroPos .~ (V2 145 50, 0)
|
||||||
apos edge x = (rprBool (t edge) & psSelect . mapped . mapped . _Just . _1 %~ (psRot +~ pi) . (psPos +~ V2 x 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
|
t edge rp _ = case _rpType rp of
|
||||||
UnusedLink s -> OnEdge edge `S.member` s
|
UnusedLink s -> onside edge s
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|
||||||
slowCrushRoom' :: RandomGen g => State g Room
|
slowCrushRoom' :: RandomGen g => State g Room
|
||||||
@@ -203,7 +207,7 @@ slowCrushRoom' = do
|
|||||||
dr1 = dr
|
dr1 = dr
|
||||||
& drOnePos .~ (V2 135 (-40), 0)
|
& drOnePos .~ (V2 135 (-40), 0)
|
||||||
& drZeroPos .~ (V2 135 50, 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
|
t edge rp _ = case _rpType rp of
|
||||||
UnusedLink s -> OnEdge edge `S.member` s
|
UnusedLink s -> OnEdge edge `S.member` s
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|||||||
Reference in New Issue
Block a user