Fix bug determining max radius of convex polys, fixes bugs in room positioning

This commit is contained in:
2022-03-21 07:43:27 +00:00
parent 2a5b6d3597
commit d6285c45b3
12 changed files with 80 additions and 32 deletions
+9 -7
View File
@@ -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