module Dodge.LevelGen.LevelStructure ( module Dodge.LevelGen.Data, worldToGenWorld, ) where import Color import qualified Data.Map.Strict as M import Dodge.Data.GenWorld import Dodge.LevelGen.Data 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 , _genPlacements = mempty } generateGenParams :: RandomGen g => State g GenParams generateGenParams = do cols <- shuffle [RED .. ORANGE] shps <- shuffle [PLUS ..] return . GenParams . M.fromList . zip [FLAMING, LASERING, ELECTRICAL] $ zip cols shps