From 1851dcc5d62586aec81d0f2566e2871d52cf2d19 Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 2 Jun 2025 12:43:37 +0100 Subject: [PATCH] Pause and resume sounds when pausing game --- src/Dodge/Menu.hs | 2 +- src/Dodge/SoundLogic.hs | 18 ++++--- src/Dodge/SoundLogic/LoadSound.hs | 6 +++ src/Dodge/Update/Input/InGame.hs | 1 + src/Preload.hs | 13 +++-- src/Sound.hs | 4 +- src/Sound/Data.hs | 4 +- tags | 89 +++++++++++++++---------------- 8 files changed, 74 insertions(+), 63 deletions(-) diff --git a/src/Dodge/Menu.hs b/src/Dodge/Menu.hs index d4a8200a2..e4cec2451 100644 --- a/src/Dodge/Menu.hs +++ b/src/Dodge/Menu.hs @@ -190,7 +190,7 @@ gameOverMenu u = --charToScode = Scancode . fromIntegral . (\x -> x - 61) . fromEnum unpause :: Universe -> Universe -unpause = over uvWorld resumeSound . set uvScreenLayers [] +unpause = resumeSound . set uvScreenLayers [] -- note that this won't update after it is first loaded displayConfig :: Universe -> ScreenLayer diff --git a/src/Dodge/SoundLogic.hs b/src/Dodge/SoundLogic.hs index 0b2c14bb0..893f74587 100644 --- a/src/Dodge/SoundLogic.hs +++ b/src/Dodge/SoundLogic.hs @@ -27,23 +27,29 @@ import Control.Lens import Data.Int (Int16) import qualified Data.Map as M import Data.Maybe -import Dodge.Data.World +import Dodge.Data.Universe import Dodge.SoundLogic.LoadSound import Geometry.Data import Geometry.Vector import Sound.Data +import SDL.Mixer as Mix -- | Placeholder... haltSound :: World -> World -haltSound w = w +haltSound = id -- | Placeholder... -pauseSound :: World -> World -pauseSound w = w +pauseSound :: Universe -> Universe +pauseSound = uvIOEffects %~ \f u -> do + Mix.pause (-1) + f u -- | Placeholder... -resumeSound :: World -> World -resumeSound w = w +resumeSound :: Universe -> Universe +resumeSound = uvIOEffects %~ \f u -> do + Mix.resume (-1) + f u + soundWithStatusVolume :: -- | Volume factor, 0 - 1 diff --git a/src/Dodge/SoundLogic/LoadSound.hs b/src/Dodge/SoundLogic/LoadSound.hs index 9b558d9c6..a894f96e2 100644 --- a/src/Dodge/SoundLogic/LoadSound.hs +++ b/src/Dodge/SoundLogic/LoadSound.hs @@ -13,9 +13,15 @@ loadSound (i,s) = do chnk <- Mix.load $ "./data/sound/" ++ s return (i,chnk) +-- current thinking is to use group 0 for game sounds, group 1 for menu sounds loadSounds :: IO (IM.IntMap Mix.Chunk) loadSounds = do Mix.openAudio Mix.defaultAudio 128 + Mix.setChannels 32 + x <- Mix.groupSpan 0 0 29 + putStrLn $ show x <> " channels assigned to group 0" + y <- Mix.groupSpan 1 30 31 + putStrLn $ show y <> " channels assigned to group 1" fmap IM.fromList $ mapM loadSound $ zip [0..] soundPathList loadMusic :: IO (IM.IntMap Mix.Music) diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 1ec6aac5e..ad898779c 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -500,6 +500,7 @@ updateEnterRegex w = case w ^? hud . hudElement . subInventory of pauseGame :: Universe -> Universe pauseGame u = u & uvScreenLayers .~ [pauseMenu u] + & pauseSound spaceAction :: World -> World spaceAction w = case w ^. hud . hudElement of diff --git a/src/Preload.hs b/src/Preload.hs index b0b355fd4..f185ff61e 100644 --- a/src/Preload.hs +++ b/src/Preload.hs @@ -1,12 +1,11 @@ -module Preload - ( cleanUpPreload - ) - where +module Preload ( + cleanUpPreload, +) where + import Data.Preload import Preload.Render -import Sound.Data - import qualified SDL.Mixer as Mix +import Sound.Data cleanUpPreload :: PreloadData -> IO () cleanUpPreload pd = do @@ -14,4 +13,4 @@ cleanUpPreload pd = do cleanUpSoundPreload $ _soundData pd cleanUpSoundPreload :: SoundData -> IO () -cleanUpSoundPreload _ = Mix.closeAudio +cleanUpSoundPreload _ = Mix.closeAudio >> putStrLn "Audio closed" diff --git a/src/Sound.hs b/src/Sound.hs index 67ddff9e6..c6450d7a2 100644 --- a/src/Sound.hs +++ b/src/Sound.hs @@ -96,7 +96,7 @@ tryPlay sd s = do tryGetChannel :: Sound -> MaybeT IO Mix.Channel tryGetChannel s = case _soundChannel s of Just i -> return i - Nothing -> MaybeT $ Mix.getAvailable Mix.DefaultGroup + Nothing -> MaybeT $ Mix.getAvailable 0 -- 0 refers to the group for game sounds decrementTimer :: Sound -> IO Sound decrementTimer s = case _soundTime s of @@ -135,7 +135,7 @@ playSoundQueue chunkMap = mapM_ $ \n -> runMaybeT $ playIfFree (chunkMap IM.! n) times. Returns 'Just' the channel if succeeds. -} playIfFree :: Mix.Chunk -> Mix.Times -> MaybeT IO Mix.Channel playIfFree c times = do - i <- MaybeT $ Mix.getAvailable Mix.DefaultGroup + i <- MaybeT $ Mix.getAvailable 0 -- 0 refers to the group for game sounds liftIO $ Mix.playOn i times c ----------------------------------------------------------------- diff --git a/src/Sound/Data.hs b/src/Sound/Data.hs index 348bfd77a..5ebb32979 100644 --- a/src/Sound/Data.hs +++ b/src/Sound/Data.hs @@ -50,8 +50,8 @@ data Sound = Sound { _soundTime :: Maybe Int , _soundStatus :: SoundStatus , _soundChannel :: Maybe Mix.Channel - , _soundAngDist :: Maybe (Int16, Word8) -- why do BOTH of - , _soundPos :: Point2 -- these exist? + , _soundAngDist :: Maybe (Int16, Word8) + , _soundPos :: Point2 , _soundVolume :: Float , _soundVolumeFraction :: Float -- this needs cleaning up/combining , _soundChunkID :: SoundID diff --git a/tags b/tags index e94a8e4dd..06c92db51 100644 --- a/tags +++ b/tags @@ -3431,10 +3431,10 @@ applyNoDamage src/Dodge/Creature/Damage.hs 11;" f applyPastDamages src/Dodge/Creature/State.hs 142;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 197;" f +applyRecoil src/Dodge/HeldUse.hs 198;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 203;" f +applySidePush src/Dodge/HeldUse.hs 204;" f applySoundCME src/Dodge/HeldUse.hs 188;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f @@ -3443,7 +3443,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 214;" f +applyTorqueCME src/Dodge/HeldUse.hs 215;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 135;" f @@ -3524,7 +3524,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 21;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 314;" f +basicMuzFlare src/Dodge/HeldUse.hs 315;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 87;" f batteryPack src/Dodge/Item/Equipment.hs 55;" f @@ -3794,14 +3794,14 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 734;" f -createProjectileR src/Dodge/HeldUse.hs 699;" f +createProjectile src/Dodge/HeldUse.hs 738;" f +createProjectileR src/Dodge/HeldUse.hs 703;" f createShell src/Dodge/Projectile/Create.hs 22;" f createShieldWall src/Dodge/Euse.hs 107;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 10;" f -creatureShootLaser src/Dodge/HeldUse.hs 430;" f +creatureShootLaser src/Dodge/HeldUse.hs 432;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f @@ -3994,7 +3994,7 @@ detector src/Dodge/Item/Held/Utility.hs 41;" f detectorColor src/Dodge/Item/Draw/SPic.hs 445;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 216;" f -determineProjectileTracking src/Dodge/HeldUse.hs 682;" f +determineProjectileTracking src/Dodge/HeldUse.hs 686;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 204;" f @@ -4059,7 +4059,7 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 621;" f +doGenFloat src/Dodge/HeldUse.hs 625;" f doGravityPU src/Dodge/Projectile/Update.hs 50;" f doHeldUseEffect src/Dodge/HeldUse.hs 128;" f doInPlacements src/Dodge/Layout.hs 92;" f @@ -4255,7 +4255,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f dropByState src/Dodge/Creature/State.hs 130;" f dropExcept src/Dodge/Creature/Action.hs 167;" f -dropInventoryPath src/Dodge/HeldUse.hs 812;" f +dropInventoryPath src/Dodge/HeldUse.hs 816;" f dropItem src/Dodge/Creature/Action.hs 173;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 42;" f @@ -4359,7 +4359,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 72;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 40;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 56;" f flamerPic src/Dodge/Item/Draw/SPic.hs 379;" f -flareCircleAt src/Dodge/HeldUse.hs 295;" f +flareCircleAt src/Dodge/HeldUse.hs 296;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 50;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 20;" f @@ -4428,7 +4428,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 131;" f gameplayMenuOptions src/Dodge/Menu.hs 134;" f -gasCreate src/Dodge/HeldUse.hs 618;" f +gasCreate src/Dodge/HeldUse.hs 622;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4442,10 +4442,10 @@ geqConstr src/SameConstr.hs 21;" f getAmmoLinks src/Dodge/Item/Grammar.hs 132;" f getArguments src/Dodge/Update/Scroll.hs 176;" f getArguments' src/Dodge/Update/Scroll.hs 164;" f -getAttachedSFLink src/Dodge/HeldUse.hs 365;" f +getAttachedSFLink src/Dodge/HeldUse.hs 366;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 112;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulletType src/Dodge/HeldUse.hs 497;" f +getBulletType src/Dodge/HeldUse.hs 501;" f getCloseObj src/Dodge/Update/Input/InGame.hs 514;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -4455,17 +4455,17 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 14;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 383;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 727;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 731;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 141;" f -getLaserColor src/Dodge/HeldUse.hs 311;" f -getLaserDamage src/Dodge/HeldUse.hs 308;" f -getLaserPhaseV src/Dodge/HeldUse.hs 305;" f +getLaserColor src/Dodge/HeldUse.hs 312;" f +getLaserDamage src/Dodge/HeldUse.hs 309;" f +getLaserPhaseV src/Dodge/HeldUse.hs 306;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 380;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 719;" f +getPJStabiliser src/Dodge/HeldUse.hs 723;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 94;" f @@ -4675,7 +4675,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 56;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 23;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 321;" f +isAmmoIntLink src/Dodge/HeldUse.hs 322;" f isAnimate src/Dodge/Creature/Test.hs 138;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f @@ -4708,7 +4708,7 @@ itemBaseName src/Dodge/Item/Display.hs 57;" f itemBlips src/Dodge/RadarSweep.hs 93;" f itemCombinations src/Dodge/Combine/Combinations.hs 55;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f -itemDetectorEffect src/Dodge/HeldUse.hs 371;" f +itemDetectorEffect src/Dodge/HeldUse.hs 372;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 47;" f itemEquipPict src/Dodge/Item/Draw.hs 16;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 82;" f @@ -4768,7 +4768,6 @@ lampCrSPic src/Dodge/Render/ShapePicture.hs 56;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 405;" f -lasRayAt src/Dodge/HeldUse.hs 474;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f lasTunnel src/Dodge/Room/LasTurret.hs 126;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f @@ -4827,7 +4826,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 393;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f -loadMuzzle src/Dodge/HeldUse.hs 231;" f +loadMuzzle src/Dodge/HeldUse.hs 232;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4882,8 +4881,8 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 569;" f -makeBullet' src/Dodge/HeldUse.hs 555;" f +makeBullet src/Dodge/HeldUse.hs 573;" f +makeBullet' src/Dodge/HeldUse.hs 559;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4909,7 +4908,7 @@ makeFragBullets src/Dodge/Bullet.hs 122;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 34;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 253;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 254;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4965,11 +4964,11 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 124;" f mcSPic src/Dodge/Render/ShapePicture.hs 120;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 87;" f mcSensorUpdate src/Dodge/Machine/Update.hs 119;" f -mcShootAuto src/Dodge/HeldUse.hs 653;" f -mcShootLaser src/Dodge/HeldUse.hs 645;" f +mcShootAuto src/Dodge/HeldUse.hs 657;" f +mcShootLaser src/Dodge/HeldUse.hs 649;" f mcTriggerVal src/Dodge/Machine/Update.hs 93;" f mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f -mcUseHeld src/Dodge/HeldUse.hs 588;" f +mcUseHeld src/Dodge/HeldUse.hs 592;" f mcUseItem src/Dodge/Machine/Update.hs 79;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 76;" f @@ -5062,7 +5061,7 @@ multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 34;" f multiLookupTrieI src/SimpleTrie.hs 43;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 281;" f +muzFlareAt src/Dodge/HeldUse.hs 282;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f @@ -5477,7 +5476,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteDetonator src/Dodge/Item/Scope.hs 145;" f remoteScreen src/Dodge/Item/Scope.hs 140;" f removeAimPosture src/Dodge/Creature/YourControl.hs 142;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 484;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 488;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Euse.hs 125;" f @@ -5755,14 +5754,14 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 308;" f shineTorch src/Dodge/Creature/State.hs 350;" f -shootBullet src/Dodge/HeldUse.hs 544;" f +shootBullet src/Dodge/HeldUse.hs 548;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 456;" f +shootLaser src/Dodge/HeldUse.hs 457;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 670;" f +shootTeslaArc src/Dodge/HeldUse.hs 674;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 408;" f +shootTractorBeam src/Dodge/HeldUse.hs 409;" f shootersRoom src/Dodge/Room/Room.hs 315;" f shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f @@ -5830,7 +5829,7 @@ soundContinueVol src/Dodge/SoundLogic.hs 139;" f soundIsClose src/Dodge/Creature/Perception.hs 183;" f soundMenu src/Dodge/Menu.hs 137;" f soundMenuOptions src/Dodge/Menu.hs 140;" f -soundMultiFrom src/Dodge/SoundLogic.hs 173;" f +soundMultiFrom src/Dodge/SoundLogic.hs 181;" f soundOriginIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f soundOriginsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f soundPathList src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 224;" f @@ -5917,7 +5916,7 @@ stoneWallDamage src/Dodge/Wall/DamageEffect.hs 24;" f stopAllSounds src/Sound.hs 124;" f stopBulletAt src/Dodge/Bullet.hs 190;" f stopPushing src/Dodge/Block.hs 107;" f -stopSoundFrom src/Dodge/SoundLogic.hs 206;" f +stopSoundFrom src/Dodge/SoundLogic.hs 214;" f strFromEquipment src/Dodge/Creature/Statistics.hs 17;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 29;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f @@ -6061,7 +6060,7 @@ torqueCr src/Dodge/WorldEffect.hs 67;" f torso src/Dodge/Creature/Picture.hs 105;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 419;" f +tractorBeamAt src/Dodge/HeldUse.hs 421;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 68;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 429;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -6301,26 +6300,26 @@ useBulletPayload src/Dodge/Bullet.hs 111;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 34;" f -useGasParams src/Dodge/HeldUse.hs 593;" f +useGasParams src/Dodge/HeldUse.hs 597;" f useHotkey src/Dodge/Creature/YourControl.hs 65;" f -useInventoryPath src/Dodge/HeldUse.hs 837;" f +useInventoryPath src/Dodge/HeldUse.hs 841;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 325;" f +useLoadedAmmo src/Dodge/HeldUse.hs 326;" f useLocation src/Dodge/Creature/Impulse/UseItem.hs 66;" f useMagShield src/Dodge/Euse.hs 46;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 803;" f +useRewindGun src/Dodge/HeldUse.hs 807;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useStopWatch src/Dodge/HeldUse.hs 784;" f +useStopWatch src/Dodge/HeldUse.hs 788;" f useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/HeldUse.hs 94;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 792;" f +useTimeScrollGun src/Dodge/HeldUse.hs 796;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f @@ -6355,7 +6354,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 31;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 340;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 386;" f +walkNozzle src/Dodge/HeldUse.hs 387;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 51;" f