This commit is contained in:
2025-12-26 15:43:21 +00:00
parent 3c07069adc
commit 3f7eeb871c
5 changed files with 44 additions and 61 deletions
-1
View File
@@ -19,7 +19,6 @@ data SensorType
data DamageSensor = DamSensor
{ _sensAmount :: Int
, _sensType :: SensorType
, _sensThreshold :: Int
}
data ProximitySensor = ProxSensor
+9 -4
View File
@@ -120,7 +120,7 @@ mcUseItem mc w = fromMaybe w $ do
mcDamSensorTriggerUpdate :: DamageSensor -> Machine -> World -> World
mcDamSensorTriggerUpdate se mc = fromMaybe id $ do
trid <- mc ^? mcMounts . ix OTTrigger
bval <- mcTriggerVal se
let bval = se ^. sensAmount > damageTypeThreshold (se ^. sensType)
return $ cWorld . lWorld . triggers . ix trid ||~ bval
mcProxSensorTriggerUpdate :: ProximitySensor -> Machine -> World -> World
@@ -129,8 +129,13 @@ mcProxSensorTriggerUpdate se mc = fromMaybe id $ do
bval <- se ^? proxToggle . _Just
return $ cWorld . lWorld . triggers . at trid ?~ bval
mcTriggerVal :: DamageSensor -> Maybe Bool
mcTriggerVal se = Just $ _sensAmount se > _sensThreshold se
damageTypeThreshold :: SensorType -> Int
damageTypeThreshold = \case
LaserSensor -> 1000
ElectricSensor -> 500
ThermalSensor -> 1000
PhysicalSensor -> 1000
mcPlaySound :: Machine -> World -> World
mcPlaySound mc w = fromMaybe w $ do
@@ -167,7 +172,7 @@ mcApplyDamage ds mc = case mc ^? mcType . _McDamSensor of
mcpointer = cWorld . lWorld . machines . ix (_mcID mc)
mcDamSensorUpdate :: DamageSensor -> Machine -> World -> World
mcDamSensorUpdate se = senseDamage (_sensThreshold se) (_sensType se)
mcDamSensorUpdate se = senseDamage (damageTypeThreshold (se ^. sensType)) (se ^. sensType)
mcProxSensorUpdate :: ProximitySensor -> Machine -> World -> World
mcProxSensorUpdate se mc = case se ^. proxSensorType of
+3 -19
View File
@@ -1,3 +1,4 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Placement.Instance.Sensor (
lightSensor,
damageSensor,
@@ -17,29 +18,12 @@ damageSensor dt wdth mtrid ps = pContID ps (PutLS $ lsPosCol (V3 0 0 30) 0.1) $
PutMachine
(reverse $ square wdth)
( defaultMachine
-- & mcColor .~ yellow
& mcMounts . at OTTrigger .~ mtrid
& mcMounts . at OTLightSource ?~ lsid
& mcType
.~ McDamSensor
( DamSensor
0
dt
(damageTypeThreshold dt)
)
.~ McDamSensor ( DamSensor 0 dt)
)
Nothing
damageTypeThreshold :: SensorType -> Int
damageTypeThreshold dt = case dt of
LaserSensor -> 1000
ElectricSensor -> 500
ThermalSensor -> 1000
PhysicalSensor -> 1000
lightSensor ::
Float ->
Maybe Int ->
PlacementSpot ->
Placement
lightSensor :: Float -> Maybe Int -> PlacementSpot -> Placement
lightSensor = damageSensor LaserSensor
+5 -10
View File
@@ -51,16 +51,11 @@ putTerminalFull f mc tm =
putTerminal :: Machine -> Terminal -> Placement
putTerminal = putTerminalFull (\_ _ _ -> Nothing)
tmMachine :: Machine
tmMachine = defaultMachine & mcType .~ McTerminal & mcHP .~ 100
putMessageTerminal :: Terminal -> Placement
putMessageTerminal =
putTerminal $
defaultMachine
& mcType .~ McTerminal
& mcHP .~ 100
putMessageTerminal = putTerminal tmMachine
putImmediateMessageTerminal :: Terminal -> Placement
putImmediateMessageTerminal =
putTerminalImediateAccess $
defaultMachine
& mcType .~ McTerminal
& mcHP .~ 100
putImmediateMessageTerminal = putTerminalImediateAccess tmMachine
+27 -27
View File
@@ -2257,7 +2257,6 @@ _seObstacles src/Dodge/Data/PathGraph.hs 45;" f
_seenLocations src/Dodge/Data/LWorld.hs 136;" f
_selLocation src/Dodge/Data/LWorld.hs 137;" f
_sensAmount src/Dodge/Data/Machine/Sensor.hs 20;" f
_sensThreshold src/Dodge/Data/Machine/Sensor.hs 22;" f
_sensType src/Dodge/Data/Machine/Sensor.hs 21;" f
_sensorCoding src/Dodge/Data/GenParams.hs 14;" f
_sentinelDir src/Dodge/Data/ActionPlan.hs 152;" f
@@ -2521,7 +2520,7 @@ addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f
addCrGibs src/Dodge/Prop/Gib.hs 17;" f
addDepth src/Picture/Base.hs 136;" f
addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 41;" f
addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 65;" f
addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 66;" f
addDoorToggleTerminal src/Dodge/Room/Warning.hs 38;" f
addGib4 src/Dodge/Prop/Gib.hs 52;" f
addGibAt src/Dodge/Prop/Gib.hs 63;" f
@@ -2548,7 +2547,7 @@ addSideEffect src/Dodge/Concurrent.hs 29;" f
addSouthPillars src/Dodge/Room/LongDoor.hs 88;" f
addTermSignal src/Dodge/Event/Input.hs 31;" f
addToTrunk src/TreeHelp.hs 157;" f
addWarningTerminal src/Dodge/Room/Warning.hs 87;" f
addWarningTerminal src/Dodge/Room/Warning.hs 88;" f
addZ src/Geometry/Vector3D.hs 89;" f
adjustIMZone src/Dodge/Base.hs 81;" f
advanceScrollAmount src/Dodge/Update.hs 422;" f
@@ -3047,10 +3046,10 @@ damageGlassBlock src/Dodge/Wall/Damage.hs 49;" f
damageHP src/Dodge/Creature/Damage.hs 37;" f
damageInCircle src/Dodge/Damage.hs 61;" f
damageMetal src/Dodge/Material/Damage.hs 64;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 13;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f
damageStone src/Dodge/Material/Damage.hs 33;" f
damageThingHit src/Dodge/Bullet.hs 180;" f
damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 33;" f
damageTypeThreshold src/Dodge/Machine/Update.hs 135;" f
damageWall src/Dodge/Wall/Damage.hs 29;" f
damsToExpBarrel src/Dodge/Barreloid.hs 50;" f
dark src/Color.hs 135;" f
@@ -3601,8 +3600,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 539;" f
getCommand src/Dodge/Terminal.hs 52;" f
getCommands src/Dodge/Terminal.hs 49;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 346;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 333;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 349;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 336;" f
getDebugMouseOver src/Dodge/Update.hs 392;" f
getDistortions src/Dodge/Render.hs 441;" f
getEdgesCrossing src/Dodge/Path.hs 37;" f
@@ -3619,7 +3618,7 @@ getNodePos src/Dodge/Path.hs 34;" f
getPJStabiliser src/Dodge/HeldUse.hs 1243;" f
getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 329;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 332;" f
getRootItemBounds src/Dodge/Render/HUD.hs 102;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3985,7 +3984,7 @@ liShape src/Dodge/Placement/Instance/LightSource.hs 79;" f
light src/Color.hs 131;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 60;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 48;" f
lightSensor src/Dodge/Placement/Instance/Sensor.hs 40;" f
lightSensor src/Dodge/Placement/Instance/Sensor.hs 28;" f
lightsToRender src/Dodge/Render/Lights.hs 14;" f
lightx4 src/Color.hs 155;" f
linGrad src/Geometry/Intersect.hs 241;" f
@@ -3994,7 +3993,7 @@ lineCol src/Picture/Base.hs 245;" f
lineGeom src/Dodge/Base.hs 32;" f
lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f
lineOrth src/Dodge/Creature/Boid.hs 128;" f
lineOutputTerminal src/Dodge/Room/Warning.hs 92;" f
lineOutputTerminal src/Dodge/Room/Warning.hs 93;" f
lineSplit src/Justify.hs 26;" f
lineThick src/Picture/Base.hs 249;" f
lineUp src/Dodge/Creature/Boid.hs 150;" f
@@ -4136,19 +4135,19 @@ maybeOpenConsole src/Dodge/Update.hs 127;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
maybeTakeOne src/RandomHelp.hs 116;" f
maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f
mcApplyDamage src/Dodge/Machine/Update.hs 162;" f
mcBackgroundSound src/Dodge/Machine/Update.hs 151;" f
mcApplyDamage src/Dodge/Machine/Update.hs 170;" f
mcBackgroundSound src/Dodge/Machine/Update.hs 159;" f
mcColor src/Dodge/Machine/Draw.hs 82;" f
mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 120;" f
mcDamSensorUpdate src/Dodge/Machine/Update.hs 169;" f
mcDamSensorUpdate src/Dodge/Machine/Update.hs 177;" f
mcKillBut src/Dodge/Machine/Destroy.hs 38;" f
mcKillTerm src/Dodge/Machine/Destroy.hs 30;" f
mcNoItemsTest src/Dodge/Machine/Update.hs 177;" f
mcPlaySound src/Dodge/Machine/Update.hs 135;" f
mcNoItemsTest src/Dodge/Machine/Update.hs 185;" f
mcPlaySound src/Dodge/Machine/Update.hs 143;" f
mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 126;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 172;" f
mcProxTest src/Dodge/Machine/Update.hs 253;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 214;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 180;" f
mcProxTest src/Dodge/Machine/Update.hs 261;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 222;" f
mcSPic src/Dodge/Render/ShapePicture.hs 134;" f
mcShootAuto src/Dodge/HeldUse.hs 1161;" f
mcShootLaser src/Dodge/HeldUse.hs 1154;" f
@@ -4230,7 +4229,7 @@ moveProjectile src/Dodge/Projectile/Update.hs 210;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 197;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 95;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 96;" f
moveWall src/Dodge/Wall/Move.hs 23;" f
moveWallID src/Dodge/Wall/Move.hs 18;" f
moveWallIDUnsafe src/Dodge/Wall/Move.hs 13;" f
@@ -4546,13 +4545,13 @@ putBlockV src/Dodge/Placement/Instance/Wall.hs 114;" f
putDoor src/Dodge/Room/Airlock.hs 114;" f
putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f
putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 21;" f
putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 61;" f
putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 60;" f
putLamp src/Dodge/Placement/Instance/LightSource.hs 199;" f
putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
putLitButOnPos src/Dodge/Placement/Instance/Button.hs 65;" f
putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 98;" f
putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 101;" f
putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 54;" f
putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f
putShape src/Dodge/Room/Foreground.hs 134;" f
putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f
putStrLnAppend src/Dodge/LevelGen.hs 82;" f
@@ -4822,13 +4821,13 @@ selSecYint src/Dodge/SelectionSections.hs 152;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f
senseDamage src/Dodge/Machine/Update.hs 269;" f
sensorReqToString src/Dodge/Machine/Update.hs 247;" f
senseDamage src/Dodge/Machine/Update.hs 277;" f
sensorReqToString src/Dodge/Machine/Update.hs 255;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
sensorSPic src/Dodge/Machine/Draw.hs 99;" f
sensorTut src/Dodge/Room/Tutorial.hs 355;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 293;" f
sensorTut src/Dodge/Room/Tutorial.hs 358;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 301;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f
sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f
@@ -5192,6 +5191,7 @@ tlDoEffect src/Dodge/Terminal.hs 109;" f
tlSetStatus src/Dodge/Terminal.hs 106;" f
tmDistributeAmmo src/Dodge/WorldEffect.hs 117;" f
tmDistributeLines src/Dodge/Room/Room.hs 449;" f
tmMachine src/Dodge/Placement/Instance/Terminal.hs 54;" f
tmUpdate src/Dodge/Update.hs 490;" f
toBinary src/Dodge/Inventory/SelectionList.hs 144;" f
toBothLnk src/Dodge/RoomLink.hs 136;" f
@@ -5294,9 +5294,9 @@ tutAnoTree src/Dodge/Room/Tutorial.hs 47;" f
tutDrop src/Dodge/Room/Tutorial.hs 94;" f
tutHub src/Dodge/Room/Tutorial.hs 254;" f
tutLight src/Dodge/Room/Tutorial.hs 219;" f
tutRezBox src/Dodge/Room/Tutorial.hs 366;" f
tutRezBox src/Dodge/Room/Tutorial.hs 369;" f
tutRoomTree src/Dodge/Floor.hs 21;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 389;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 392;" f
tweenAngles src/Geometry/Vector.hs 190;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f