Improve diagnostics for level generation
This commit is contained in:
+5
-9
@@ -2,8 +2,7 @@
|
||||
{- |
|
||||
The tree of rooms that make up a level. -}
|
||||
module Dodge.Floor
|
||||
( levx
|
||||
, layoutLevel
|
||||
( layoutLevelFromSeed
|
||||
) where
|
||||
import Geometry.Data
|
||||
import Dodge.Data
|
||||
@@ -104,21 +103,18 @@ initialRoomTree :: RandomGen g => State g (Tree Room)
|
||||
initialRoomTree = do
|
||||
expandTreeBy id <$> mapM annoToRoomTree initialAnoTree
|
||||
|
||||
levx :: RandomGen g => Int -> State g ([Room] , Int)
|
||||
levx _ = untilJustCount $ shiftExpandTree <$> initialRoomTree
|
||||
|
||||
layoutLevel :: Int -> IO [Room]
|
||||
layoutLevel seed = do
|
||||
layoutLevelFromSeed :: Int -> IO [Room]
|
||||
layoutLevelFromSeed seed = do
|
||||
putStrLn $ "Generating level with seed: " ++ show seed
|
||||
let g = mkStdGen seed
|
||||
let rmtree = evalState initialRoomTree g
|
||||
mrs <- shiftRoomSearchIO [] (singleton rmtree)
|
||||
mrs <- positionRooms rmtree
|
||||
case mrs of
|
||||
Just rs -> return (fmap setLastLinkToUsed rs)
|
||||
Nothing -> do
|
||||
putStrLn "Level generation failed"
|
||||
let (seed',_) = random g
|
||||
layoutLevel seed'
|
||||
layoutLevelFromSeed seed'
|
||||
where
|
||||
setLastLinkToUsed rm = case _rmLinks rm of
|
||||
(_:_) -> rm
|
||||
|
||||
Reference in New Issue
Block a user