Improve diagnostics for level generation
This commit is contained in:
@@ -11,14 +11,11 @@ import Dodge.WorldEvent.Cloud
|
||||
import Dodge.SoundLogic
|
||||
import Dodge.SoundLogic.LoadSound
|
||||
import Geometry.Data
|
||||
import Dodge.Room.Data
|
||||
|
||||
import System.Random
|
||||
import System.Timeout
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
import qualified Data.Map as M
|
||||
import Control.Monad.State
|
||||
|
||||
firstWorld :: IO World
|
||||
firstWorld = do
|
||||
@@ -28,18 +25,9 @@ firstWorld = do
|
||||
-- let g = mkStdGen i
|
||||
-- (roomList,n) <- f g
|
||||
-- putStrLn $ "Had to go through "++ show n ++ " random generators"
|
||||
roomList <- layoutLevel i
|
||||
return $ generateLevelFromRoomList roomList $ initialWorld -- note this uses a random generator defined elsewhere
|
||||
where
|
||||
f :: StdGen -> IO ([Room],Int)
|
||||
f g = do
|
||||
mayrs <- timeout 10000000 . return $ evalState (levx 1) g
|
||||
case mayrs of
|
||||
Nothing -> do
|
||||
let i = fst $ random g
|
||||
putStrLn $ "Timeout; trying new seed: " ++ show i
|
||||
f (mkStdGen i)
|
||||
Just rs -> return rs
|
||||
roomList <- layoutLevelFromSeed i
|
||||
return $ generateLevelFromRoomList roomList
|
||||
$ initialWorld -- note this uses a random generator defined elsewhere
|
||||
|
||||
initialWorld :: World
|
||||
initialWorld = defaultWorld
|
||||
|
||||
Reference in New Issue
Block a user