27 lines
916 B
Haskell
27 lines
916 B
Haskell
{-# 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 :: [Placement]
|
|
, _rmBound :: [ [Point2] ]
|
|
}
|
|
makeLenses ''Room
|