Fix bug determining max radius of convex polys, fixes bugs in room positioning
This commit is contained in:
@@ -9,21 +9,23 @@ import Dodge.Initialisation
|
||||
--import Dodge.RandomHelp
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Tree
|
||||
import Geometry.ConvexPoly
|
||||
--import Dodge.LevelGen.LevelStructure
|
||||
|
||||
import Data.Tree
|
||||
import System.Random
|
||||
--import Control.Lens
|
||||
import Control.Lens
|
||||
import Control.Monad.State
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
|
||||
generateWorldFromSeed :: Int -> IO World
|
||||
generateWorldFromSeed i = do
|
||||
roomList <- layoutLevelFromSeed 0 i
|
||||
return $ saveLevelStartSlot $ _gWorld $ generateLevelFromRoomList roomList
|
||||
initialWorld{_randGen=mkStdGen i}
|
||||
(roomList,bounds) <- layoutLevelFromSeed 0 i
|
||||
return $ saveLevelStartSlot $ (_gWorld $ generateLevelFromRoomList roomList
|
||||
initialWorld{_randGen=mkStdGen i})
|
||||
& roomClipping .~ bounds
|
||||
|
||||
layoutLevelFromSeed :: Int -> Int -> IO (IM.IntMap Room)
|
||||
layoutLevelFromSeed :: Int -> Int -> IO (IM.IntMap Room,[ConvexPoly])
|
||||
layoutLevelFromSeed i seed = do
|
||||
let i' = i + 1
|
||||
putStrLn $ "Generating level with seed " ++ show seed
|
||||
@@ -36,13 +38,13 @@ layoutLevelFromSeed i seed = do
|
||||
putStrLn "Layout with room names written to aGeneratedRoomLayout"
|
||||
mrs <- positionRoomsFromTree rmtree
|
||||
case mrs of
|
||||
Just rs -> do
|
||||
Just (PosRooms bounds rs) -> do
|
||||
putStrLn $ "After " ++ show i'
|
||||
++ " attempt(s), Successful generation of level with seed "
|
||||
++ show seed
|
||||
--return (fmap setLastLinkToUsed rs)
|
||||
putStrLn $ show (Prelude.length rs) ++ " rooms in total"
|
||||
return . IM.fromList $ map reversePair rs
|
||||
return (IM.fromList $ map reversePair rs , bounds)
|
||||
Nothing -> do
|
||||
putStr $ "Level generation with seed " ++ show seed ++ " failed: "
|
||||
let (seed',_) = random g
|
||||
|
||||
Reference in New Issue
Block a user