Tweak room modification when creating link

This commit is contained in:
2022-06-02 22:04:20 +01:00
parent 024f72da20
commit 15d8b821d4
3 changed files with 21 additions and 8 deletions
+16 -3
View File
@@ -35,19 +35,32 @@ import Data.Char
import Control.Monad.State
import System.Random
-- TODO fix case where the sensor created by sensInsideDoor blocks another door
-- for roomRectAutoLinks-- make the locked door a center door?
sensorRoom :: RandomGen g => DamageType -> Int -> State g (SubCompTree Room)
sensorRoom senseType n = do
rm <- takeOne [roomNgon 8 200, roomRectAutoLinks 200 200]
cenroom <- shuffleLinks $ sensInsideDoor senseType n rm
let doorroom = triggerDoorRoom n
return $ treeFromPost [PassDown door,PassDown cenroom,PassDown doorroom] (UseAll door)
return $ treeFromPost [PassDown door,PassDown $ cenroom & rmLinkEff .~ [f,f],PassDown doorroom] (UseAll door)
where
f rl rm = rm & rmLinks %~ map (g (_rlPos rl) (_rlDir rl))
g p d rl
| isclose = rl & rlType . at BlockedLink ?~ ()
| otherwise = rl
where
p' = p +.+ rotateV d (V2 0 (negate 100))
isclose = dist (_rlPos rl) p' < 30
sensorRoomRunPast :: RandomGen g => DamageType -> Int -> State g (LabSubCompTree Room)
sensorRoomRunPast dt n = do
t <- sensorRoom dt n
return (applyToSubforest [0] (++
[treeFromPost [PassDown $ door & rmConnectsTo .~ S.member InLink
] (UseLabel 0 corridor)]
[treeFromPost
[PassDown $ door & rmConnectsTo
.~ (\s -> S.member InLink s && not (S.member BlockedLink s))
] (UseLabel 0 corridor)
]
) t
,TreeSubLabelling "sensorRoomRunPast" Nothing)
--[return $ UseLabel 0 $ door & rmConnectsTo .~ S.member InLink]