Allow for complex room bounds for clip checks
This commit is contained in:
+8
-52
@@ -1,3 +1,5 @@
|
||||
{- |
|
||||
The tree of rooms that make up a level. -}
|
||||
module Dodge.Floor
|
||||
( levx
|
||||
) where
|
||||
@@ -33,17 +35,19 @@ import Control.Lens
|
||||
import Control.Monad.State
|
||||
import Control.Monad.Loops
|
||||
import System.Random
|
||||
|
||||
{- |
|
||||
A test level tree. -}
|
||||
roomTreex :: RandomGen g => State g (Maybe [Room])
|
||||
roomTreex = do
|
||||
struct' <- aTreeStrut
|
||||
-- let struct = treeFromPost [[SpecificRoom $ fmap (pure . Right) pistolerRoom]] [EndRoom]
|
||||
let struct = treeFromPost [[Corridor,SpecificRoom $ fmap (pure . Right) testRoom]] [EndRoom]
|
||||
let struct = treeFromPost [[Corridor,SpecificRoom $ fmap (pure . Right) randomFourCornerRoom]] [EndRoom]
|
||||
let t' = padCorridors struct
|
||||
t = treeFromTrunk
|
||||
[[StartRoom]
|
||||
,[Corridor]
|
||||
,[SpecificRoom $ (pure . pure . Right) $ airlockCrystal 20]
|
||||
,[BossAno $ addArmour launcherCrit & crHP +~ 800
|
||||
& crState . crDropsOnDeath .~ DropSpecific [0] ]
|
||||
,[Corridor]
|
||||
,[DoorAno]
|
||||
,[SpecificRoom $ fmap (pure . Right)
|
||||
@@ -55,7 +59,7 @@ roomTreex = do
|
||||
]
|
||||
,[FirstWeapon]
|
||||
,[Corridor]
|
||||
,[SpecificRoom $ fmap (pure . Right) testRoom]
|
||||
,[SpecificRoom $ fmap (pure . Right) randomFourCornerRoom]
|
||||
,[Corridor]
|
||||
,[OrAno
|
||||
[[SpecificRoom $ branchRectWith $ fmap (pure . Left) armouredChasers]
|
||||
@@ -74,51 +78,3 @@ roomTreex = do
|
||||
levx :: RandomGen g => State g [Room]
|
||||
levx = untilJust roomTreex
|
||||
|
||||
lev1' :: RandomGen g => State g (Tree Room)
|
||||
lev1' = do
|
||||
firstWeapon <- takeOne $ [[branchRectWith weaponRoom,longBlockedCorridor]] ++ replicate 5 [weaponRoom]
|
||||
iterateWhile boundClip $ fmap (shiftRoomTree . expandTreeBy id)
|
||||
$ sequence $ treeFromPost
|
||||
(
|
||||
[return $ return $ Right deadEndRoom
|
||||
]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door
|
||||
,glassSwitchBack >>= (fmap connectRoom . randomiseOutLinks)]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
++ [miniRoom3]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
++ [roomCCrits]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
++[roomMiniIntro]
|
||||
++ [longRoom >>= (fmap connectRoom . randomiseOutLinks)]
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
++ firstWeapon
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door]
|
||||
++ [(fmap connectRoom . randomiseOutLinks) =<< pistolerRoom]
|
||||
++ [return $ connectRoom door]
|
||||
++ [(fmap connectRoom . randomiseOutLinks) =<< shooterRoom]
|
||||
++ (replicate 3 $ (fmap connectRoom . randomiseOutLinks) corridor)
|
||||
++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)]
|
||||
++ [return $ connectRoom corridor]
|
||||
++ (replicate 3 $ (fmap connectRoom . randomiseOutLinks) corridor)
|
||||
++ [return $ connectRoom corridor]
|
||||
++[return $ connectRoom corridor,return $ connectRoom door]
|
||||
++ [shootingRange]
|
||||
++ (replicate 3 $ (fmap connectRoom . randomiseOutLinks) corridor)
|
||||
++[roomMiniIntro]
|
||||
++ (replicate 3 $ (fmap connectRoom . randomiseOutLinks) corridor)
|
||||
++ [return $ connectRoom corridor
|
||||
,return $ connectRoom door
|
||||
,slowDoorRoom]
|
||||
++ [return $ connectRoom corridor
|
||||
,spawnerRoom
|
||||
,return $ connectRoom corridor
|
||||
]
|
||||
)
|
||||
$ (fmap connectRoom . randomiseOutLinks) corridor
|
||||
|
||||
Reference in New Issue
Block a user