--{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.LevelGen.LevelStructure ( module Dodge.LevelGen.Data , worldToGenWorld ) where import Dodge.LevelGen.Data --import Dodge.Tree.Compose.Data import Dodge.Data import Dodge.RandomHelp import Color import LensHelp --import Data.Tree import qualified Data.IntMap.Strict as IM import qualified Data.Map.Strict as M --import Control.Lens import Control.Monad.State import System.Random worldToGenWorld :: IM.IntMap Room -> World -> World worldToGenWorld rms w = w & genParams .~ gparams & genRooms .~ rms -- , _gPlacements = IM.empty -- , _gRooms = rms where gparams = evalState generateGenParams (_randGen w) generateGenParams :: RandomGen g => State g GenParams generateGenParams = do cols <- shuffle [Red .. Orange] shps <- shuffle [PlusDecoration ..] return . GenParams . M.fromList . zip [Flaming,Lasering,Electrical] $ zip cols shps