Simplify room out/in placements

This commit is contained in:
2025-09-23 10:14:19 +01:00
parent d1bb8a985b
commit 5ee78ceffc
4 changed files with 25 additions and 26 deletions
+8 -6
View File
@@ -3,6 +3,7 @@
{- Rooms that contain two doors and a switch alternating both. -}
module Dodge.Room.Airlock where
import Data.Maybe
import Control.Lens
import Control.Monad
--import Dodge.Annotation.Data
@@ -41,14 +42,15 @@ decontamRoom i =
]
& rmOutPmnt . at i ?~
analyser (NoItemZone ps) (PS 50 0) (PS mcpos 0)
& rmInPmnt .~ [InPlacement f i]
& rmInPmnt .~ [f]
& rmBound .~ [rectNSWE 75 15 0 40, switchcut]
where
f _ (pmnt : _) = putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt)
(V2 (-10) 35)
(V2 (-10) 65)
2
f _ _ = error "tried to put a door using an empty placement list"
f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do
pmnt <- gw ^? genPmnt . ix i . _head
return $ putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt)
(V2 (-10) 35)
(V2 (-10) 65)
2
cond pmnt = WdTrig $ pmnt ^?! plMID . _Just
mcpos = V2 70 50
cutps = [rectNSWE 100 0 0 40, switchcut]