{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Room.Data
    ( Room (..)
    , rmPolys
    , rmLinks
    , rmPath
    , rmPS
    , rmBound
    , rmFloor
    , rmName
    ) where
import Dodge.LevelGen.Data
--import Geometry
import Geometry.Data
import Data.Tile

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     :: [Placement]
    , _rmBound  :: [ [Point2] ]
    , _rmFloor  :: [Tile]
    , _rmName   :: String
    }
makeLenses ''Room
