This commit is contained in:
2025-08-20 16:50:47 +01:00
parent 4bf9ce59d5
commit 8557724fb5
5 changed files with 69 additions and 98 deletions
+1 -3
View File
@@ -14,7 +14,6 @@ import Data.Aeson
import Data.Aeson.TH
import qualified Data.Map.Strict as M
import Dodge.Data.BlBl
--import Dodge.Data.Machine.Sensor.Type
import Dodge.Data.Terminal.Status
import Dodge.Data.WorldEffect
import Sound.Data
@@ -63,8 +62,7 @@ data TmWdWd
| TmWdWdDoDeathTriggers
| TmTmClearDisplayedLines
| TmTmSetStatus TerminalStatus
-- | TmGetDamageCoding SensorType
| TmGetSensor String
-- | TmGetSensor String
makeLenses ''Terminal
makeLenses ''TerminalLine
+10 -1
View File
@@ -1,6 +1,7 @@
--{-# LANGUAGE TupleSections #-}
module Dodge.Room.Warning (warningRooms) where
import Dodge.Default.Terminal
import Dodge.Data.BlBl
import Color
import qualified Data.Map.Strict as M
@@ -16,7 +17,6 @@ import Dodge.Room.Procedural
import Dodge.Room.Tanks
import Dodge.Terminal
import Dodge.Tree
import Dodge.WorldEffect
import Geometry
import LensHelp
import RandomHelp
@@ -46,6 +46,15 @@ addWarningTerminal str outplid = (rmName .++~ "warningTerm-")
& tmToggles .~ M.fromList
[("DOOR", TerminalToggle (fromJust $ _plMID trpl) (BlConst True))]
lineOutputTerminal :: [TerminalLine] -> Terminal
lineOutputTerminal tls =
defaultTerminal
{ _tmDisplayedLines = []
, _tmFutureLines = []
, _tmBootLines = connectionBlurbLines tls
, _tmDeathEffect = TmWdWdDoDeathTriggers
}
moveToSideFirstOutLink :: RoomPos -> Room -> Maybe (Point2, Float)
moveToSideFirstOutLink rp rm = do
0 <- rp ^? rpLinkStatus . rplsChildNum
+1 -2
View File
@@ -81,8 +81,7 @@ decodeSensorType st w = fromMaybe [] $ do
x <- w ^? cWorld . cwGen . cwgParams . sensorCoding . ix st
return [makeTermLine $ show x]
-- ugly, when changing check getSensorInfo
-- ugly
sensorCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
sensorCommand w tm = PTE.singleton "SENSOR" $ fromMaybe mempty $ do
ProximitySensor _ d r b <- w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor
+5 -40
View File
@@ -4,7 +4,6 @@ module Dodge.WorldEffect (
doWdWd,
accessTerminal,
doTmWdWd,
lineOutputTerminal,
) where
import Control.Monad
@@ -15,13 +14,10 @@ import Dodge.BlBl
import Dodge.Creature.Impulse.UseItem
import Dodge.Data.Terminal.Status
import Dodge.Data.World
import Dodge.Default
import Dodge.HeldUse
import Dodge.Inventory.Lock
import Dodge.Item.Grammar
--import Dodge.Item.Location
import Dodge.SoundLogic
import Dodge.Terminal
import Dodge.WorldEvent.Cloud
import qualified IntMapHelp as IM
import LensHelp
@@ -78,18 +74,10 @@ torqueCr x cid w
where
(rot, g) = randomR (- x, x) $ _randGen w
lineOutputTerminal :: [TerminalLine] -> Terminal
lineOutputTerminal tls =
defaultTerminal
{ _tmDisplayedLines = []
, _tmFutureLines = []
, _tmBootLines = connectionBlurbLines tls
, _tmDeathEffect = TmWdWdDoDeathTriggers
}
doDeathTriggers :: Terminal -> World -> World
doDeathTriggers tm = (cWorld . lWorld . triggers %~ flip (foldl' $ flip doDeathToggle) xs)
. (cWorld . lWorld . terminals . ix (tm ^. tmID) . tmStatus .~ TerminalDeactivated)
doDeathTriggers tm =
(cWorld . lWorld . triggers %~ flip (foldl' $ flip doDeathToggle) xs)
. (cWorld . lWorld . terminals . ix (tm ^. tmID) . tmStatus .~ TerminalDeactivated)
where
xs = M.elems $ _tmToggles tm
@@ -101,18 +89,7 @@ doTmWdWd tmwdwd = case tmwdwd of
TmTmClearDisplayedLines -> \tm -> fromMaybe id $ do
tid <- tm ^? tmID
return $ cWorld . lWorld . terminals . ix tid . tmDisplayedLines .~ []
-- TmGetDamageCoding st -> \tm w -> fromMaybe w $ do
-- tid <- tm ^? tmID
-- return $
-- w & cWorld . lWorld . terminals . ix tid . tmFutureLines
-- .~ decodeSensorType st w
TmGetSensor s -> \tm w -> fromMaybe w $ do
tid <- tm ^? tmID
return $ w & cWorld . lWorld . terminals . ix tid . tmFutureLines
.~ getSensorInfo w tm s
TmTmSetStatus x -> \tm -> fromMaybe id $ do
tid <- tm ^? tmID
return $ cWorld . lWorld . terminals . ix tid . tmStatus .~ x
TmTmSetStatus x -> \tm -> cWorld . lWorld . terminals . ix (tm ^. tmID) . tmStatus .~ x
TmWdId -> const id
TmWdWdPowerDownTerminal -> powerDownTerminal
TmWdWdDeactivateTerminal -> deactivateTerminal
@@ -136,17 +113,5 @@ deactivateTerminal tm =
exitTerminalSubInv :: World -> World
exitTerminalSubInv w = case w ^? hud . hudElement . subInventory . termID of
Just _ ->
w & hud . hudElement . subInventory
.~ NoSubInventory --MouseInvNothing
Just _ -> w & hud . hudElement . subInventory .~ NoSubInventory
_ -> w
-- ugly, when changing check sensorCommand
getSensorInfo :: World -> Terminal -> String -> [TerminalLine]
getSensorInfo w tm = \case
"REQUIREMENT" -> maybe [] f $ w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor . proxRequirement
"DISTANCE" -> maybe [] f $ w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor . proxDist
"STATUS" -> maybe [] f $ w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor . sensToggle
_ -> []
where
f s = [makeTermLine $ show s]
+52 -52
View File
@@ -17,7 +17,7 @@
<$> src/Dodge/Data/Camera.hs 39;" o
<$> src/Dodge/Data/Creature.hs 80;" o
<$> src/Dodge/Data/LWorld.hs 184;" o
<$> src/Dodge/Data/Terminal.hs 74;" o
<$> src/Dodge/Data/Terminal.hs 72;" o
ABSOLUTE src/Dodge/Data/Item/Combine.hs 40;" C
AIUNIT src/Dodge/Data/Item/Combine.hs 75;" C
ALTERIFLE src/Dodge/Data/Item/Combine.hs 155;" C
@@ -1305,12 +1305,12 @@ SwarmCrit src/Dodge/Data/Creature/Misc.hs 71;" C
SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C
TAPE src/Dodge/Data/Item/Combine.hs 56;" C
TARGETING src/Dodge/Data/Item/Combine.hs 22;" C
TCBase src/Dodge/Data/Terminal.hs 52;" C
TCDamageCommand src/Dodge/Data/Terminal.hs 53;" C
TCInfo src/Dodge/Data/Terminal.hs 51;" C
TCSensorInfo src/Dodge/Data/Terminal.hs 54;" C
TCToggles src/Dodge/Data/Terminal.hs 55;" C
TCom src/Dodge/Data/Terminal.hs 50;" t
TCBase src/Dodge/Data/Terminal.hs 51;" C
TCDamageCommand src/Dodge/Data/Terminal.hs 52;" C
TCInfo src/Dodge/Data/Terminal.hs 50;" C
TCSensorInfo src/Dodge/Data/Terminal.hs 53;" C
TCToggles src/Dodge/Data/Terminal.hs 54;" C
TCom src/Dodge/Data/Terminal.hs 49;" t
TESLAGUN src/Dodge/Data/Item/Combine.hs 169;" C
THERMOMETER src/Dodge/Data/Item/Combine.hs 85;" C
THREELINES src/Dodge/Data/GenParams.hs 20;" C
@@ -1318,7 +1318,7 @@ TIMESCROLLER src/Dodge/Data/Item/Combine.hs 144;" C
TIMESTOPPER src/Dodge/Data/Item/Combine.hs 143;" C
TIN src/Dodge/Data/Item/Combine.hs 58;" C
TINMAG src/Dodge/Data/Item/Combine.hs 108;" C
TLine src/Dodge/Data/Terminal.hs 39;" C
TLine src/Dodge/Data/Terminal.hs 38;" C
TO src/Shader/Data.hs 59;" t
TORCH src/Dodge/Data/Item/Combine.hs 176;" C
TRACTORGUN src/Dodge/Data/Item/Combine.hs 170;" C
@@ -1342,18 +1342,18 @@ TargetingLaser src/Dodge/Data/Laser.hs 18;" C
TargetingType src/Dodge/Data/Item/Targeting.hs 11;" t
TeleSound src/Dodge/Data/SoundOrigin.hs 36;" C
TermSignal src/Dodge/Data/Input.hs 55;" t
Terminal src/Dodge/Data/Terminal.hs 22;" t
Terminal src/Dodge/Data/Terminal.hs 21;" t
TerminalDeactivated src/Dodge/Data/Terminal/Status.hs 12;" C
TerminalLine src/Dodge/Data/Terminal.hs 39;" t
TerminalLineConst src/Dodge/Data/Terminal.hs 37;" C
TerminalLine src/Dodge/Data/Terminal.hs 38;" t
TerminalLineConst src/Dodge/Data/Terminal.hs 36;" C
TerminalLineRead src/Dodge/Data/Terminal/Status.hs 13;" C
TerminalLineString src/Dodge/Data/Terminal.hs 37;" t
TerminalLineString src/Dodge/Data/Terminal.hs 36;" t
TerminalOff src/Dodge/Data/Terminal/Status.hs 11;" C
TerminalPressTo src/Dodge/Data/Terminal/Status.hs 15;" C
TerminalSound src/Dodge/Data/SoundOrigin.hs 24;" C
TerminalStatus src/Dodge/Data/Terminal/Status.hs 10;" t
TerminalTextInput src/Dodge/Data/Terminal/Status.hs 14;" C
TerminalToggle src/Dodge/Data/Terminal.hs 45;" t
TerminalToggle src/Dodge/Data/Terminal.hs 44;" t
Terrestrial src/Dodge/Data/Scenario.hs 72;" C
TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t
TeslaArc src/Dodge/Data/TeslaArc.hs 17;" t
@@ -1365,16 +1365,16 @@ Tile src/Data/Tile.hs 16;" t
Tiled src/Data/Tile.hs 14;" C
TimeFlowStatus src/Dodge/Data/World.hs 58;" t
Tiny src/Shape/Data.hs 32;" C
TmGetSensor src/Dodge/Data/Terminal.hs 67;" C
TmTmClearDisplayedLines src/Dodge/Data/Terminal.hs 64;" C
TmTmSetStatus src/Dodge/Data/Terminal.hs 65;" C
TmWdId src/Dodge/Data/Terminal.hs 58;" C
TmWdWd src/Dodge/Data/Terminal.hs 57;" t
TmWdWdDeactivateTerminal src/Dodge/Data/Terminal.hs 60;" C
TmWdWdDoDeathTriggers src/Dodge/Data/Terminal.hs 63;" C
TmWdWdPowerDownTerminal src/Dodge/Data/Terminal.hs 59;" C
TmWdWdTermSound src/Dodge/Data/Terminal.hs 62;" C
TmWdWdfromWdWd src/Dodge/Data/Terminal.hs 61;" C
TmGetSensor src/Dodge/Data/Terminal.hs 65;" C
TmTmClearDisplayedLines src/Dodge/Data/Terminal.hs 63;" C
TmTmSetStatus src/Dodge/Data/Terminal.hs 64;" C
TmWdId src/Dodge/Data/Terminal.hs 57;" C
TmWdWd src/Dodge/Data/Terminal.hs 56;" t
TmWdWdDeactivateTerminal src/Dodge/Data/Terminal.hs 59;" C
TmWdWdDoDeathTriggers src/Dodge/Data/Terminal.hs 62;" C
TmWdWdPowerDownTerminal src/Dodge/Data/Terminal.hs 58;" C
TmWdWdTermSound src/Dodge/Data/Terminal.hs 61;" C
TmWdWdfromWdWd src/Dodge/Data/Terminal.hs 60;" C
ToContinueStart src/Sound/Data.hs 27;" C
ToPlaySound src/Sound/Data.hs 35;" t
ToStart src/Sound/Data.hs 26;" C
@@ -2416,21 +2416,21 @@ _tileZero src/Data/Tile.hs 19;" f
_tiles src/Data/Tile.hs 14;" f
_timeFlow src/Dodge/Data/World.hs 38;" f
_timeFlowCharge src/Dodge/Data/World.hs 78;" f
_tlEffect src/Dodge/Data/Terminal.hs 42;" f
_tlPause src/Dodge/Data/Terminal.hs 40;" f
_tlString src/Dodge/Data/Terminal.hs 41;" f
_tmBootLines src/Dodge/Data/Terminal.hs 24;" f
_tmButtonID src/Dodge/Data/Terminal.hs 25;" f
_tmCommandHistory src/Dodge/Data/Terminal.hs 33;" f
_tmCommands src/Dodge/Data/Terminal.hs 30;" f
_tmDeathEffect src/Dodge/Data/Terminal.hs 31;" f
_tmDisplayedLines src/Dodge/Data/Terminal.hs 28;" f
_tmExternalColor src/Dodge/Data/Terminal.hs 27;" f
_tmFutureLines src/Dodge/Data/Terminal.hs 29;" f
_tmID src/Dodge/Data/Terminal.hs 23;" f
_tmMachineID src/Dodge/Data/Terminal.hs 26;" f
_tmStatus src/Dodge/Data/Terminal.hs 32;" f
_tmToggles src/Dodge/Data/Terminal.hs 34;" f
_tlEffect src/Dodge/Data/Terminal.hs 41;" f
_tlPause src/Dodge/Data/Terminal.hs 39;" f
_tlString src/Dodge/Data/Terminal.hs 40;" f
_tmBootLines src/Dodge/Data/Terminal.hs 23;" f
_tmButtonID src/Dodge/Data/Terminal.hs 24;" f
_tmCommandHistory src/Dodge/Data/Terminal.hs 32;" f
_tmCommands src/Dodge/Data/Terminal.hs 29;" f
_tmDeathEffect src/Dodge/Data/Terminal.hs 30;" f
_tmDisplayedLines src/Dodge/Data/Terminal.hs 27;" f
_tmExternalColor src/Dodge/Data/Terminal.hs 26;" f
_tmFutureLines src/Dodge/Data/Terminal.hs 28;" f
_tmID src/Dodge/Data/Terminal.hs 22;" f
_tmMachineID src/Dodge/Data/Terminal.hs 25;" f
_tmStatus src/Dodge/Data/Terminal.hs 31;" f
_tmToggles src/Dodge/Data/Terminal.hs 33;" f
_toPlaySoundChunkID src/Sound/Data.hs 41;" f
_toPlaySoundPos src/Sound/Data.hs 38;" f
_toPlaySoundStatus src/Sound/Data.hs 37;" f
@@ -2444,8 +2444,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 123;" f
_trieChildren src/SimpleTrie.hs 12;" f
_trieMVal src/SimpleTrie.hs 11;" f
_triggers src/Dodge/Data/LWorld.hs 133;" f
_ttDeathEffect src/Dodge/Data/Terminal.hs 47;" f
_ttTriggerID src/Dodge/Data/Terminal.hs 46;" f
_ttDeathEffect src/Dodge/Data/Terminal.hs 46;" f
_ttTriggerID src/Dodge/Data/Terminal.hs 45;" f
_tuDir src/Dodge/Data/Machine.hs 61;" f
_tuFireTime src/Dodge/Data/Machine.hs 60;" f
_tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f
@@ -2569,7 +2569,7 @@ aRadarPulse src/Dodge/RadarSweep.hs 19;" f
aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f
aSound src/Dodge/SoundLogic.hs 74;" f
aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f
accessTerminal src/Dodge/WorldEffect.hs 56;" f
accessTerminal src/Dodge/WorldEffect.hs 54;" f
activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 60;" f
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
addArmour src/Dodge/Creature.hs 85;" f
@@ -3118,7 +3118,7 @@ dbArgChain src/Dodge/Base.hs 170;" f
dbwMuzzles src/Dodge/HeldUse.hs 314;" f
deZoneIX src/Dodge/Zoning/Base.hs 89;" f
deZoneWall src/Dodge/Zoning/Wall.hs 70;" f
deactivateTerminal src/Dodge/WorldEffect.hs 131;" f
deactivateTerminal src/Dodge/WorldEffect.hs 113;" f
deadEndRoom src/Dodge/Room/Room.hs 235;" f
deadFeet src/Dodge/Creature/Picture.hs 66;" f
deadRot src/Dodge/Creature/Picture.hs 82;" f
@@ -3274,8 +3274,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 77;" f
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
doDamage src/Dodge/Creature/State.hs 41;" f
doDeathToggle src/Dodge/WorldEffect.hs 96;" f
doDeathTriggers src/Dodge/WorldEffect.hs 90;" f
doDeathToggle src/Dodge/WorldEffect.hs 85;" f
doDeathTriggers src/Dodge/WorldEffect.hs 79;" f
doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f
doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 37;" f
doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 62;" f
@@ -3326,13 +3326,13 @@ doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 182;" f
doTimeScroll src/Dodge/Update.hs 208;" f
doTmWdWd src/Dodge/WorldEffect.hs 99;" f
doTmWdWd src/Dodge/WorldEffect.hs 88;" f
doWallRotate src/Dodge/Update/Camera.hs 213;" f
doWdBl src/Dodge/WorldBool.hs 10;" f
doWdCrBl src/Dodge/CreatureEffect.hs 37;" f
doWdCrCr src/Dodge/CreatureEffect.hs 12;" f
doWdP2f src/Dodge/WdP2f.hs 12;" f
doWdWd src/Dodge/WorldEffect.hs 30;" f
doWdWd src/Dodge/WorldEffect.hs 28;" f
doWorldEvents src/Dodge/Update.hs 443;" f
doWorldPos src/Dodge/WorldPos.hs 7;" f
door src/Dodge/Room/Door.hs 13;" f
@@ -3552,7 +3552,7 @@ errorNormalizeV src/Geometry.hs 55;" f
errorPointInPolygon src/Geometry.hs 47;" f
evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 150;" f
evenOddSplit src/Dodge/Base.hs 160;" f
exitTerminalSubInv src/Dodge/WorldEffect.hs 137;" f
exitTerminalSubInv src/Dodge/WorldEffect.hs 119;" f
expandLine src/Dodge/Picture.hs 30;" f
expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
@@ -3709,7 +3709,7 @@ getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 6;" f
getRootItemBounds src/Dodge/Render/HUD.hs 93;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
getSensorInfo src/Dodge/WorldEffect.hs 145;" f
getSensorInfo src/Dodge/WorldEffect.hs 125;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f
getSplitString src/Dodge/Debug/Terminal.hs 126;" f
getTiles src/Dodge/Layout.hs 208;" f
@@ -4072,7 +4072,7 @@ lineCol src/Picture/Base.hs 230;" f
lineGeom src/Dodge/Base.hs 32;" f
lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f
lineOrth src/Dodge/Creature/Boid.hs 126;" f
lineOutputTerminal src/Dodge/WorldEffect.hs 81;" f
lineOutputTerminal src/Dodge/Room/Warning.hs 49;" f
lineSplit src/Justify.hs 26;" f
lineThick src/Picture/Base.hs 234;" f
lineUp src/Dodge/Creature/Boid.hs 148;" f
@@ -4311,7 +4311,7 @@ moveProjectile src/Dodge/Projectile/Update.hs 262;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f
moveToSideFirstOutLink src/Dodge/Room/Warning.hs 49;" f
moveToSideFirstOutLink src/Dodge/Room/Warning.hs 58;" f
moveWall src/Dodge/Wall/Move.hs 29;" f
moveWallID src/Dodge/Wall/Move.hs 24;" f
moveWallIDToward src/Dodge/Wall/Move.hs 47;" f
@@ -4591,7 +4591,7 @@ positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f
postGenerationProcessing src/Dodge/LevelGen.hs 33;" f
postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f
postWorldLoad src/Dodge/WorldLoad.hs 15;" f
powerDownTerminal src/Dodge/WorldEffect.hs 125;" f
powerDownTerminal src/Dodge/WorldEffect.hs 107;" f
powerFakeout src/Dodge/Room/Start.hs 27;" f
powerFakeout' src/Dodge/Room/Start.hs 24;" f
powerLegs src/Dodge/Item/Equipment.hs 85;" f
@@ -5337,7 +5337,7 @@ topTestPart src/Dodge/TestString.hs 60;" f
torch src/Dodge/Item/Held/Utility.hs 23;" f
torchShape src/Dodge/Item/Draw/SPic.hs 290;" f
torqueAmount src/Dodge/HeldUse.hs 579;" f
torqueCr src/Dodge/WorldEffect.hs 74;" f
torqueCr src/Dodge/WorldEffect.hs 72;" f
torso src/Dodge/Creature/Picture.hs 100;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f