24 lines
725 B
Haskell
24 lines
725 B
Haskell
{-# LANGUAGE FlexibleInstances #-}
|
|
{-# LANGUAGE RankNTypes #-}
|
|
-- | deals with placement of objects within the world
|
|
-- after they have had their coordinates set by the layout
|
|
module Dodge.LevelGen where
|
|
import Dodge.Data
|
|
import Dodge.Floor
|
|
import Dodge.Layout
|
|
import Dodge.Initialisation
|
|
import Dodge.RandomHelp
|
|
|
|
import System.Random
|
|
import Control.Lens
|
|
import Control.Monad.State
|
|
|
|
generateWorldFromSeed :: Int -> IO World
|
|
generateWorldFromSeed i = do
|
|
roomList <- layoutLevelFromSeed 0 i
|
|
return $ randomCompass $ generateLevelFromRoomList roomList
|
|
initialWorld{_randGen=mkStdGen i}
|
|
|
|
randomCompass :: World -> World
|
|
randomCompass w = w & cameraRot .~ (takeOne [0,0.5*pi,pi,1.5*pi] & evalState $ _randGen w)
|