Commit before changing links
This commit is contained in:
+8
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user