Remove requirement for external door ids
This commit is contained in:
+2
-2
@@ -70,8 +70,8 @@ initialRoomTree = do
|
||||
---- ]
|
||||
---- ,[Corridor]
|
||||
---- ,[Corridor]
|
||||
-- --,[SpecificRoom $ pure . Right <$> twinSlowDoorChasers 30]
|
||||
,[SpecificRoom $ pure $ (pure . Right) (twinSlowDoorRoom 30 80 200 40)]
|
||||
-- --,[SpecificRoom $ pure . Right <$> twinSlowDoorChasers]
|
||||
,[SpecificRoom $ pure $ (pure . Right) (twinSlowDoorRoom 80 200 40)]
|
||||
,[Corridor]
|
||||
,[DoorAno]
|
||||
,[SpecificRoom $ pure . Right <$> centerVaultExplosiveExit 50]
|
||||
|
||||
@@ -6,5 +6,8 @@ import Dodge.LevelGen.Data
|
||||
jsps0 :: PSType -> Maybe Placement
|
||||
jsps0 pst = Just $ sPS (V2 0 0) 0 pst
|
||||
|
||||
jspsJ :: PSType -> Placement -> Maybe Placement
|
||||
jspsJ pst plm = Just $ Placement (PS (V2 0 0) 0 pst) $ \_ -> Just plm
|
||||
|
||||
place0 :: PSType -> (Int -> Maybe Placement) -> Placement
|
||||
place0 pst = Placement (PS (V2 0 0) 0 pst)
|
||||
|
||||
+10
-14
@@ -24,16 +24,14 @@ import System.Random
|
||||
import Control.Lens
|
||||
import Control.Monad.State
|
||||
import Data.Tree
|
||||
import qualified Data.Map as M
|
||||
import qualified Data.IntMap as IM
|
||||
|
||||
twinSlowDoorRoom
|
||||
:: Int -- ^ Door id
|
||||
-> Float -- ^ Half width
|
||||
:: Float -- ^ Half width
|
||||
-> Float -- ^ Half height
|
||||
-> Float -- ^ Inner width
|
||||
-> Room
|
||||
twinSlowDoorRoom drid w h x = defaultRoom
|
||||
twinSlowDoorRoom w h x = defaultRoom
|
||||
{ _rmPolys = ps
|
||||
, _rmLinks =
|
||||
[ (V2 w (h/2) , negate $ pi/2)
|
||||
@@ -42,11 +40,9 @@ twinSlowDoorRoom drid w h x = defaultRoom
|
||||
]
|
||||
, _rmPath = []
|
||||
, _rmPS =
|
||||
[ sPS (V2 0 0) 0 $ PutSingleDoor col cond (V2 x 1) (V2 x h) 1
|
||||
, sPS (V2 0 (h-5)) pi $ PutButton $ makeSwitch col red
|
||||
(worldState %~ M.insert (DoorNumOpen drid) True )
|
||||
(worldState %~ M.insert (DoorNumOpen drid) False)
|
||||
, place0 (PutSingleDoor col cond (V2 (-x) 1) (V2 (-x) h) 1)
|
||||
[ Placement (PS (V2 0 (h-5)) pi $ PutButton $ makeSwitch col red id id)
|
||||
$ \btid -> jspsJ (PutSingleDoor col (cond' btid) (V2 x 1) (V2 x h) wlSpeed)
|
||||
$ place0 (PutSingleDoor col (cond' btid) (V2 (-x) 1) (V2 (-x) h) wlSpeed)
|
||||
$ \did -> Just $ place0 (PutLS (colorLightAt (V3 0.75 0 0) (V3 0 (h-1) lampHeight) 0))
|
||||
$ \lsid -> jsps0 $ PutProp $ addColorChange lsid did $ lampCoverWhen (drmoving did) (V2 0 (h-1)) lampHeight
|
||||
]
|
||||
@@ -54,6 +50,7 @@ twinSlowDoorRoom drid w h x = defaultRoom
|
||||
, _rmName = "twinSlowDoorRoom"
|
||||
}
|
||||
where
|
||||
wlSpeed = 0.5
|
||||
addColorChange lsid drid' = over pjUpdate $ chain $ const f
|
||||
where
|
||||
f w' | _drStatus (_doors w' IM.! drid') == DoorHalfway
|
||||
@@ -65,19 +62,18 @@ twinSlowDoorRoom drid w h x = defaultRoom
|
||||
[rectNSWE h 0 (-w) w
|
||||
,rectNSWE 20 (-h) (negate x) x
|
||||
]
|
||||
cond w' = or $ M.lookup (DoorNumOpen drid) (_worldState w')
|
||||
cond' btid w' = (_btState $ _buttons w' IM.! btid) == BtOn
|
||||
col = dim $ dim $ bright red
|
||||
|
||||
twinSlowDoorChasers
|
||||
:: RandomGen g
|
||||
=> Int -- ^ Door id
|
||||
-> State g Room
|
||||
twinSlowDoorChasers drid = do
|
||||
=> State g Room
|
||||
twinSlowDoorChasers = do
|
||||
let lps = V2 (-65) <$> [20,40 .. 180]
|
||||
rps = V2 65 <$> [20,40 .. 180]
|
||||
ps <- takeN 4 $ lps ++ rps
|
||||
let plmnts = map (\p -> sPS p 0 $ PutCrit chaseCrit) ps
|
||||
return $ twinSlowDoorRoom drid 80 200 40 & rmPS %~ (plmnts ++)
|
||||
return $ twinSlowDoorRoom 80 200 40 & rmPS %~ (plmnts ++)
|
||||
|
||||
slowDoorRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||
slowDoorRoom = do
|
||||
|
||||
Reference in New Issue
Block a user