Broken level generation with error message on run
This commit is contained in:
+37
-37
@@ -33,44 +33,44 @@ lev1 = do
|
|||||||
(
|
(
|
||||||
[return $ return $ Right deadEndRoom
|
[return $ return $ Right deadEndRoom
|
||||||
]
|
]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door
|
,return $ connectRoom door
|
||||||
-- ,glassSwitchBack >>= randomiseLinks]
|
,glassSwitchBack >>= randomiseLinks]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door]
|
,return $ connectRoom door]
|
||||||
-- ++ [miniRoom3]
|
++ [miniRoom3]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door]
|
,return $ connectRoom door]
|
||||||
-- ++ [roomCCrits]
|
++ [roomCCrits]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door]
|
,return $ connectRoom door]
|
||||||
-- ++[roomMiniIntro]
|
++[roomMiniIntro]
|
||||||
-- ++ [longRoom >>= randomiseLinks]
|
++ [longRoom >>= randomiseLinks]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door]
|
,return $ connectRoom door]
|
||||||
++ firstWeapon
|
++ firstWeapon
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door]
|
,return $ connectRoom door]
|
||||||
-- ++ [randomiseLinks =<< pistolerRoom]
|
++ [randomiseLinks =<< pistolerRoom]
|
||||||
-- ++ [return $ connectRoom door]
|
++ [return $ connectRoom door]
|
||||||
-- ++ [randomiseLinks =<< shooterRoom]
|
++ [randomiseLinks =<< shooterRoom]
|
||||||
-- ++ (replicate 3 $ randomiseLinks corridor)
|
++ (replicate 3 $ randomiseLinks corridor)
|
||||||
-- ++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)]
|
++ [return $ connectRoom (set rmPS [PS (20,40) 0 basicLS] corridor)]
|
||||||
-- ++ [return $ connectRoom corridor]
|
++ [return $ connectRoom corridor]
|
||||||
-- ++ (replicate 3 $ randomiseLinks corridor)
|
++ (replicate 3 $ randomiseLinks corridor)
|
||||||
-- ++ [return $ connectRoom corridor]
|
++ [return $ connectRoom corridor]
|
||||||
-- ++[return $ connectRoom corridor,return $ connectRoom door]
|
++[return $ connectRoom corridor,return $ connectRoom door]
|
||||||
-- ++ [shootingRange]
|
++ [shootingRange]
|
||||||
-- ++ (replicate 3 $ randomiseLinks corridor)
|
++ (replicate 3 $ randomiseLinks corridor)
|
||||||
-- ++[roomMiniIntro]
|
++[roomMiniIntro]
|
||||||
-- ++ (replicate 3 $ randomiseLinks corridor)
|
++ (replicate 3 $ randomiseLinks corridor)
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,return $ connectRoom door
|
,return $ connectRoom door
|
||||||
-- ,slowDoorRoom]
|
,slowDoorRoom]
|
||||||
-- ++ [return $ connectRoom corridor
|
++ [return $ connectRoom corridor
|
||||||
-- ,spawnerRoom
|
,spawnerRoom
|
||||||
-- ,return $ connectRoom corridor
|
,return $ connectRoom corridor
|
||||||
-- ]
|
]
|
||||||
)
|
)
|
||||||
$ randomiseLinks corridor
|
$ randomiseLinks corridor
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,16 @@ import qualified Data.Set as S
|
|||||||
-- ie returns a new set of walls with a hole determined by anticlockwise ordering of the points
|
-- ie returns a new set of walls with a hole determined by anticlockwise ordering of the points
|
||||||
cutWalls' :: [Point2] -> IM.IntMap Wall -> IM.IntMap Wall
|
cutWalls' :: [Point2] -> IM.IntMap Wall -> IM.IntMap Wall
|
||||||
cutWalls' qs walls =
|
cutWalls' qs walls =
|
||||||
IM.filter (not.wallIsZeroLength)
|
nubWalls
|
||||||
. fuseWallsWith zs
|
|
||||||
.createPolyWalls rs
|
|
||||||
. IM.filter (not.wallIsZeroLength)
|
. IM.filter (not.wallIsZeroLength)
|
||||||
. removeWallsInPolygon ps
|
. fuseWallsWith zs
|
||||||
$ fuseWallsWith zs cwals
|
. createPolyWalls rs
|
||||||
|
. IM.filter (not.wallIsZeroLength)
|
||||||
|
-- . removeWallsInPolygon ps
|
||||||
|
-- $ fuseWallsWith zs cwals
|
||||||
|
. fuseWallsWith zs
|
||||||
|
$ removeWallsInPolygon ps
|
||||||
|
cwals
|
||||||
where
|
where
|
||||||
(zs,cwals) = cutWallsWithPoints ps walls
|
(zs,cwals) = cutWallsWithPoints ps walls
|
||||||
ps = orderPolygon qs
|
ps = orderPolygon qs
|
||||||
@@ -38,6 +42,7 @@ cutWalls' qs walls =
|
|||||||
-- also remove any walls that ended up zero length
|
-- also remove any walls that ended up zero length
|
||||||
-- draw the required new walls along the polygon boundary
|
-- draw the required new walls along the polygon boundary
|
||||||
|
|
||||||
|
-- the following checks one of the corners of cut walls at each step
|
||||||
cutWalls :: [Point2] -> IM.IntMap Wall -> IM.IntMap Wall
|
cutWalls :: [Point2] -> IM.IntMap Wall -> IM.IntMap Wall
|
||||||
cutWalls ps wls = case mapMaybe (flip checkWallRight newWalls) newWallsList of
|
cutWalls ps wls = case mapMaybe (flip checkWallRight newWalls) newWallsList of
|
||||||
[] -> newWalls
|
[] -> newWalls
|
||||||
|
|||||||
Reference in New Issue
Block a user