Commit before changing links

This commit is contained in:
2021-11-11 22:51:02 +00:00
parent 8c45a02e46
commit d63c2ac943
11 changed files with 40 additions and 33 deletions
+8 -5
View File
@@ -103,22 +103,25 @@ initialRoomTree :: RandomGen g => State g (Tree Room)
initialRoomTree = do
expandTreeBy id <$> mapM annoToRoomTree initialAnoTree
layoutLevelFromSeed :: Int -> IO [Room]
layoutLevelFromSeed seed = do
layoutLevelFromSeed :: Int -> Int -> IO [Room]
layoutLevelFromSeed i seed = do
let i' = i + 1
putStrLn $ "Generating level with seed " ++ show seed
let g = mkStdGen seed
let rmtree = inorderNumberTree $ evalState initialRoomTree g
putStrLn "Seed layout: "
putStrLn "Abstract layout: "
putStrLn $ compactDrawTree $ fmap (show . snd) rmtree
mrs <- positionRooms rmtree
case mrs of
Just rs -> do
putStrLn $ "Successful generation of level with seed " ++ show seed
putStrLn $ "After " ++ show i'
++ " attempt(s), Successful generation of level with seed "
++ show seed
return (fmap setLastLinkToUsed rs)
Nothing -> do
putStr $ "Level generation with seed " ++ show seed ++ " failed: "
let (seed',_) = random g
layoutLevelFromSeed seed'
layoutLevelFromSeed i' seed'
where
setLastLinkToUsed rm = case _rmLinks rm of
(_:_) -> rm