From b52964f6064a95cc18629fb9e984775ff5eae00e Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 19 Mar 2026 12:07:31 +0000 Subject: [PATCH] Work on rect sensor rooms --- src/Dodge/Room/SensorDoor.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 8a2519cdf..072298ee1 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -2,6 +2,7 @@ module Dodge.Room.SensorDoor (sensAboveDoor, sensorRoomRunPast) where +import Dodge.RoomLink import Dodge.Room.Procedural import Control.Monad import qualified Data.Set as S @@ -28,7 +29,7 @@ import RandomHelp sensorRoom :: SensorType -> Int -> State LayoutVars (Tree Room) sensorRoom senseType n = do --rm <- join $ takeOne [addLightsNGon =<< roomNgon 8 200, roomRectAutoLights 200 200] - rm <- join $ takeOne [ roomRectAutoLights 200 200] + rm <- join $ takeOne [ roomRectAutoLights 200 200 <&> rmLinks %~ setOutLinks nonCornerLinks] cenroom <- shuffleLinks $ sensInsideDoor senseType n rm return $ treePost @@ -47,7 +48,11 @@ sensorRoom senseType n = do p' = p +.+ rotateV d (V2 0 (negate 100)) isclose = dist (_rlPos rl) p' < 30 - +nonCornerLinks :: RoomLink -> Bool +nonCornerLinks = not . any f . (^. rlType) + where + f (FromEdge _ 0) = True + f _ = False sensorRoomRunPast :: SensorType -> Int -> State LayoutVars MTRS sensorRoomRunPast dt n = do