Simplify analysers

This commit is contained in:
2025-12-09 10:04:45 +00:00
parent 928eab3fd7
commit 23949b02af
3 changed files with 112 additions and 99 deletions
+39 -25
View File
@@ -1,5 +1,14 @@
{-# LANGUAGE TupleSections #-}
module Dodge.Room.LasTurret where
module Dodge.Room.LasTurret (
analyserByNthLinkWithPrompt,
analyserByDoor,
lasCenSensEdge,
lasTunnelRunPast,
keyCardRoomRunPast,
lasSensorTurretTest,
healthTest,
) where
--import Dodge.Item.Held.Cane
import qualified Data.Set as S
@@ -61,7 +70,7 @@ lightSensByDoor i rm =
-- & rmOutPmnt . at i ?~ sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift)
covershape = rectNSWE 10 (-10) (-20) 20
sensorshift (p, a) = ((p +.+ rotateV a (V2 60 (-20)), a),S.singleton UsedPosLow)
sensorshift (p, a) = ((p +.+ rotateV a (V2 60 (-20)), a), S.singleton UsedPosLow)
keyCardRoomRunPast :: RandomGen g => Int -> Int -> State g (MetaTree Room String)
keyCardRoomRunPast keyid rmid = do
@@ -81,43 +90,48 @@ keyCardAnalyserByDoor keyid = analyserByDoor (RequireEquipment (HELD (KEYCARD ke
healthAnalyserByDoor :: Int -> Room -> Room
healthAnalyserByDoor = analyserByDoor (RequireHealth 1100)
analyserByNthLink :: Int -> ProximityRequirement -> Int -> Room -> Room
analyserByNthLink n proxreq i rm =
rm
& rmPmnts
.++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80
, analyser
analyserByNthLink :: Int -> ProximityRequirement -> Int -> Placement
analyserByNthLink n proxreq i =
analyser
(SensorWithRequirement proxreq)
(atNthLnkOutShiftBy n (\(p, a) ->
((p +.+ rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow)))
( atNthLnkOutShiftBy
n
( \(p, a) ->
((p +.+ rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow)
)
)
(atNthLnkOutShiftBy n sensorshift)
& plExternalID ?~ i
]
where
sensorshift (p, a) = ((p +.+ rotateV a (V2 (-30) (-10)), a), S.singleton UsedPosLow)
analyserByNthLinkWithPrompt ::
Int -> [TerminalLine] -> ProximityRequirement -> Int -> Placement
analyserByNthLinkWithPrompt n l proxreq i =
-- rm
-- & rmPmnts
-- .++~ [-- psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80
analyserWithPrompt
l
(SensorWithRequirement proxreq)
(atNthLnkOutShiftBy n (\(p, a) ->
((p +.+ rotateV a (V2 18.5 (-2.5)), a),S.singleton UsedPosLow)))
(atNthLnkOutShiftBy n sensorshift)
& plExternalID ?~ i
-- ]
-- rm
-- & rmPmnts
-- .++~ [-- psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80
analyserWithPrompt
l
(SensorWithRequirement proxreq)
( atNthLnkOutShiftBy
n
( \(p, a) ->
((p +.+ rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow)
)
)
(atNthLnkOutShiftBy n sensorshift)
& plExternalID ?~ i
where
-- ]
sensorshift (p, a) = ((p +.+ rotateV a (V2 (-30) (-10)), a), S.singleton UsedPosLow)
analyserByDoor :: ProximityRequirement -> Int -> Room -> Room
analyserByDoor = analyserByNthLink 0
analyserByDoor pr i = rmPmnts .:~ analyserByNthLink 0 pr i
analyserByDoorWithPrompt :: [TerminalLine] -> ProximityRequirement -> Int -> Room -> Room
analyserByDoorWithPrompt s x i = rmPmnts .:~ analyserByNthLinkWithPrompt 0 s x i
--analyserByDoorWithPrompt :: [TerminalLine] -> ProximityRequirement -> Int -> Room -> Room
--analyserByDoorWithPrompt s x i = rmPmnts .:~ analyserByNthLinkWithPrompt 0 s x i
healthTest :: RandomGen g => Int -> State g (Tree Room)
healthTest n = do
+1 -1
View File
@@ -266,7 +266,7 @@ tutHub = do
k
x <-
shuffleLinks
. analyserByDoorWithPrompt [] (RequireEquipment (AMMOMAG DRUMMAG)) i
. analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
. (rmInPmnt .:~ (0, a))
. addDoorAtNthLinkToggleTerminal 1 ss j
=<< roomNgon 6 100