{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Room.Data where import Dodge.LevelGen.Data import Geometry import Control.Lens {- The '_rmPolys' list states which polygons should be cut out to form the indestructible walls of the room. Link pairs contain a position and rotation to attach to another room; 0 is for links going to another room to the north, pi/2 for links going to a room to the west, etc. TODO : Explain path, does it need both directions? Placement spots allow things to be put in the room during level generation. Room bounds between a new room and previously placed rooms are checked during level generation, assigning no bounds will allow rooms to overlap. -} data Room = Room { _rmPolys :: [ [Point2] ] , _rmLinks :: [(Point2,Float)] , _rmPath :: [(Point2, Point2)] , _rmPS :: [PlacementSpot] , _rmBound :: [Point2] } makeLenses ''Room