{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.Block where import Dodge.Data.Material import Dodge.Data.PathGraph import ShapePicture import Geometry import Control.Lens import qualified Data.IntSet as IS data Block = Block { _blID :: Int , _blWallIDs :: IS.IntSet , _blHP :: Int , _blShadows :: [Int] -- a list of blocks/walls? that are not shown when this block exists , _blFootprint :: [Point2] , _blPos :: Point2 , _blDir :: Float , _blHeight :: Float , _blMaterial :: Material , _blDraw :: Block -> SPic , _blObstructs :: [(Int,Int,PathEdge)] } makeLenses ''Block