diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 516dca8d2..a2b1acf65 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -63,7 +63,6 @@ tryPutItemInInvAt mcipos i itid w = do (j, w') <- tryPutItemInInv mcipos itid w guard (i <= _unNInt j) return $ foldr f w' [i + 1 .. _unNInt j] --- return $ w' where f j = swapInvItems (\_ _ -> Just (j -1)) j @@ -84,7 +83,3 @@ pickUpItemAt :: Int -> (Int,Int) -> World -> World pickUpItemAt invid (i,itid) w = fromMaybe w $ do p <- w ^? cWorld . lWorld . floorItems . ix itid . flItPos soundStart (CrSound 0) p pickUpS Nothing <$> tryPutItemInInvAt (Just i) invid itid w --- & _Just . hud . diSections . ix 0 . ssSet %~ IS.map f - where - f j | j >= invid = j +1 - | otherwise = j diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 63d05cb44..0ca540d0b 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -24,7 +24,7 @@ import Dodge.Data.DoubleTree import Dodge.Data.EquipType import Dodge.Data.SelectionList import Dodge.Data.Terminal.Status -import Dodge.Data.World +import Dodge.Data.Universe import Dodge.DoubleTree import Dodge.Equipment.Text import Dodge.Inventory @@ -50,26 +50,29 @@ import NewInt import Picture import SDL (MouseButton (..)) -drawHUD :: Config -> World -> Picture -drawHUD cfig w = - drawInventory (w ^. hud . diSections) w cfig subinv +drawHUD :: Universe -> Picture +drawHUD u = + drawInventory (w ^. hud . diSections) u cfig subinv <> drawSubInventory subinv cfig w where + w = u ^. uvWorld + cfig = u ^. uvConfig subinv = w ^. hud . subInventory -drawInventory :: IMSS () -> World -> Config -> SubInventory -> Picture -drawInventory sss w cfig = \case +drawInventory :: IMSS () -> Universe -> Config -> SubInventory -> Picture +drawInventory sss u cfig = \case DisplayTerminal{} -> drawSelectionSections sss invDP cfig <> itemconnections - <> drawMouseOver cfig w + <> drawMouseOver u _ -> drawSelectionSections sss invDP cfig <> foldMap (drawSSCursor sss invDP curs cfig) (w ^. hud . diSelection) <> drawRootCursor w sss (w ^. hud . diSelection) invDP cfig <> itemconnections - <> drawMouseOver cfig w + <> drawMouseOver u where + w = u ^. uvWorld curs = invCursorParams w itemconnections = fromMaybe mempty $ do inv' <- w ^? cWorld . lWorld . creatures . ix 0 . crInv @@ -104,12 +107,14 @@ getRootItemBounds i inv = do y <- locDTLeftmost root ^? locDT . dtValue . _1 . itLocation . ilInvID . unNInt return (x, y) -drawMouseOver :: Config -> World -> Picture -drawMouseOver cfig w = +drawMouseOver :: Universe -> Picture +drawMouseOver u = concat - (invsel <|> combinvsel <|> drawDragSelecting cfig w) + (invsel <|> combinvsel <|> drawDragSelecting u) <> concat (drawDragSelected cfig w) where + w = u ^. uvWorld + cfig = u ^. uvConfig invsel = do (j, i) <- w ^? input . mouseContext . mcoInvSelect @@ -148,13 +153,14 @@ drawDragSelected cfig w = do <> IS.foldr (f 3) mempty ys3 <> IS.foldr (f 5) mempty ys5 -drawDragSelecting :: Config -> World -> Maybe Picture -drawDragSelecting cfig w = do +drawDragSelecting :: Universe -> Maybe Picture +drawDragSelecting u = do x <- w ^? input . mouseContext . mcoSecSelStart sss <- w ^? hud . diSections - y <- inverseSelNumPos cfig invDP (w^.input.mousePos) sss +-- y <- inverseSelNumPos cfig invDP (w^.input.mousePos) sss + y <- mouseInvPosFixWidth u let f i ss - | i ==0 || i == 3 = IM.foldMapWithKey (\j _ -> selSecDrawCursor invDP BackdropCurs sss (Sel i j)) + | i ==0 || i == 3 = IM.foldMapWithKey (\j _ -> selSecDrawCursor' invDP BackdropCurs sss (Sel i j)) (ss ^. ssItems) | otherwise = mempty return @@ -162,6 +168,9 @@ drawDragSelecting cfig w = do . color (0.2 *^ white) . IM.foldMapWithKey f $ sssSelectionSlice sss x y + where + w = u ^. uvWorld + cfig = u ^. uvConfig drawSubInventory :: SubInventory -> Config -> World -> Picture drawSubInventory subinv cfig w = case subinv of diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index cb181eb16..e75b9cfed 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -12,6 +12,7 @@ module Dodge.Render.List ( toTopLeft, listCursor, selSecDrawCursor, + selSecDrawCursor', drawTitleBackground, -- should be renamed, made sensible drawCursorAt, drawLabelledList, @@ -116,6 +117,26 @@ selSecDrawCursor ldp curs sss sel = fold $ do (_siWidth si) (_siHeight si) +selSecDrawCursor' :: LDParams -> CursorDisplay -> IMSS a -> Selection -> Picture +selSecDrawCursor' ldp curs sss sel = fold $ do + let i = sel ^. slSec + j = sel ^. slInt + yint <- selSecYint i j sss + sindent <- sss ^? ix i . ssIndent + si <- sss ^? ix i . ssItems . ix j + return $ + listCursor + (ldp ^. ldpVerticalGap) + (ldp ^. ldpScale) + curs + yint + --(_siOffX si) + sindent + (_siColor si) + --(_siWidth si + sindent) + 16 + (_siHeight si) + -- displays a cursor that should match up to list text pictures listCursor :: Float -> diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index 0aceba116..48d24ebe1 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -67,9 +67,10 @@ fpsText x = scale 0.2 0.2 . color col . text $ "ms/frame " ++ show x | x < 50 = orange | otherwise = red +-- why config and universe here? drawMenuOrHUD :: Config -> Universe -> Picture drawMenuOrHUD cf u = case u ^. uvScreenLayers of - [] -> drawHUD (u ^. uvConfig) (u ^. uvWorld) + [] -> drawHUD u (x : _) -> drawMenuScreen (u ^? uvWorld . input . mouseContext . mcoMenuClick . _Just) x cf drawConcurrentMessage :: Universe -> Picture diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 4747db1fa..da12e6eb1 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -8,11 +8,15 @@ module Dodge.SelectionSections ( inverseSelSecYint, posSelSecYint, inverseSelNumPos, + inverseSelNumPosFixedWidth, + mouseInvPosFixWidth, ssLookupGE, ssLookupLE, sssSelectionSlice, ) where +import Dodge.ListDisplayParams +import Dodge.Data.Universe import Control.Applicative import qualified Control.Foldl as L import Control.Lens @@ -229,10 +233,42 @@ inverseSelSecYintXPosCheck cfig ldp x yint sss = do guard $ x - x1 < 160 && x > x1 return sel +inverseSelSecYintXPosCheckFixedWidth :: + Config -> LDParams -> Float -> Int -> IMSS a -> Maybe (XInfinity (Int, Int)) +inverseSelSecYintXPosCheckFixedWidth cfig ldp x yint sss = do + let sel = inverseSelSecYint yint sss + (i,j) <- case sel of + NonInf v -> Just v + NegInf -> do + (i',j',_) <- ssLookupMin sss + return (i',j') + PosInf -> do + (i',j',_) <- ssLookupMax sss + return (i',j') + let V2 x0 _ = screenPosAbs cfig (ldp ^. ldpPos) + sindent <- sss ^? ix i . ssIndent + itindent <- sss ^? ix i . ssItems . ix j . siOffX + --let x1 = x0 + _ldpScale ldp * 10 * (fromIntegral (sindent + itindent) - 0.5) + let x1 = x0 + _ldpScale ldp * 10 * (fromIntegral (sindent) - 0.5) + guard $ x - x1 < 170 && x > x1 + return sel + +mouseInvPosFixWidth :: Universe -> Maybe (XInfinity (Int,Int)) +mouseInvPosFixWidth u = inverseSelNumPosFixedWidth + (u^.uvConfig) + invDP + (u^.uvWorld. input . mousePos) + (u ^.uvWorld. hud . diSections) + + inverseSelNumPos :: Config -> LDParams -> Point2 -> IMSS a -> Maybe (XInfinity (Int, Int)) inverseSelNumPos cfig ldp (V2 x y) = inverseSelSecYintXPosCheck cfig ldp x (posSelSecYint cfig ldp y) +inverseSelNumPosFixedWidth :: Config -> LDParams -> Point2 -> IMSS a -> Maybe (XInfinity (Int, Int)) +inverseSelNumPosFixedWidth cfig ldp (V2 x y) = + inverseSelSecYintXPosCheckFixedWidth cfig ldp x (posSelSecYint cfig ldp y) + sssSelectionSlice :: IMSS a -> XInfinity (Int,Int) -> XInfinity (Int,Int) -> IMSS a sssSelectionSlice sss x1 x2 = fromMaybe mempty $ do let (xmin,xmax) | x1 < x2 = (x1,x2) diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 6df077561..c1ecfb2e7 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -133,8 +133,7 @@ doDrag n k u = fromMaybe u $ do tryDropSelected :: Universe -> Maybe Universe tryDropSelected u = do - let mi = mouseInvPos u ^? _Just . nonInf . _1 - guard $ maybe True (== 3) mi + guard $ maybe True (== 3) $ mouseInvPos u ^? _Just . nonInf . _1 cr <- w ^? cWorld . lWorld . creatures . ix 0 Sel 0 j <- w ^. hud . diSelection xs <- selectionSet $ u ^. uvWorld . hud @@ -194,7 +193,7 @@ updateMouseReleaseInGame u = uvWorld . input . mouseContext .~ MouseInGame doDragSelect :: XInfinity (Int, Int) -> Universe -> Universe doDragSelect x u = fromMaybe u $ do sss <- u ^? uvWorld . hud . diSections - y <- mouseInvPos u + y <- mouseInvPosFixWidth u return $ IM.foldlWithKey' f u $ sssSelectionSlice sss x y where f u' i ss diff --git a/tags b/tags index 249b5e768..21131b64e 100644 --- a/tags +++ b/tags @@ -2639,7 +2639,7 @@ addZ src/Geometry/Vector3D.hs 90;" f adjustIMZone src/Dodge/Base.hs 81;" f advanceScrollAmount src/Dodge/Update.hs 501;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f -aimDelaySweep src/Dodge/Render/Picture.hs 295;" f +aimDelaySweep src/Dodge/Render/Picture.hs 296;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 150;" f airlock src/Dodge/Room/Airlock.hs 28;" f @@ -2909,7 +2909,7 @@ checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f chestPQ src/Dodge/Creature/HandPos.hs 180;" f -chooseCursorBorders src/Dodge/Render/List.hs 141;" f +chooseCursorBorders src/Dodge/Render/List.hs 162;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 42;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 178;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 48;" f @@ -2948,7 +2948,7 @@ clockCycle src/Dodge/Clock.hs 7;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 241;" f closeItemDist src/Dodge/Inventory.hs 122;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 220;" f -closeObjectInfo src/Dodge/Render/HUD.hs 221;" f +closeObjectInfo src/Dodge/Render/HUD.hs 230;" f closestCrToMouse src/Dodge/Debug.hs 308;" f closestPointOnLine src/Geometry/Intersect.hs 286;" f closestPointOnLineParam src/Geometry/Intersect.hs 302;" f @@ -2983,7 +2983,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 44;" f combineAwareness src/Dodge/Creature/Perception.hs 119;" f combineFloors src/Dodge/Room/Procedural.hs 154;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 335;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 344;" f combineItemListYouX src/Dodge/Combine.hs 36;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 134;" f @@ -3010,7 +3010,7 @@ connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 802;" f constructEdges src/Polyhedra.hs 31;" f constructEdgesList src/Polyhedra.hs 40;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 58;" f -continueTerminal src/Dodge/Update/Input/InGame.hs 404;" f +continueTerminal src/Dodge/Update/Input/InGame.hs 399;" f convexHull src/Geometry/Polygon.hs 150;" f convexHullSafe src/Geometry/Polygon.hs 172;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 48;" f @@ -3152,7 +3152,7 @@ cylinderIndices src/Shader/Poke.hs 391;" f cylinderOnSeg src/Geometry.hs 122;" f cylinderPoly src/Shape.hs 79;" f cylinderRoundIndices src/Shader/Poke.hs 398;" f -dShadCol src/Dodge/Render/List.hs 208;" f +dShadCol src/Dodge/Render/List.hs 229;" f damMatSideEffect src/Dodge/Material/Damage.hs 20;" f damThingHitWith src/Dodge/Damage.hs 73;" f damToExpBarrel src/Dodge/Barreloid.hs 52;" f @@ -3351,8 +3351,8 @@ doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f doDoorMount src/Dodge/Door.hs 32;" f -doDrag src/Dodge/Update/Input/InGame.hs 120;" f -doDragSelect src/Dodge/Update/Input/InGame.hs 195;" f +doDrag src/Dodge/Update/Input/InGame.hs 121;" f +doDragSelect src/Dodge/Update/Input/InGame.hs 193;" f doDrawing src/Dodge/Render.hs 33;" f doDrawing' src/Dodge/Render.hs 44;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f @@ -3371,7 +3371,7 @@ doPreload appDodge/Main.hs 133;" f doQuickload src/Dodge/Save.hs 83;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 8;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 457;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 452;" f doRoomPlacements src/Dodge/Layout.hs 121;" f doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 90;" f @@ -3405,10 +3405,10 @@ doublePairSet src/Geometry.hs 166;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 28;" f doubleV2 src/Geometry.hs 169;" f drawARHUD src/Dodge/Creature/State.hs 226;" f -drawAimSweep src/Dodge/Render/Picture.hs 302;" f +drawAimSweep src/Dodge/Render/Picture.hs 303;" f drawAllShadows src/Dodge/Shadows.hs 5;" f -drawAnySelectionBox src/Dodge/Render/Picture.hs 136;" f -drawArrowDown src/Dodge/Render/Picture.hs 229;" f +drawAnySelectionBox src/Dodge/Render/Picture.hs 137;" f +drawArrowDown src/Dodge/Render/Picture.hs 230;" f drawBaseMachine src/Dodge/Machine/Draw.hs 70;" f drawBeeCrit src/Dodge/Creature/Picture.hs 116;" f drawBlip src/Dodge/RadarBlip.hs 16;" f @@ -3421,9 +3421,9 @@ drawChaseCrit src/Dodge/Creature/Picture.hs 142;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f -drawCombFilter src/Dodge/Render/Picture.hs 277;" f -drawCombineInventory src/Dodge/Render/HUD.hs 183;" f -drawConcurrentMessage src/Dodge/Render/Picture.hs 75;" f +drawCombFilter src/Dodge/Render/Picture.hs 278;" f +drawCombineInventory src/Dodge/Render/HUD.hs 192;" f +drawConcurrentMessage src/Dodge/Render/Picture.hs 76;" f drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f drawCrInfo src/Dodge/Debug.hs 230;" f @@ -3434,28 +3434,28 @@ drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCreatureRad src/Dodge/Debug.hs 314;" f drawCross src/Dodge/Render/Label.hs 25;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f -drawCursorAt src/Dodge/Render/List.hs 73;" f -drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 143;" f +drawCursorAt src/Dodge/Render/List.hs 74;" f +drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 144;" f drawDDATest src/Dodge/Debug/Picture.hs 304;" f drawDamSensor src/Dodge/Machine/Draw.hs 38;" f drawDebug src/Dodge/Debug.hs 268;" f -drawDrag src/Dodge/Render/Picture.hs 208;" f -drawDragDrop src/Dodge/Render/Picture.hs 237;" f -drawDragPickup src/Dodge/Render/Picture.hs 246;" f -drawDragSelect src/Dodge/Render/Picture.hs 201;" f -drawDragSelected src/Dodge/Render/HUD.hs 134;" f -drawDragSelecting src/Dodge/Render/HUD.hs 151;" f +drawDrag src/Dodge/Render/Picture.hs 209;" f +drawDragDrop src/Dodge/Render/Picture.hs 238;" f +drawDragPickup src/Dodge/Render/Picture.hs 247;" f +drawDragSelect src/Dodge/Render/Picture.hs 202;" f +drawDragSelected src/Dodge/Render/HUD.hs 139;" f +drawDragSelecting src/Dodge/Render/HUD.hs 156;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f -drawEmptySet src/Dodge/Render/Picture.hs 157;" f +drawEmptySet src/Dodge/Render/Picture.hs 158;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 426;" f -drawExamineInventory src/Dodge/Render/HUD.hs 192;" f +drawExamineInventory src/Dodge/Render/HUD.hs 201;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 34;" f drawForceField src/Dodge/Wall/Draw.hs 15;" f -drawGapPlus src/Dodge/Render/Picture.hs 288;" f +drawGapPlus src/Dodge/Render/Picture.hs 289;" f drawGib src/Dodge/Prop/Draw.hs 31;" f drawHUD src/Dodge/Render/HUD.hs 53;" f drawHive src/Dodge/Creature/Picture.hs 113;" f @@ -3463,50 +3463,50 @@ drawHoverCrit src/Dodge/Creature/Picture.hs 100;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f drawInspectWall src/Dodge/Debug/Picture.hs 256;" f drawInspectWalls src/Dodge/Debug/Picture.hs 244;" f -drawInventory src/Dodge/Render/HUD.hs 60;" f -drawItemChildrenConnect src/Dodge/Render/HUD.hs 328;" f -drawItemConnections src/Dodge/Render/HUD.hs 321;" f -drawJumpDown src/Dodge/Render/Picture.hs 196;" f +drawInventory src/Dodge/Render/HUD.hs 62;" f +drawItemChildrenConnect src/Dodge/Render/HUD.hs 337;" f +drawItemConnections src/Dodge/Render/HUD.hs 330;" f +drawJumpDown src/Dodge/Render/Picture.hs 197;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f -drawLabelledList src/Dodge/Render/List.hs 198;" f +drawLabelledList src/Dodge/Render/List.hs 219;" f drawLaser src/Dodge/Laser/Update.hs 30;" f drawLightSource src/Dodge/LightSource/Draw.hs 7;" f drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f -drawList src/Dodge/Render/List.hs 195;" f -drawListElement src/Dodge/Render/List.hs 172;" f -drawListYgapScaleYoff src/Dodge/Render/List.hs 92;" f -drawListYoff src/Dodge/Render/List.hs 89;" f +drawList src/Dodge/Render/List.hs 216;" f +drawListElement src/Dodge/Render/List.hs 193;" f +drawListYgapScaleYoff src/Dodge/Render/List.hs 93;" f +drawListYoff src/Dodge/Render/List.hs 90;" f drawLoadingScreen src/Dodge/Render/MenuScreen.hs 24;" f drawMachine src/Dodge/Machine/Draw.hs 18;" f drawMapperAR src/Dodge/Targeting/Draw.hs 12;" f -drawMapperInventory src/Dodge/Render/HUD.hs 174;" f -drawMenuClick src/Dodge/Render/Picture.hs 172;" f -drawMenuCursor src/Dodge/Render/Picture.hs 184;" f -drawMenuOrHUD src/Dodge/Render/Picture.hs 70;" f +drawMapperInventory src/Dodge/Render/HUD.hs 183;" f +drawMenuClick src/Dodge/Render/Picture.hs 173;" f +drawMenuCursor src/Dodge/Render/Picture.hs 185;" f +drawMenuOrHUD src/Dodge/Render/Picture.hs 71;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 18;" f -drawMouseCursor src/Dodge/Render/Picture.hs 86;" f -drawMouseOver src/Dodge/Render/HUD.hs 107;" f +drawMouseCursor src/Dodge/Render/Picture.hs 87;" f +drawMouseOver src/Dodge/Render/HUD.hs 110;" f drawMousePosition src/Dodge/Debug/Picture.hs 386;" f drawOptions src/Dodge/Render/MenuScreen.hs 36;" f drawPathBetween src/Dodge/Debug/Picture.hs 202;" f drawPathEdge src/Dodge/Debug/Picture.hs 261;" f drawPathing src/Dodge/Debug/Picture.hs 417;" f drawPlasmaBall src/Dodge/Render/ShapePicture.hs 103;" f -drawPlus src/Dodge/Render/Picture.hs 169;" f +drawPlus src/Dodge/Render/Picture.hs 170;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawPulseBall src/Dodge/Render/ShapePicture.hs 95;" f drawPulseLaser src/Dodge/Laser/Update.hs 42;" f -drawQuitTerminal src/Dodge/Render/Picture.hs 151;" f -drawRBOptions src/Dodge/Render/HUD.hs 257;" f +drawQuitTerminal src/Dodge/Render/Picture.hs 152;" f +drawRBOptions src/Dodge/Render/HUD.hs 266;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 38;" f -drawReturn src/Dodge/Render/Picture.hs 160;" f -drawRootCursor src/Dodge/Render/HUD.hs 81;" f +drawReturn src/Dodge/Render/Picture.hs 161;" f +drawRootCursor src/Dodge/Render/HUD.hs 84;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 32;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 37;" f -drawSelect src/Dodge/Render/Picture.hs 265;" f -drawSelectionList src/Dodge/Render/List.hs 35;" f +drawSelect src/Dodge/Render/Picture.hs 266;" f +drawSelectionList src/Dodge/Render/List.hs 36;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 17;" f drawShaderLay src/Render.hs 218;" f drawShadowsByImportance src/Dodge/Shadows.hs 8;" f @@ -3516,19 +3516,19 @@ drawSlimeCrit src/Dodge/Creature/Picture.hs 57;" f drawSlinkCrit src/Dodge/Creature/Picture.hs 86;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f -drawSubInventory src/Dodge/Render/HUD.hs 166;" f +drawSubInventory src/Dodge/Render/HUD.hs 175;" f drawSwitch src/Dodge/Button/Draw.hs 18;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f -drawTerminalCursorLink src/Dodge/Render/HUD.hs 391;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 352;" f +drawTerminalCursorLink src/Dodge/Render/HUD.hs 400;" f +drawTerminalDisplay src/Dodge/Render/HUD.hs 361;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f drawText src/Picture/Base.hs 224;" f drawTitle src/Dodge/Render/MenuScreen.hs 49;" f -drawTitleBackground src/Dodge/Render/List.hs 60;" f +drawTitleBackground src/Dodge/Render/List.hs 61;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f drawTurret src/Dodge/Machine/Draw.hs 84;" f -drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 220;" f +drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 221;" f drawWall src/Dodge/Wall/Draw.hs 11;" f drawWallFace src/Dodge/Debug/Picture.hs 73;" f drawWallSearchRays src/Dodge/Debug/Picture.hs 323;" f @@ -3583,8 +3583,8 @@ encircleCloseP src/Dodge/Creature/Boid.hs 38;" f encircleDistP src/Dodge/Creature/Boid.hs 24;" f encircleP src/Dodge/Creature/Boid.hs 30;" f endArcPos src/Dodge/Tesla.hs 87;" f -endCombineRegex src/Dodge/Update/Input/InGame.hs 290;" f -endRegex src/Dodge/Update/Input/InGame.hs 284;" f +endCombineRegex src/Dodge/Update/Input/InGame.hs 288;" f +endRegex src/Dodge/Update/Input/InGame.hs 282;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f enterCombineInv src/Dodge/DisplayInventory.hs 322;" f enumOption src/Dodge/Menu/OptionType.hs 17;" f @@ -3592,7 +3592,7 @@ epText src/Dodge/Inventory/SelectionList.hs 73;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqTypeToSites src/Dodge/Inventory/RBList.hs 78;" f -equipAllocString src/Dodge/Render/HUD.hs 312;" f +equipAllocString src/Dodge/Render/HUD.hs 321;" f equipAttachPos src/Dodge/Item/Draw.hs 30;" f equipBackgroundEffect src/Dodge/Euse.hs 22;" f equipInfo src/Dodge/Item/Info.hs 140;" f @@ -3675,7 +3675,7 @@ flockACC src/Dodge/Creature/ReaderUpdate.hs 97;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 226;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 235;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 143;" f floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f @@ -3743,7 +3743,7 @@ getAutoSpringLinks src/Dodge/Item/Grammar.hs 90;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 175;" f getBulletType src/Dodge/HeldUse.hs 945;" f -getCloseObj src/Dodge/Update/Input/InGame.hs 551;" f +getCloseObj src/Dodge/Update/Input/InGame.hs 546;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 56;" f @@ -3766,7 +3766,7 @@ getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 611;" f -getRootItemBounds src/Dodge/Render/HUD.hs 98;" f +getRootItemBounds src/Dodge/Render/HUD.hs 101;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 20;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 129;" f @@ -3963,7 +3963,7 @@ invDP src/Dodge/ListDisplayParams.hs 32;" f invDT src/Dodge/Item/Grammar.hs 227;" f invDT' src/Dodge/Item/Grammar.hs 232;" f invDimColor src/Dodge/DisplayInventory.hs 191;" f -invHead src/Dodge/Render/HUD.hs 421;" f +invHead src/Dodge/Render/HUD.hs 430;" f invIMDT src/Dodge/Item/Grammar.hs 256;" f invIndents src/Dodge/Item/Grammar.hs 263;" f invItemEffs src/Dodge/Creature/State.hs 92;" f @@ -3975,9 +3975,11 @@ invSetSelectionPos src/Dodge/Inventory.hs 266;" f invShiftPointBy src/Dodge/ShiftPoint.hs 17;" f invSize src/Dodge/Inventory/CheckSlots.hs 33;" f inventoryX src/Dodge/Creature.hs 103;" f -inverseSelNumPos src/Dodge/SelectionSections.hs 232;" f -inverseSelSecYint src/Dodge/SelectionSections.hs 200;" f -inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 213;" f +inverseSelNumPos src/Dodge/SelectionSections.hs 264;" f +inverseSelNumPosFixedWidth src/Dodge/SelectionSections.hs 268;" f +inverseSelSecYint src/Dodge/SelectionSections.hs 204;" f +inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 217;" f +inverseSelSecYintXPosCheckFixedWidth src/Dodge/SelectionSections.hs 236;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 44;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 16;" f invertIntMap src/IntMapHelp.hs 100;" f @@ -4114,7 +4116,7 @@ lastMap src/Dodge/DoubleTree.hs 122;" f latticeXsYs src/Grid.hs 24;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 42;" f -ldpRect src/Dodge/Render/List.hs 48;" f +ldpRect src/Dodge/Render/List.hs 49;" f ldpSelection src/Dodge/Update/Input/ScreenLayer.hs 80;" f leaveResetQuitTerminal src/Dodge/WorldEffect.hs 164;" f led src/Dodge/Item/Held/Utility.hs 23;" f @@ -4149,12 +4151,12 @@ linksDAGToPath src/Dodge/Room/Path.hs 19;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f listConfig src/Dodge/Menu.hs 232;" f listControls src/Dodge/Menu.hs 244;" f -listCursor src/Dodge/Render/List.hs 120;" f +listCursor src/Dodge/Render/List.hs 141;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 287;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 300;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 410;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 419;" f loadAmmoTut src/Dodge/Room/Tutorial.hs 475;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f @@ -4248,7 +4250,7 @@ makePathBetweenPs' src/Dodge/Path.hs 115;" f makePathUsing src/Dodge/Path.hs 53;" f makePathUsing' src/Dodge/Path.hs 65;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f -makeSelectionListPictures src/Dodge/Render/List.hs 67;" f +makeSelectionListPictures src/Dodge/Render/List.hs 68;" f makeShaderProgram src/Shader/Compile.hs 74;" f makeShaderVBO src/Shader/Compile.hs 24;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f @@ -4281,7 +4283,7 @@ maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 136;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 141;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 575;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 568;" f maybeOpenConsole src/Dodge/Update.hs 136;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 135;" f @@ -4376,9 +4378,10 @@ mntLightLnkShape src/Dodge/Placement/Instance/LightSource.hs 134;" f moPos src/Dodge/Data/MountedObject.hs 18;" f modTo src/Geometry/Zone.hs 18;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 70;" f -mouseCursorType src/Dodge/Render/Picture.hs 93;" f -mouseInvHeight src/Dodge/Update/Input/InGame.hs 206;" f +mouseCursorType src/Dodge/Render/Picture.hs 94;" f +mouseInvHeight src/Dodge/Update/Input/InGame.hs 204;" f mouseInvPos src/Dodge/Update/Input/InGame.hs 212;" f +mouseInvPosFixWidth src/Dodge/SelectionSections.hs 256;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 39;" f mouseWorldPosW src/Dodge/Base/Coordinate.hs 42;" f moveBullet src/Dodge/Bullet.hs 200;" f @@ -4437,7 +4440,7 @@ newSounds src/Dodge/Creature/Perception.hs 175;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f nextArc src/Dodge/Tesla.hs 61;" f -nextInSectionSS src/Dodge/SelectionSections.hs 36;" f +nextInSectionSS src/Dodge/SelectionSections.hs 40;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f @@ -4525,7 +4528,7 @@ passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 693;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathEdgeObstructed src/Dodge/Path.hs 87;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 543;" f +pauseGame src/Dodge/Update/Input/InGame.hs 538;" f pauseMenu src/Dodge/Menu.hs 57;" f pauseMenuOptions src/Dodge/Menu.hs 64;" f pauseSound src/Dodge/SoundLogic.hs 42;" f @@ -4655,7 +4658,7 @@ pop3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 838;" f popS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posRms src/Dodge/Tree/Shift.hs 46;" f -posSelSecYint src/Dodge/SelectionSections.hs 182;" f +posSelSecYint src/Dodge/SelectionSections.hs 186;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 36;" f postGenerationProcessing src/Dodge/LevelGen.hs 31;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 14;" f @@ -4836,7 +4839,7 @@ renderInfoListAt src/Dodge/Render/InfoBox.hs 18;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 45;" f renderLayer src/Render.hs 206;" f renderLightingNoShadows src/Render.hs 49;" f -renderListAt src/Dodge/Render/List.hs 177;" f +renderListAt src/Dodge/Render/List.hs 198;" f renderShadows src/Render.hs 116;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 73;" f @@ -4976,7 +4979,7 @@ screenToWorldPos src/Dodge/Base/Coordinate.hs 45;" f scrollAugInvSel src/Dodge/Inventory.hs 269;" f scrollAugNextInSection src/Dodge/Inventory.hs 284;" f scrollRBOption src/Dodge/Update/Scroll.hs 140;" f -scrollSelectionSections src/Dodge/SelectionSections.hs 30;" f +scrollSelectionSections src/Dodge/SelectionSections.hs 34;" f scrollTimeBack src/Dodge/Update.hs 244;" f scrollTimeForward src/Dodge/Update.hs 261;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f @@ -4996,14 +4999,15 @@ seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f segmentArea src/Dodge/Creature/Update.hs 355;" f -selNumPos src/Dodge/Render/HUD.hs 470;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 487;" f -selSecDrawCursor src/Dodge/Render/List.hs 101;" f -selSecSelCol src/Dodge/Render/HUD.hs 507;" f -selSecSelSize src/Dodge/SelectionSections.hs 178;" f -selSecYint src/Dodge/SelectionSections.hs 187;" f +selNumPos src/Dodge/Render/HUD.hs 479;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 496;" f +selSecDrawCursor src/Dodge/Render/List.hs 102;" f +selSecDrawCursor' src/Dodge/Render/List.hs 120;" f +selSecSelCol src/Dodge/Render/HUD.hs 516;" f +selSecSelSize src/Dodge/SelectionSections.hs 182;" f +selSecYint src/Dodge/SelectionSections.hs 191;" f selectedItemScroll src/Dodge/Update/Scroll.hs 50;" f -selectionSet src/Dodge/Update/Input/InGame.hs 148;" f +selectionSet src/Dodge/Update/Input/InGame.hs 149;" f semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 846;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 68;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 77;" f @@ -5036,9 +5040,9 @@ setOldPos src/Dodge/Update.hs 602;" f setOutLinks src/Dodge/RoomLink.hs 49;" f setOutLinksByType src/Dodge/RoomLink.hs 76;" f setOutLinksPD src/Dodge/RoomLink.hs 96;" f -setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 107;" f +setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 108;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 326;" f -setSelWhileDragging src/Dodge/Update/Input/InGame.hs 347;" f +setSelWhileDragging src/Dodge/Update/Input/InGame.hs 342;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5081,7 +5085,7 @@ shiftByV2 src/Dodge/PlacementSpot.hs 257;" f shiftChildren src/Dodge/Tree/Compose.hs 45;" f shiftDraw src/Dodge/Render/ShapePicture.hs 111;" f shiftInBy src/Dodge/PlacementSpot.hs 254;" f -shiftInvItems src/Dodge/Update/Input/InGame.hs 311;" f +shiftInvItems src/Dodge/Update/Input/InGame.hs 309;" f shiftInvItemsDown src/Dodge/Inventory.hs 156;" f shiftInvItemsUp src/Dodge/Inventory.hs 166;" f shiftLinkBy src/Dodge/Room/Link.hs 89;" f @@ -5215,7 +5219,7 @@ soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 89;" f spPos src/ShapePicture/Data.hs 11;" f -spaceAction src/Dodge/Update/Input/InGame.hs 546;" f +spaceAction src/Dodge/Update/Input/InGame.hs 541;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 162;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 155;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 147;" f @@ -5253,33 +5257,33 @@ square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 127;" f squashNormalizeV src/Geometry/Vector.hs 166;" f -ssLookupDown src/Dodge/SelectionSections.hs 101;" f -ssLookupGE src/Dodge/SelectionSections.hs 155;" f -ssLookupGE' src/Dodge/SelectionSections.hs 171;" f -ssLookupGT src/Dodge/SelectionSections.hs 142;" f -ssLookupGT' src/Dodge/SelectionSections.hs 148;" f -ssLookupLE src/Dodge/SelectionSections.hs 163;" f -ssLookupLE' src/Dodge/SelectionSections.hs 130;" f -ssLookupLT src/Dodge/SelectionSections.hs 117;" f -ssLookupLT' src/Dodge/SelectionSections.hs 123;" f -ssLookupMax src/Dodge/SelectionSections.hs 91;" f -ssLookupMaxInSection src/Dodge/SelectionSections.hs 111;" f -ssLookupMin src/Dodge/SelectionSections.hs 137;" f -ssLookupNextMax src/Dodge/SelectionSections.hs 106;" f -ssLookupUp src/Dodge/SelectionSections.hs 96;" f -ssScrollMinOnFail src/Dodge/SelectionSections.hs 47;" f -ssScrollUsing src/Dodge/SelectionSections.hs 39;" f -ssSetCursor src/Dodge/SelectionSections.hs 75;" f +ssLookupDown src/Dodge/SelectionSections.hs 105;" f +ssLookupGE src/Dodge/SelectionSections.hs 159;" f +ssLookupGE' src/Dodge/SelectionSections.hs 175;" f +ssLookupGT src/Dodge/SelectionSections.hs 146;" f +ssLookupGT' src/Dodge/SelectionSections.hs 152;" f +ssLookupLE src/Dodge/SelectionSections.hs 167;" f +ssLookupLE' src/Dodge/SelectionSections.hs 134;" f +ssLookupLT src/Dodge/SelectionSections.hs 121;" f +ssLookupLT' src/Dodge/SelectionSections.hs 127;" f +ssLookupMax src/Dodge/SelectionSections.hs 95;" f +ssLookupMaxInSection src/Dodge/SelectionSections.hs 115;" f +ssLookupMin src/Dodge/SelectionSections.hs 141;" f +ssLookupNextMax src/Dodge/SelectionSections.hs 110;" f +ssLookupUp src/Dodge/SelectionSections.hs 100;" f +ssScrollMinOnFail src/Dodge/SelectionSections.hs 51;" f +ssScrollUsing src/Dodge/SelectionSections.hs 43;" f +ssSetCursor src/Dodge/SelectionSections.hs 79;" f ssfold src/FoldableHelp.hs 105;" f -sssSelectionSlice src/Dodge/SelectionSections.hs 236;" f -stackPicturesAt src/Dodge/Render/List.hs 95;" f -stackPicturesAtOff src/Dodge/Render/List.hs 98;" f +sssSelectionSlice src/Dodge/SelectionSections.hs 272;" f +stackPicturesAt src/Dodge/Render/List.hs 96;" f +stackPicturesAtOff src/Dodge/Render/List.hs 99;" f stackText src/Picture/Base.hs 180;" f stackedInventory src/Dodge/Creature.hs 318;" f startCr src/Dodge/Creature.hs 83;" f startCrafts src/Dodge/Room/Start.hs 94;" f startDeathTimer src/Dodge/Creature/Update.hs 495;" f -startDrag src/Dodge/Update/Input/InGame.hs 299;" f +startDrag src/Dodge/Update/Input/InGame.hs 297;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f @@ -5436,7 +5440,7 @@ toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 102;" f -toTopLeft src/Dodge/Render/List.hs 212;" f +toTopLeft src/Dodge/Render/List.hs 233;" f toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f toV4 src/Geometry/Data.hs 60;" f @@ -5509,14 +5513,14 @@ truncate src/Polyhedra/Geodesic.hs 39;" f trunkDepth src/TreeHelp.hs 164;" f tryAttachItems src/Dodge/Item/Grammar.hs 35;" f tryClickUse src/Dodge/Creature/YourControl.hs 205;" f -tryCombine src/Dodge/Update/Input/InGame.hs 563;" f +tryCombine src/Dodge/Update/Input/InGame.hs 558;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 184;" f -tryDropSelected src/Dodge/Update/Input/InGame.hs 133;" f +tryDropSelected src/Dodge/Update/Input/InGame.hs 134;" f tryEvadeSideways src/Dodge/Creature/Action.hs 104;" f tryGetChannel src/Sound.hs 99;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 18;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 42;" f -tryPickupSelected src/Dodge/Update/Input/InGame.hs 155;" f +tryPickupSelected src/Dodge/Update/Input/InGame.hs 156;" f tryPlay src/Sound.hs 85;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 25;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 61;" f @@ -5569,7 +5573,7 @@ updateAggroBee src/Dodge/Creature/Update.hs 129;" f updateAimPos src/Dodge/Update.hs 399;" f updateAllNodes src/TreeHelp.hs 88;" f updateArc src/Dodge/Tesla.hs 44;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 483;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f @@ -5613,14 +5617,14 @@ updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 32;" f updateEnergyBalls src/Dodge/Update.hs 775;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 520;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 515;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 772;" f updateFloatingCamera src/Dodge/Update/Camera.hs 39;" f updateFoodSearchChaseCrit src/Dodge/Creature/Update.hs 381;" f -updateFunctionKey src/Dodge/Update/Input/InGame.hs 365;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 361;" f +updateFunctionKey src/Dodge/Update/Input/InGame.hs 360;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 356;" f updateGas src/Dodge/Update.hs 942;" f updateGusts src/Dodge/Update.hs 904;" f updateHiveCrit src/Dodge/Creature/Update.hs 82;" f @@ -5628,22 +5632,22 @@ updateHoverCrit src/Dodge/Humanoid.hs 25;" f updateIMl src/Dodge/Update.hs 639;" f updateIMl' src/Dodge/Update.hs 642;" f updateInGameCamera src/Dodge/Update/Camera.hs 87;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 438;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 433;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 88;" f updateItemTargeting src/Dodge/Creature/State.hs 293;" f -updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 398;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 432;" f +updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 393;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 427;" f updateKeysInGame src/Dodge/Update/Input/InGame.hs 82;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 384;" f -updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 407;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 379;" f +updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 402;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 517;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLivingCreature src/Dodge/Creature/Update.hs 61;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 446;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 407;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 219;" f @@ -5651,7 +5655,7 @@ updateMouseContext src/Dodge/Update.hs 420;" f updateMouseContextGame src/Dodge/Update.hs 425;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 95;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 85;" f -updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 180;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 182;" f updateObjCatMaybes src/Dodge/Update.hs 657;" f updateObjMapMaybe src/Dodge/Update.hs 650;" f updatePastWorlds src/Dodge/Update.hs 506;" f @@ -5864,7 +5868,7 @@ yV2 src/Geometry/Vector.hs 213;" f yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f youDropItem src/Dodge/Creature/Action.hs 192;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 233;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 242;" f yourControl src/Dodge/Creature/YourControl.hs 26;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 108;" f yourInfo src/Dodge/Creature/Info.hs 10;" f