Start unifying door placement types

This commit is contained in:
2025-10-24 22:13:30 +01:00
parent 6457f00ba7
commit b6736e2735
7 changed files with 118 additions and 103 deletions
+17 -2
View File
@@ -3,6 +3,9 @@
{- Rooms that contain two doors and a switch alternating both. -}
module Dodge.Room.Airlock where
import Dodge.LevelGen.DoorPane
import Dodge.Default.Door
import qualified Data.IntMap.Strict as IM
import Dodge.Default.Wall
import Dodge.Room.Path
import Control.Lens
@@ -107,8 +110,20 @@ airlockDoubleDoor ::
Point2A ->
Maybe Placement
airlockDoubleDoor p1 p2 cond l1 x1 y1 l2 x2 y2 =
jspsJ p1 0 (PutDoor cond l1 x1 y1) $
sPS p2 0 (PutDoor cond l2 x2 y2)
jspsJ p1 0 (putDoor cond l1 x1 y1) $
sPS p2 0 (putDoor cond l2 x2 y2)
putDoor :: WdBl -> Float -> Point2A -> Point2A -> PSType
putDoor cond l p1 p2 = PutDoor' dr wl
where
wl = defaultDoorWall
dr = defaultDoor
& drTrigger .~ cond
& drUpdate .~ DoorLerp 0.01
& drZeroPos .~ p1
& drOnePos .~ p2
& drFootPrint .~ IM.fromList (zip [0..] $ wlps')
wlps' = rectanglePairs 9 0 (V2 l 0)
airlockSimple :: Room
airlockSimple =