{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Imj.Game.Hamazed.World.Space.Types
( Space(..)
, Material(..)
, RandomParameters(..)
, Strategy(..)
, RenderGroup(..)
, Boundaries(..)
, module Imj.Geo.Discrete.Types
) where
import Imj.Prelude
import Data.Matrix( Matrix )
import Foreign.C.Types( CInt(..) )
import Imj.Geo.Discrete.Types
import Imj.Graphics.Color.Types
data Strategy = StrictlyOneComponent
data RandomParameters = RandomParameters {
_randomWallsBlockSize :: !Int
, _randomWallsStrategy :: !Strategy
}
data RenderGroup = RenderGroup {
_renderGroupCoords :: !(Coords Pos)
, _renderGroupColors :: !LayeredColor
, _renderGroupChar :: !Char
, _renderGroupCount :: !Int
}
data Space = Space {
_space :: !(Matrix CInt)
, _spaceSize :: !Size
, _spaceRender :: ![RenderGroup]
}
data Material = Air
| Wall
deriving(Eq, Show)
data Boundaries = WorldFrame
| TerminalWindow
| Both
deriving(Show)