From cae02d80081d6209e982b7bc81e659328aef28b7 Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 23 Dec 2024 13:02:56 +0000 Subject: [PATCH] Move optic zoom scrolling to item scrolling function Zoom scrolling behaviour has slightly changed, I'm not sure how I want it to work yet though --- src/Dodge/Update/Camera.hs | 51 ++---------------------------- src/Dodge/Update/Scroll.hs | 62 +++++++++++++++++++++++++++++++++++- tags | 64 ++++++++++++++++++++------------------ 3 files changed, 97 insertions(+), 80 deletions(-) diff --git a/src/Dodge/Update/Camera.hs b/src/Dodge/Update/Camera.hs index 308317e84..30ea3353d 100644 --- a/src/Dodge/Update/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -64,15 +64,16 @@ translateFloatingCameraKeys theinput = (camCenter -~ thetran) . (camViewFrom -~ zoomFloatingCamera :: Input -> Camera -> Camera zoomFloatingCamera theinput | ButtonRight `M.member` (theinput ^. mouseButtons) = - camZoom *~ (zoomSpeed ^^ negate (getSmoothScrollValue theinput)) + camZoom *~ (39/40 ^^ negate (getSmoothScrollValue theinput)) | otherwise = id +-- the 39/40 is taken from zoomSpeed updateInGameCamera :: Configuration -> World -> World updateInGameCamera cfig w = w & updateBounds cfig & wCam %~ moveZoomCamera cfig (w ^. input) (you w) w - & updateScopeZoom +-- & updateScopeZoom & rotateCamera cfig & over wCam (setViewDistance cfig) -- I think this should be updated after the zoom? @@ -128,52 +129,6 @@ moveZoomCamera cfig theinput cr w campos = viewDistanceFromItems :: Creature -> Float viewDistanceFromItems _ = 1 --- note that your _crInvLock does not apply to this TODO check that this is what --- is wanted -updateScopeZoom :: World -> World -updateScopeZoom w = fromMaybe w $ do - i <- you w ^? crManipulation . manObject . imSelectedItem - return $ updateScopeZoom' i w - -updateScopeZoom' :: Int -> World -> World -updateScopeZoom' i w - | SDL.ButtonRight `M.member` _mouseButtons (_input w) = - w & wppointer %~ doScopeZoom (w ^. input . smoothScrollAmount) (w ^. input . mousePos) - | otherwise = w & wppointer %~ resetscope - where - wppointer = cWorld . lWorld . creatures . ix 0 . crInv . ix i . itUse . uScope - resetscope (OpticScope _ _ defz) = OpticScope (V2 0 0) defz defz - -doScopeZoom :: Int -> Point2 -> Scope -> Scope -doScopeZoom scrollamount mp sc = case scrollamount of - x - | x > 10 -> (zoomInLongGun mp . zoomInLongGun mp . zoomInLongGun mp) sc - | x > 5 -> (zoomInLongGun mp . zoomInLongGun mp) sc - | x > 0 -> zoomInLongGun mp sc - | x < -10 -> (zoomOutLongGun . zoomOutLongGun . zoomOutLongGun) sc - | x < -5 -> (zoomOutLongGun . zoomOutLongGun) sc - | x < 0 -> zoomOutLongGun sc - | otherwise -> sc - -zoomSpeed :: Float -zoomSpeed = 39 / 40 - -zoomInLongGun :: Point2 -> Scope -> Scope -zoomInLongGun mousep sc = fromMaybe sc $ do - curzoom <- sc ^? opticZoom - guard $ curzoom < 8 - return $ - sc & opticPos .+.+~ (1 - zoomSpeed) * zoomSpeed / curzoom *.* mousep - & opticZoom %~ (/ zoomSpeed) - -zoomOutLongGun :: Scope -> Scope -zoomOutLongGun sc = fromMaybe sc $ do - curzoom <- sc ^? opticZoom - guard $ curzoom > 0.5 - return $ - sc & opticPos %~ (\p -> p +.+ (zoomSpeed - 1) / curzoom *.* p) - & opticZoom *~ zoomSpeed - ifConfigWallRotate :: Configuration -> M.Map MouseButton Int -> World -> World ifConfigWallRotate cfig mbs | _gameplay_rotate_to_wall cfig && not (SDL.ButtonRight `M.member` mbs) = diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index eefc696f0..8edae84f5 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -2,6 +2,8 @@ module Dodge.Update.Scroll ( updateWheelEvent, ) where +import Control.Monad +import Geometry import qualified Data.Map.Strict as M import Data.Maybe import Dodge.Base @@ -31,7 +33,7 @@ updateWheelEvent yi w = case w ^. hud . hudElement of -- (Just (invid,hs), _) -> doHeldScroll invid hs y w | bdown ButtonRight -> case _rbOptions w of EquipOptions{} -> w & rbOptions . opSel %~ scrollRBOption yi rbscrollmax - NoRightButtonOptions -> w + NoRightButtonOptions -> selectedItemScroll yi w | bdown ButtonLeft -> w & wCam . camZoom +~ y | invKeyDown -> changeSwapSel yi w | otherwise -> scrollAugInvSel yi w @@ -55,6 +57,64 @@ updateWheelEvent yi w = case w ^. hud . hudElement of bdown b = b `M.member` _mouseButtons (_input w) invKeyDown = ScancodeCapsLock `M.member` _pressedKeys (_input w) +selectedItemScroll :: Int -> World -> World +selectedItemScroll scrollamount w = fromMaybe w $ do + i <- you w ^? crManipulation . manObject . imSelectedItem + itm <- you w ^? crInv . ix i + return $ itemScroll scrollamount itm w + +itemScroll :: Int -> Item -> World -> World +itemScroll yi itm w = case itm ^. itType of + ATTACH ZOOMSCOPE -> updateScopeZoom w + _ -> w + +-- note that your _crInvLock does not apply to this TODO check that this is what +-- is wanted +updateScopeZoom :: World -> World +updateScopeZoom w = fromMaybe w $ do + i <- you w ^? crManipulation . manObject . imSelectedItem + return $ updateScopeZoom' i w + +updateScopeZoom' :: Int -> World -> World +updateScopeZoom' i w + | SDL.ButtonRight `M.member` _mouseButtons (_input w) = + w & wppointer %~ doScopeZoom (w ^. input . smoothScrollAmount) (w ^. input . mousePos) + | otherwise = w & wppointer %~ resetscope + where + wppointer = cWorld . lWorld . creatures . ix 0 . crInv . ix i . itUse . uScope + resetscope (OpticScope _ _ defz) = OpticScope (V2 0 0) defz defz + +doScopeZoom :: Int -> Point2 -> Scope -> Scope +doScopeZoom scrollamount mp sc = case scrollamount of + x + | x > 10 -> (zoomInLongGun mp . zoomInLongGun mp . zoomInLongGun mp) sc + | x > 5 -> (zoomInLongGun mp . zoomInLongGun mp) sc + | x > 0 -> zoomInLongGun mp sc + | x < -10 -> (zoomOutLongGun . zoomOutLongGun . zoomOutLongGun) sc + | x < -5 -> (zoomOutLongGun . zoomOutLongGun) sc + | x < 0 -> zoomOutLongGun sc + | otherwise -> sc + +zoomSpeed :: Float +zoomSpeed = 39 / 40 + +zoomInLongGun :: Point2 -> Scope -> Scope +zoomInLongGun mousep sc = fromMaybe sc $ do + curzoom <- sc ^? opticZoom + guard $ curzoom < 8 + return $ + sc & opticPos .+.+~ (1 - zoomSpeed) * zoomSpeed / curzoom *.* mousep + & opticZoom %~ (/ zoomSpeed) + +zoomOutLongGun :: Scope -> Scope +zoomOutLongGun sc = fromMaybe sc $ do + curzoom <- sc ^? opticZoom + guard $ curzoom > 0.5 + return $ + sc & opticPos %~ (\p -> p +.+ (zoomSpeed - 1) / curzoom *.* p) + & opticZoom *~ zoomSpeed + + moveCombineSel :: Int -> World -> World moveCombineSel yi = ( hud . hudElement . subInventory %~ doscroll diff --git a/tags b/tags index 4c2e98d90..23766fbd5 100644 --- a/tags +++ b/tags @@ -3403,7 +3403,7 @@ autoDetector src/Dodge/Item/Weapon/Radar.hs 11;" f autoEffect src/Dodge/Item/Weapon/ExtraEffect.hs 18;" f autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f autoPistol src/Dodge/Item/Held/Stick.hs 58;" f -autoRifle src/Dodge/Item/Held/Cane.hs 76;" f +autoRifle src/Dodge/Item/Held/Cane.hs 77;" f awakeLevelPerception src/Dodge/Creature/Perception.hs 162;" f axisInt src/Geometry/Intersect.hs 227;" f azure src/Color.hs 22;" f @@ -3507,7 +3507,7 @@ bulletPayloadModule src/Dodge/Item/Scope.hs 44;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 121;" f bulletTargetingModule src/Dodge/Item/Scope.hs 41;" f bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f -burstRifle src/Dodge/Item/Held/Cane.hs 82;" f +burstRifle src/Dodge/Item/Held/Cane.hs 83;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 520;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f @@ -3585,7 +3585,7 @@ cleatSide src/Dodge/Cleat.hs 27;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f clickGetCreature src/Dodge/Debug.hs 83;" f clipV src/Geometry/Vector.hs 47;" f -clipZoom src/Dodge/Update/Camera.hs 221;" f +clipZoom src/Dodge/Update/Camera.hs 175;" f clockCycle src/Dodge/Clock.hs 9;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 71;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 56;" f @@ -3929,7 +3929,7 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 226;" f displayIndents src/Dodge/DisplayInventory.hs 123;" f -displayPulse src/Dodge/Item/Display.hs 93;" f +displayPulse src/Dodge/Item/Display.hs 97;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f displayTerminalLineString src/Dodge/Update.hs 443;" f dist src/Geometry/Vector.hs 179;" f @@ -3999,7 +3999,7 @@ doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f doRoomShift src/Dodge/Room/Link.hs 33;" f -doScopeZoom src/Dodge/Update/Camera.hs 147;" f +doScopeZoom src/Dodge/Update/Scroll.hs 85;" f doSectionSize src/Dodge/DisplayInventory.hs 248;" f doSideEffects appDodge/Main.hs 118;" f doStep src/Dodge/ArcStep.hs 9;" f @@ -4013,7 +4013,7 @@ doThrust src/Dodge/Projectile/Update.hs 74;" f doTimeScroll src/Dodge/Update.hs 206;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 101;" f -doWallRotate src/Dodge/Update/Camera.hs 194;" f +doWallRotate src/Dodge/Update/Camera.hs 148;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f @@ -4227,14 +4227,14 @@ fadeTLS src/Dodge/LightSource/Update.hs 14;" f fallSmallBounce src/Dodge/Prop/Moving.hs 28;" f fallSmallBounce' src/Dodge/Prop/Moving.hs 33;" f fallSmallBounceDamage src/Dodge/Prop/Moving.hs 11;" f -farWallDistDirection src/Dodge/Update/Camera.hs 232;" f +farWallDistDirection src/Dodge/Update/Camera.hs 186;" f fdiv src/ShortShow.hs 27;" f feet src/Dodge/Creature/Picture.hs 53;" f ffoldM src/Framebuffer/Update.hs 79;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 193;" f findBlips src/Dodge/RadarSweep.hs 44;" f -findBoundDists src/Dodge/Update/Camera.hs 241;" f +findBoundDists src/Dodge/Update/Camera.hs 195;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findIndex src/IntMapHelp.hs 85;" f @@ -4336,8 +4336,8 @@ geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAmmoLinks src/Dodge/Item/Grammar.hs 81;" f -getArguments src/Dodge/Update/Scroll.hs 152;" f -getArguments' src/Dodge/Update/Scroll.hs 140;" f +getArguments src/Dodge/Update/Scroll.hs 210;" f +getArguments' src/Dodge/Update/Scroll.hs 198;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulletTrajectory src/Dodge/HeldUse.hs 430;" f getBulletType src/Dodge/HeldUse.hs 404;" f @@ -4402,7 +4402,7 @@ gridPoints'' src/Grid.hs 74;" f gridPointsOff src/Grid.hs 62;" f groupSplitItemAmounts src/Dodge/Combine.hs 51;" f gruntS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f -guardDisconnectedID src/Dodge/Update/Scroll.hs 73;" f +guardDisconnectedID src/Dodge/Update/Scroll.hs 131;" f gut1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 536;" f gut2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 388;" f gut3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f @@ -4470,7 +4470,7 @@ humanoidAIList src/Dodge/Humanoid.hs 181;" f iShape src/Dodge/Placement/Instance/LightSource.hs 73;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f -ifConfigWallRotate src/Dodge/Update/Camera.hs 177;" f +ifConfigWallRotate src/Dodge/Update/Camera.hs 131;" f ildtPropagate src/Dodge/DoubleTree.hs 57;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f inLink src/Dodge/RoomLink.hs 113;" f @@ -4607,6 +4607,7 @@ itemNumberDisplay src/Dodge/Item/Display.hs 82;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f +itemScroll src/Dodge/Update/Scroll.hs 64;" f itemString src/Dodge/Item/Display.hs 47;" f itemToBreakLists src/Dodge/Item/Grammar.hs 50;" f itemToFunction src/Dodge/Item/Grammar.hs 87;" f @@ -4836,7 +4837,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 583;" f maybeOpenTerminal src/Dodge/Update.hs 123;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 111;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 99;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 103;" f mcApplyDamage src/Dodge/Machine/Update.hs 108;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f @@ -4889,7 +4890,7 @@ minCrIXOn src/Dodge/Zoning/Creature.hs 45;" f minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f miniGunCrit src/Dodge/Creature.hs 62;" f -miniGunX src/Dodge/Item/Held/Cane.hs 95;" f +miniGunX src/Dodge/Item/Held/Cane.hs 96;" f miniGunXPict src/Dodge/Item/Draw/SPic.hs 345;" f miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 340;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f @@ -4920,7 +4921,7 @@ mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 58;" f mouseCursorType src/Dodge/Render/Picture.hs 80;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f moveBullet src/Dodge/Bullet.hs 182;" f -moveCombineSel src/Dodge/Update/Scroll.hs 58;" f +moveCombineSel src/Dodge/Update/Scroll.hs 116;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 53;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f @@ -4984,7 +4985,7 @@ normalizeAnglePi src/Dodge/Base.hs 132;" f normalizeColor src/Color.hs 76;" f normalizeV src/Geometry/Vector.hs 43;" f normalizeV3 src/Geometry/Vector3D.hs 84;" f -nullCommand src/Dodge/Update/Scroll.hs 143;" f +nullCommand src/Dodge/Update/Scroll.hs 201;" f numColor src/Color.hs 128;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLushort src/Shader/Parameters.hs 29;" f @@ -5436,15 +5437,15 @@ rotate3 src/Geometry/Vector3D.hs 48;" f rotate3x src/Geometry/Vector3D.hs 60;" f rotate3y src/Geometry/Vector3D.hs 66;" f rotate3z src/Geometry/Vector3D.hs 54;" f -rotateCamera src/Dodge/Update/Camera.hs 208;" f -rotateCameraBy src/Dodge/Update/Camera.hs 205;" f +rotateCamera src/Dodge/Update/Camera.hs 162;" f +rotateCameraBy src/Dodge/Update/Camera.hs 159;" f rotateProp src/Dodge/Prop/Update.hs 49;" f rotateSH src/Shape.hs 256;" f rotateSHq src/Shape.hs 165;" f rotateSHx src/Shape.hs 264;" f rotateSP src/ShapePicture.hs 57;" f rotateTo src/Polyhedra/Geodesic.hs 64;" f -rotateToOverlappingWall src/Dodge/Update/Camera.hs 183;" f +rotateToOverlappingWall src/Dodge/Update/Camera.hs 137;" f rotateToZ src/Quaternion.hs 34;" f rotateV src/Geometry/Vector.hs 105;" f rotateVAround src/Geometry/Vector.hs 112;" f @@ -5496,10 +5497,10 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f scrollAugInvSel src/Dodge/Inventory.hs 199;" f scrollAugNextInSection src/Dodge/Inventory.hs 212;" f -scrollCommandStrings src/Dodge/Update/Scroll.hs 135;" f -scrollCommands src/Dodge/Update/Scroll.hs 132;" f +scrollCommandStrings src/Dodge/Update/Scroll.hs 193;" f +scrollCommands src/Dodge/Update/Scroll.hs 190;" f scrollDebugInfoInt src/Dodge/Debug.hs 47;" f -scrollRBOption src/Dodge/Update/Scroll.hs 109;" f +scrollRBOption src/Dodge/Update/Scroll.hs 167;" f scrollSelectionSections src/Dodge/SelectionSections.hs 26;" f scrollTimeBack src/Dodge/Update.hs 216;" f scrollTimeForward src/Dodge/Update.hs 238;" f @@ -5529,6 +5530,7 @@ selSecSelSize src/Dodge/SelectionSections.hs 180;" f selSecYint src/Dodge/SelectionSections.hs 189;" f selectCreatureDebugItem src/Dodge/Debug.hs 39;" f selectUse src/Dodge/SelectUse.hs 10;" f +selectedItemScroll src/Dodge/Update/Scroll.hs 58;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f senseDamage src/Dodge/Machine/Update.hs 154;" f @@ -5572,7 +5574,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 74;" f setTile src/Dodge/Layout.hs 68;" f setTiles src/Dodge/Layout.hs 65;" f setToggle src/Dodge/Prop/Update.hs 46;" f -setViewDistance src/Dodge/Update/Camera.hs 227;" f +setViewDistance src/Dodge/Update/Camera.hs 181;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 61;" f setViewport src/Dodge/Render.hs 388;" f setVol src/Dodge/Config/Update.hs 30;" f @@ -5844,7 +5846,7 @@ terminalReturnEffect src/Dodge/Terminal.hs 276;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f -terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f +terminalWheelEvent src/Dodge/Update/Scroll.hs 136;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 387;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f @@ -6032,7 +6034,7 @@ updateAttachedItems src/Dodge/Creature/State.hs 256;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f -updateBounds src/Dodge/Update/Camera.hs 251;" f +updateBounds src/Dodge/Update/Camera.hs 205;" f updateBulVel src/Dodge/Bullet.hs 40;" f updateBullet src/Dodge/Bullet.hs 23;" f updateBullets src/Dodge/Update.hs 541;" f @@ -6108,8 +6110,8 @@ updateRadarSweeps src/Dodge/Update.hs 561;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 106;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f -updateScopeZoom src/Dodge/Update/Camera.hs 133;" f -updateScopeZoom' src/Dodge/Update/Camera.hs 138;" f +updateScopeZoom src/Dodge/Update/Scroll.hs 71;" f +updateScopeZoom' src/Dodge/Update/Scroll.hs 76;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 301;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 274;" f @@ -6331,8 +6333,8 @@ zoneWall src/Dodge/Zoning/Wall.hs 65;" f zonesAroundPoint src/Dodge/Zoning/Base.hs 89;" f zonesExtract src/Dodge/Zoning/Base.hs 54;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 64;" f -zoomFromItem src/Dodge/Update/Camera.hs 217;" f -zoomInLongGun src/Dodge/Update/Camera.hs 161;" f -zoomOutLongGun src/Dodge/Update/Camera.hs 169;" f +zoomFromItem src/Dodge/Update/Camera.hs 171;" f +zoomInLongGun src/Dodge/Update/Scroll.hs 99;" f +zoomOutLongGun src/Dodge/Update/Scroll.hs 107;" f zoomScope src/Dodge/Item/Scope.hs 17;" f -zoomSpeed src/Dodge/Update/Camera.hs 158;" f +zoomSpeed src/Dodge/Update/Scroll.hs 96;" f