35 lines
965 B
Haskell
35 lines
965 B
Haskell
--{-# 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
|