32 lines
828 B
Haskell
32 lines
828 B
Haskell
module Dodge.LevelGen.LevelStructure (
|
|
module Dodge.LevelGen.PlacementHelper,
|
|
worldToGenWorld,
|
|
) where
|
|
|
|
import Color
|
|
import qualified Data.Map.Strict as M
|
|
import Dodge.Data.GenWorld
|
|
import Dodge.LevelGen.PlacementHelper
|
|
import qualified IntMapHelp as IM
|
|
import LensHelp
|
|
import RandomHelp
|
|
|
|
worldToGenWorld :: IM.IntMap Room -> World -> GenWorld
|
|
worldToGenWorld rms w =
|
|
GenWorld
|
|
{ _gwWorld = w & cWorld . cwGen . cwgParams .~ evalState generateGenParams (_randGen w)
|
|
, _genRooms = rms
|
|
, _genPmnt = mempty
|
|
, _genInts = mempty
|
|
}
|
|
|
|
generateGenParams :: RandomGen g => State g GenParams
|
|
generateGenParams = do
|
|
cols <- shuffle [RED .. ORANGE]
|
|
shps <- shuffle [PLUS ..]
|
|
return
|
|
. GenParams
|
|
. M.fromList
|
|
. zip [LaserSensor ..]
|
|
$ zip cols shps
|