Make chasms remove RoomPos within their boundaries
This commit is contained in:
+14
-8
@@ -1,5 +1,6 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Dodge.Data.Room (
|
||||
module Dodge.Data.Room,
|
||||
@@ -14,8 +15,8 @@ import Geometry
|
||||
data RoomPos = RoomPos
|
||||
{ _rpPos :: Point2
|
||||
, _rpDir :: Float
|
||||
, _rpType :: S.Set RoomPosType
|
||||
, _rpLinkStatus :: RPLinkStatus
|
||||
, _rpFlags :: S.Set RoomPosFlag
|
||||
, _rpType :: RPLinkStatus
|
||||
, _rpPlacementUse :: S.Set UsedPos
|
||||
}
|
||||
deriving (Eq, Ord, Show)
|
||||
@@ -53,6 +54,7 @@ data RoomWire
|
||||
= --RoomWire Point2 Float
|
||||
WallWire Point2 Float Float
|
||||
|
||||
-- the link constructors should probably be combined in some way
|
||||
data RPLinkStatus
|
||||
= UsedOutLink
|
||||
{ _rplsType :: S.Set RoomLinkType
|
||||
@@ -64,16 +66,20 @@ data RPLinkStatus
|
||||
, _rplsInRoomID :: Int
|
||||
}
|
||||
| UnusedLink {_rplsType :: S.Set RoomLinkType}
|
||||
| PathNodeRP
|
||||
| NotLink
|
||||
| NotLink {_rpOnPath :: Bool}
|
||||
deriving (Eq, Ord, Show)
|
||||
|
||||
notLink :: RPLinkStatus -> Bool
|
||||
notLink = \case
|
||||
NotLink {} -> True
|
||||
_ -> False
|
||||
|
||||
data PathFromEdge = PathFromEdge CardinalPoint Int
|
||||
deriving (Eq, Ord, Show)
|
||||
|
||||
data RoomPosType
|
||||
= RoomPosOnGrid {_onPathFromEdges :: S.Set PathFromEdge}
|
||||
| RoomPosOffGrid {_offPathFromEdges :: S.Set PathFromEdge}
|
||||
data RoomPosFlag
|
||||
= RoomPosOnGrid {_onGridFromEdges :: S.Set PathFromEdge}
|
||||
| RoomPosOffGrid {_offGridFromEdges :: S.Set PathFromEdge}
|
||||
deriving (Eq, Ord, Show)
|
||||
|
||||
data UsedPos
|
||||
@@ -85,5 +91,5 @@ data UsedPos
|
||||
|
||||
makeLenses ''RoomLink
|
||||
makeLenses ''RoomPos
|
||||
makeLenses ''RoomPosType
|
||||
makeLenses ''RoomPosFlag
|
||||
makeLenses ''RPLinkStatus
|
||||
|
||||
Reference in New Issue
Block a user