From 1250e2442a8d647d448145a5ecdfd75d86a79fc0 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 21 Nov 2024 21:04:07 +0000 Subject: [PATCH] Continue improving mouse|inventory interface --- ghcidOutput | 2 +- src/Dodge/Data/Input.hs | 2 +- src/Dodge/Inventory.hs | 12 +++ src/Dodge/Render/HUD.hs | 28 +----- src/Dodge/Render/Picture.hs | 16 ++- src/Dodge/TestString.hs | 1 - src/Dodge/Update.hs | 10 +- src/Dodge/Update/Input/InGame.hs | 74 ++++++++------ tags | 168 ++++++++++++++++--------------- 9 files changed, 165 insertions(+), 148 deletions(-) diff --git a/ghcidOutput b/ghcidOutput index 49fd7aa01..abac1e2a8 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (594 modules, at 19:56:08) +All good (594 modules, at 21:00:22) diff --git a/src/Dodge/Data/Input.hs b/src/Dodge/Data/Input.hs index b1d6c848a..d99c6453b 100644 --- a/src/Dodge/Data/Input.hs +++ b/src/Dodge/Data/Input.hs @@ -22,7 +22,7 @@ data MouseContext | MouseInGame | MouseMenuClick {_mcoMenuClick :: Int} | MouseMenuCursor - | OverInvDrag {_mcoDragPos :: Maybe Int} + | OverInvDrag {_mcoDragSection :: Int, _mcoMaybeSelect :: Maybe (Int,Int)} | OverInvDragSelect { _mcoSelStart :: (Int,Int), _mcoSelEnd :: Maybe (Int,Int) } | OverInvSelect { _mcoInvSelect :: (Int,Int)} | OverInvFilt { _mcoInvFilt :: (Int,Int)} diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index 13872c55c..eb317b1f0 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -15,6 +15,7 @@ module Dodge.Inventory ( swapInvItems, scrollAugNextInSection, isFilteringInv, + swapItemWith, ) where import qualified Data.IntSet as IS @@ -174,6 +175,7 @@ changeSwapClose f i w = fromMaybe w $ do k <- f i ss return $ w + & swapAnyExtraSelection i k & cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject .~ k & hud . closeObjects %~ swapIndices i k @@ -255,6 +257,16 @@ isConnected x = case x ^. locLdtContext of || not (null $ x ^. locLDT . ldtLeft) _ -> True +swapItemWith :: + (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> + (Int,Int) -> + World -> + World +swapItemWith f (j,i) w = case j of + 0 -> w & swapInvItems f i + 3 -> w & changeSwapClose f i + _ -> w + changeSwapWith :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> World -> World changeSwapWith f w = case w ^? hud . hudElement . diSelection . _Just of Just (0, i) -> w & swapInvItems f i diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 8a97a2f2c..ae18beedd 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -131,29 +131,14 @@ drawMouseOver cfig w = concat (invsel <|> combinvsel . color (withAlpha 0.2 white) $ selSecDrawCursorAt 15 idp curs sss (j, i) ---getMouseInvSel :: World -> Maybe ((Int, Int), (Int, Int)) ---getMouseInvSel w = case w ^? hud . hudElement . subInventory . nsSelected of --- Just (MouseInvSelect s (Just e)) -> Just (s, e) --- _ -> case w ^? hud . hudElement . diSelectionExtra of --- Just x | x > 0 -> do --- (i, j) <- w ^? hud . hudElement . diSelection . _Just --- return ((i, j), (i, j + x)) --- _ -> Nothing - ---drawDISelections :: World -> Picture ---drawDISelections w = fromMaybe mempty $ --- drawDragSelect w <|> --- drawDragSelected w - drawDragSelected :: Configuration -> World -> Maybe Picture drawDragSelected cfig w = do ys <- w ^? hud . hudElement . diSelectionExtra guard $ not (IS.null ys) (i,j) <- w ^? hud . hudElement . diSelection . _Just - guard $ i == 0 sss <- w ^? hud . hudElement . diSections let idp = invDisplayParams w - let f x = (selSecDrawCursorAt 15 idp BackdropCursor sss (0, x) <>) + let f x = (selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) <>) return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) . color (withAlpha 0.2 white) . IS.foldr f mempty $ IS.insert j ys @@ -167,13 +152,6 @@ drawDragSelect cfig w = do let f x = selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) . color (withAlpha 0.2 white) . foldMap f $ [min j b .. max j b] --- fromMaybe mempty $ do --- ((i, j), (a, b)) <- getMouseInvSel w --- guard $ i == a --- sss <- w ^? hud . hudElement . diSections --- let idp = invDisplayParams w --- let f x = selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) --- return . color (withAlpha 0.2 white) . foldMap f $ [min j b .. max j b] drawSubInventory :: SubInventory -> Configuration -> World -> Picture drawSubInventory subinv cfig w = case subinv of @@ -203,14 +181,14 @@ drawExamineInventory cfig w = <> drawSelectionList secondColumnParams cfig - ( (map f + ( map f ( makeParagraph 55 $ yourAugmentedItem itemInfo (yourInfo (you w)) (closeObjectInfo (crNumFreeSlots (you w))) w - )) + ) ) where f str = diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index 7fa15f84f..dcfb61a00 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -84,8 +84,11 @@ mouseCursorType u = case u ^. uvWorld . input . mouseContext of MouseMenuClick {} -> drawMenuClick 5 MouseMenuCursor -> drawMenuCursor 5 MouseInGame -> drawPlus 5 - OverInvDrag (Just _) -> drawDrag 5 - OverInvDrag Nothing -> drawDragDrop 5 + OverInvDrag 0 (Just _) -> drawDrag 5 + OverInvDrag 0 Nothing -> drawDragDrop 5 + OverInvDrag 3 (Just _) -> drawDrag 5 + OverInvDrag 3 Nothing -> drawDragPickup 5 + OverInvDrag _ _ -> drawEmptySet 5 OverInvDragSelect {} -> drawDragSelect 5 OverInvSelect {} -> drawSelect 5 OverInvFilt {} -> drawCombFilter 5 @@ -175,6 +178,15 @@ drawDragDrop x = z = 1.5 * x y = 0.7 * x +drawDragPickup :: Float -> Picture +drawDragPickup x = + line (fmap (+V2 z (-x)) [V2 (-x) x,V2 0 x,V2 0 (-x)]) + <> line (fmap (+V2 z (-x)) [V2 (-y) (y-x), V2 0 (-x), V2 y (y-x)]) +-- <> drawSelect 5 + where + z = 1.5 * x + y = 0.7 * x + --drawFiltDrag :: Float -> Picture --drawFiltDrag x = polygonWire -- [ V2 0 y diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index b0c32c433..941822f12 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -26,7 +26,6 @@ testStringInit u = , show $ u ^? uvWorld . hud . hudElement . diSelection , show $ u ^? uvWorld . hud . hudElement . diSelectionExtra ] --- fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . ix 0 . crInv . each . itLocation . ilIsRoot -- , show . fmap (fmap _siPictures) $ u ^? uvWorld . hud . hudElement . diSections . ix (-1) . ssItems -- <> [[toEnum (i+j * 32) | i <- [0..31]] | j <- [0..7]] -- <> map show (IM.elems (L.postscan (L.premap _siHeight L.sum) diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 055ab1936..8cb28ca7a 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -306,7 +306,7 @@ checkTermDist w = fromMaybe w $ do updateMouseContext :: Configuration -> Universe -> Universe updateMouseContext cfig u = case u ^. uvWorld . input . mouseContext of - OverInvDrag {} -> u & uvWorld . input . mouseContext .~ invdrag + OverInvDrag i _ -> u & uvWorld . input . mouseContext .~ invdrag i OverInvDragSelect{} -> u _ -> u & uvWorld . input . mouseContext .~ fromMaybe @@ -335,10 +335,10 @@ updateMouseContext cfig u = case u ^. uvWorld . input . mouseContext of | ButtonRight `M.member` (w ^. input . mouseButtons) = MouseAiming | otherwise = MouseInGame mpos = w ^. input . mousePos - invdrag = fromMaybe (OverInvDrag Nothing) $ do + invdrag i' = fromMaybe (OverInvDrag i' Nothing) $ do sss <- w ^? hud . hudElement . diSections - (0,j) <- inverseSelNumPos cfig (invDisplayParams w) sss mpos - return $ OverInvDrag $ Just j + (i,j) <- inverseSelNumPos cfig (invDisplayParams w) sss mpos + return $ OverInvDrag i' (Just (i,j)) overinv = do sss <- w ^? hud . hudElement . diSections selpos <- inverseSelNumPos cfig (invDisplayParams w) sss mpos @@ -377,7 +377,7 @@ isOverTerminalScreen cfig _ (V2 x y) = where ldp = secondColumnParams V2 xmin ymax = screenPosAbs cfig (ldp ^. ldpPos) - s = (5 + 15 * (20 * ldp ^. ldpScale + ldp ^. ldpVerticalGap)) + s = 5 + 15 * (20 * ldp ^. ldpScale + ldp ^. ldpVerticalGap) -- the 15 is the length of list in the terminal display, don't change -- without changing drawTerminalDisplay ymin = ymax - s diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index b8d506ea2..d7c1a633a 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -3,9 +3,9 @@ module Dodge.Update.Input.InGame ( updateMouseInGame, ) where -import Data.Foldable import Control.Applicative import Control.Monad +import Data.Foldable import qualified Data.IntMap.Strict as IM import qualified Data.IntSet as IS import Data.List (sort) @@ -95,17 +95,19 @@ updateMouseInGame cfig w = case w ^? input . mouseButtons . ix ButtonLeft of updateMouseHeldInGame :: Configuration -> World -> World updateMouseHeldInGame cfig w = case w ^. input . mouseContext of - OverInvDragSelect{} -> fromMaybe w $ do + OverInvDragSelect sstart _ -> fromMaybe w $ do sss <- w ^? hud . hudElement . diSections let msel = inverseSelNumPos cfig ldp sss (w ^. input . mousePos) + guard $ Just (fst sstart) == fmap fst msel || isNothing msel return $ w & input . mouseContext . mcoSelEnd .~ msel - OverInvDrag Nothing -> w - OverInvDrag{} -> fromMaybe w $ do + OverInvDrag k mmouseover -> fromMaybe w $ do sss <- w ^? hud . hudElement . diSections + _ <- mmouseover let mpos = w ^. input . mousePos - (0, i) <- w ^? hud . hudElement . diSelection . _Just + (j, i) <- w ^? hud . hudElement . diSelection . _Just + guard $ j == k -- this should always be the case? x <- w ^? hud . hudElement . diSelectionExtra - return $ w & dragInvItems (IS.insert i x) cfig mpos ldp sss + return $ w & dragInvItems k (IS.insert i x) cfig mpos ldp sss _ -> w where ldp = invDisplayParams w @@ -119,23 +121,24 @@ dropSelected w = fromMaybe w $ do updateMouseReleaseInGame :: World -> World updateMouseReleaseInGame w = case w ^. input . mouseContext of - OverInvDrag mpos -> fromMaybe (dropSelected w & input . mouseContext .~ MouseInGame) $ do + OverInvDrag i mpos -> fromMaybe (dropSelected w & input . mouseContext .~ MouseInGame) $ do j <- mpos - return $ w & input . mouseContext .~ OverInvSelect (0, j) + guard $ fst j == i + return $ w & input . mouseContext .~ OverInvSelect j OverInvDragSelect _ Nothing -> w & input . mouseContext .~ MouseInGame & hud . hudElement . diSelectionExtra .~ mempty OverInvDragSelect ssel (Just esel) -> w & input . mouseContext .~ MouseInGame & hud . hudElement . diSelectionExtra - .~ h (snd ssel) (snd esel)-- IM.keysSet [min (snd ssel) (snd esel) + 1 .. max (snd ssel) (snd esel)] + .~ h (snd ssel) (snd esel) -- IM.keysSet [min (snd ssel) (snd esel) + 1 .. max (snd ssel) (snd esel)] & augInvDirectSelect (min ssel esel) _ -> w where h i j = fold $ do sss <- w ^? hud . hudElement . diSections . ix 0 . ssItems - let (_,xss) = IM.split ((min i j)-1) sss - (yss,_) = IM.split ((max i j)+1) xss + let (_, xss) = IM.split (min i j -1) sss + (yss, _) = IM.split (max i j + 1) xss return . IM.keysSet $ yss updateMouseClickInGame :: Configuration -> World -> World @@ -189,14 +192,15 @@ startDrag :: (Int, Int) -> World -> World startDrag (a, b) w = fromMaybe (augInvDirectSelect (a, b) $ setmichosen mempty w) $ do (i, j) <- w ^? hud . hudElement . diSelection . _Just xs <- w ^? hud . hudElement . diSelectionExtra - guard $ i == a && b `IS.member` (IS.insert j xs) + guard $ i == a && b `IS.member` IS.insert j xs return $ setmichosen xs w where setmichosen x = - (input . mouseContext .~ OverInvDrag (Just b)) + (input . mouseContext .~ OverInvDrag a (Just (a, b))) . (hud . hudElement . diSelectionExtra .~ x) dragInvItems :: + Int -> IS.IntSet -> Configuration -> Point2 -> @@ -204,9 +208,9 @@ dragInvItems :: IM.IntMap (SelectionSection a) -> World -> World -dragInvItems is cfig mpos ldp sss w +dragInvItems j is cfig mpos ldp sss w | nonconcurrent = collectInvItems is w - | otherwise = shiftInvItems is cfig mpos ldp sss w + | otherwise = shiftInvItems j is cfig mpos ldp sss w where nonconcurrent = not $ concurrentIS is @@ -228,6 +232,7 @@ collectInvItems is w = fromMaybe w $ do return . h (j + 1) ks $ swapInvItems (\_ _ -> Just (j + 1)) k w' shiftInvItems :: + Int -> IS.IntSet -> Configuration -> Point2 -> @@ -235,26 +240,34 @@ shiftInvItems :: IM.IntMap (SelectionSection a) -> World -> World -shiftInvItems xs cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of - Just p | p < (0, IS.findMin xs) -> shiftInvItemsUp xs w +shiftInvItems j xs cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of + Just p | p < (j, IS.findMin xs) -> fromMaybe w $ do + ss <- sss ^? ix j . ssItems + minsss <- IM.lookupMin ss + guard (IS.findMin xs > fst minsss) + return $ shiftInvItemsUp j xs w _ -> case inverseSelBoundaryDown cfig ldp sss mpos of - Just p | p > (0, IS.findMax xs) -> shiftInvItemsDown xs w + Just p | p > (j, IS.findMax xs) -> fromMaybe w $ do + ss <- sss ^? ix j . ssItems + maxsss <- IM.lookupMax ss + guard (IS.findMax xs < fst maxsss) + return $ shiftInvItemsDown j xs w _ -> w -shiftInvItemsUp :: IS.IntSet -> World -> World -shiftInvItemsUp is w = IS.foldl' f w is +shiftInvItemsUp :: Int -> IS.IntSet -> World -> World +shiftInvItemsUp j is w = IS.foldl' f w is where - f w' i' = swapInvItems g i' w' + f w' i' = swapItemWith g (j, i') w' g i' m = fst <$> IM.lookupLT i' m -shiftInvItemsDown :: IS.IntSet -> World -> World -shiftInvItemsDown is w = fromMaybe w $ do +shiftInvItemsDown :: Int -> IS.IntSet -> World -> World +shiftInvItemsDown j is w = fromMaybe w $ do let i = IS.findMax is guard . isJust $ - w ^? hud . hudElement . diSections . ix 0 . ssItems . ix i - return $ IS.foldr f w $ is + w ^? hud . hudElement . diSections . ix j . ssItems . ix i + return $ IS.foldr f w is where - f i' w' = swapInvItems g i' w' + f i' w' = swapItemWith g (j, i') w' g i' m = fst <$> IM.lookupGT i' m updateFunctionKeys :: Universe -> Universe @@ -301,13 +314,14 @@ updatePressedButtonsCarte' pkeys w updateKeysInTerminal :: Int -> Universe -> Universe updateKeysInTerminal tmid u = - u & doTextInputOverUniverse (uvWorld . cWorld . lWorld . terminals . ix tmid . tmInput . tiText) + u + & doTextInputOverUniverse + (uvWorld . cWorld . lWorld . terminals . ix tmid . tmInput . tiText) & checkEndStatus where - pkeys = u ^. uvWorld . input . pressedKeys checkEndStatus - | pkeys ^. at ScancodeReturn == Just InitialPress = - over uvWorld (\w -> terminalReturnEffect tmid w) + | u ^. uvWorld . input . pressedKeys . at ScancodeReturn == Just InitialPress = + uvWorld %~ terminalReturnEffect tmid | otherwise = id updateKeyInGame :: Universe -> Scancode -> PressType -> Universe diff --git a/tags b/tags index 94f7a013d..f8fe93c30 100644 --- a/tags +++ b/tags @@ -2297,7 +2297,6 @@ _carteZoom src/Dodge/Data/HUD.hs 50;" f _ceSideEffect src/Dodge/Data/Universe.hs 62;" f _ceString src/Dodge/Data/Universe.hs 63;" f _ciFilter src/Dodge/Data/HUD.hs 42;" f -_ciInfo src/Dodge/Data/Combine.hs 8;" f _ciInvIDs src/Dodge/Data/Combine.hs 6;" f _ciItem src/Dodge/Data/Combine.hs 7;" f _ciSections src/Dodge/Data/HUD.hs 40;" f @@ -2748,9 +2747,10 @@ _mcWallIDs src/Dodge/Data/Machine.hs 33;" f _mcWidth src/Dodge/Data/Machine.hs 44;" f _mcoCombCombine src/Dodge/Data/Input.hs 30;" f _mcoCombSelect src/Dodge/Data/Input.hs 29;" f -_mcoDragPos src/Dodge/Data/Input.hs 25;" f +_mcoDragSection src/Dodge/Data/Input.hs 25;" f _mcoInvFilt src/Dodge/Data/Input.hs 28;" f _mcoInvSelect src/Dodge/Data/Input.hs 27;" f +_mcoMaybeSelect src/Dodge/Data/Input.hs 25;" f _mcoMenuClick src/Dodge/Data/Input.hs 23;" f _mcoSelEnd src/Dodge/Data/Input.hs 26;" f _mcoSelStart src/Dodge/Data/Input.hs 26;" f @@ -3346,7 +3346,7 @@ adjustIMZone src/Dodge/Base.hs 77;" f advanceScrollAmount src/Dodge/Update.hs 393;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f -aimDelaySweep src/Dodge/Render/Picture.hs 218;" f +aimDelaySweep src/Dodge/Render/Picture.hs 230;" f aimStanceInfo src/Dodge/Item/Info.hs 210;" f aimTurn src/Dodge/Creature/YourControl.hs 143;" f aimingMuzzleLength src/Dodge/Creature/HandPos.hs 46;" f @@ -3434,7 +3434,7 @@ attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attribSize src/Shader/Compile.hs 306;" f -augInvDirectSelect src/Dodge/Inventory.hs 264;" f +augInvDirectSelect src/Dodge/Inventory.hs 275;" f augmentedHUD src/Dodge/Item/Scope.hs 47;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f @@ -3571,9 +3571,9 @@ centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainLinkOrientation src/Dodge/Creature/State.hs 183;" f chainPairs src/Geometry.hs 363;" f -changeSwapClose src/Dodge/Inventory.hs 167;" f -changeSwapSel src/Dodge/Inventory.hs 159;" f -changeSwapWith src/Dodge/Inventory.hs 258;" f +changeSwapClose src/Dodge/Inventory.hs 168;" f +changeSwapSel src/Dodge/Inventory.hs 160;" f +changeSwapWith src/Dodge/Inventory.hs 269;" f charToTuple src/Picture/Base.hs 317;" f charToTupleGrad src/Picture/Text.hs 18;" f chargeIfEquipped src/Dodge/ItEffect.hs 54;" f @@ -3585,7 +3585,7 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 112;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 99;" f -checkConnection src/Dodge/Inventory.hs 242;" f +checkConnection src/Dodge/Inventory.hs 243;" f checkDeath src/Dodge/Creature/State.hs 75;" f checkEndGame src/Dodge/Update.hs 680;" f checkErrorGL src/Shader/Compile.hs 255;" f @@ -3634,7 +3634,7 @@ clipZoom src/Dodge/Update/Camera.hs 215;" f clockCycle src/Dodge/Clock.hs 9;" f closeObjEq src/Dodge/Inventory/CloseObject.hs 15;" f closeObjPos src/Dodge/Inventory/CloseObject.hs 10;" f -closeObjectInfo src/Dodge/Render/HUD.hs 226;" f +closeObjectInfo src/Dodge/Render/HUD.hs 204;" f closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 68;" f closestCreatureID src/Dodge/Debug.hs 92;" f @@ -3655,7 +3655,7 @@ colCrsWalls src/Dodge/WallCreatureCollisions.hs 17;" f colSpark src/Dodge/Spark.hs 47;" f colSparkRandDir src/Dodge/Spark.hs 101;" f collectDamageTypes src/Dodge/Damage.hs 32;" f -collectInvItems src/Dodge/Update/Input/InGame.hs 215;" f +collectInvItems src/Dodge/Update/Input/InGame.hs 225;" f collideCircWalls src/Dodge/Base/Collide.hs 149;" f collidePoint src/Dodge/Base/Collide.hs 48;" f collidePointTestFilter src/Dodge/Base/Collide.hs 93;" f @@ -3670,7 +3670,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 41;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineFloors src/Dodge/Room/Procedural.hs 172;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 336;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 314;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f @@ -3689,7 +3689,7 @@ composeTree src/Dodge/Tree/Compose.hs 46;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f conEffects src/Dodge/Concurrent.hs 13;" f concBall src/Dodge/WorldEvent/SpawnParticle.hs 27;" f -concurrentIS src/Dodge/Update/Input/InGame.hs 207;" f +concurrentIS src/Dodge/Update/Input/InGame.hs 217;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 532;" f connectionBlurb src/Dodge/Terminal.hs 102;" f connectionBlurbLines src/Dodge/Terminal.hs 47;" f @@ -3954,7 +3954,7 @@ denormalEdges src/Polyhedra.hs 136;" f destroyAt src/Dodge/Bullet.hs 201;" f destroyBlock src/Dodge/Block.hs 56;" f destroyDoor src/Dodge/Block.hs 85;" f -destroyInvItem src/Dodge/Inventory.hs 51;" f +destroyInvItem src/Dodge/Inventory.hs 52;" f destroyLS src/Dodge/LightSource.hs 91;" f destroyLSFlashAt src/Dodge/LightSource.hs 101;" f destroyMachine src/Dodge/Machine/Destroy.hs 12;" f @@ -4042,7 +4042,7 @@ doPropUpdates src/Dodge/Prop/Update.hs 36;" f doQuickload src/Dodge/Save.hs 82;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 7;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 336;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 354;" f doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f @@ -4082,7 +4082,7 @@ doublePair src/Geometry.hs 149;" f doublePairSet src/Geometry.hs 153;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 156;" f -dragInvItems src/Dodge/Update/Input/InGame.hs 193;" f +dragInvItems src/Dodge/Update/Input/InGame.hs 202;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawAugmentedHUD src/Dodge/Creature/State.hs 210;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4096,9 +4096,9 @@ drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCarte src/Dodge/Render/HUD/Carte.hs 14;" f drawCircFlare src/Dodge/Flare.hs 25;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f -drawCombFilter src/Dodge/Render/Picture.hs 199;" f -drawCombFilterJump src/Dodge/Render/Picture.hs 151;" f -drawCombineInventory src/Dodge/Render/HUD.hs 186;" f +drawCombFilter src/Dodge/Render/Picture.hs 211;" f +drawCombFilterJump src/Dodge/Render/Picture.hs 154;" f +drawCombineInventory src/Dodge/Render/HUD.hs 164;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 62;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 342;" f @@ -4110,22 +4110,23 @@ drawCursorAt src/Dodge/Render/List.hs 70;" f drawDDATest src/Dodge/Debug/Picture.hs 256;" f drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f -drawDrag src/Dodge/Render/Picture.hs 158;" f -drawDragDrop src/Dodge/Render/Picture.hs 169;" f -drawDragSelect src/Dodge/Render/HUD.hs 160;" f -drawDragSelect src/Dodge/Render/Picture.hs 155;" f -drawDragSelected src/Dodge/Render/HUD.hs 148;" f -drawEmptySet src/Dodge/Render/Picture.hs 106;" f +drawDrag src/Dodge/Render/Picture.hs 161;" f +drawDragDrop src/Dodge/Render/Picture.hs 172;" f +drawDragPickup src/Dodge/Render/Picture.hs 181;" f +drawDragSelect src/Dodge/Render/HUD.hs 145;" f +drawDragSelect src/Dodge/Render/Picture.hs 158;" f +drawDragSelected src/Dodge/Render/HUD.hs 134;" f +drawEmptySet src/Dodge/Render/Picture.hs 109;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f drawEquipment src/Dodge/Creature/Picture.hs 140;" f -drawExamineInventory src/Dodge/Render/HUD.hs 200;" f +drawExamineInventory src/Dodge/Render/HUD.hs 178;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 234;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f drawFlare src/Dodge/Flare.hs 12;" f drawFooterText src/Dodge/Render/MenuScreen.hs 74;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f -drawGapPlus src/Dodge/Render/Picture.hs 209;" f +drawGapPlus src/Dodge/Render/Picture.hs 221;" f drawGib src/Dodge/Prop/Draw.hs 28;" f drawHP src/Dodge/Render/HUD.hs 54;" f drawHUD src/Dodge/Render/HUD.hs 46;" f @@ -4144,8 +4145,8 @@ drawListYgapScaleYoff src/Dodge/Render/List.hs 98;" f drawListYoff src/Dodge/Render/List.hs 95;" f drawMachine src/Dodge/Machine/Draw.hs 17;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f -drawMenuClick src/Dodge/Render/Picture.hs 126;" f -drawMenuCursor src/Dodge/Render/Picture.hs 139;" f +drawMenuClick src/Dodge/Render/Picture.hs 129;" f +drawMenuCursor src/Dodge/Render/Picture.hs 142;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f drawMouseCursor src/Dodge/Render/Picture.hs 73;" f @@ -4158,19 +4159,19 @@ drawOptions src/Dodge/Render/MenuScreen.hs 35;" f drawPathBetween src/Dodge/Debug/Picture.hs 168;" f drawPathEdge src/Dodge/Debug/Picture.hs 222;" f drawPathing src/Dodge/Debug/Picture.hs 384;" f -drawPlus src/Dodge/Render/Picture.hs 123;" f +drawPlus src/Dodge/Render/Picture.hs 126;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 15;" f drawProp' src/Dodge/Prop/Draw.hs 12;" f -drawRBOptions src/Dodge/Render/HUD.hs 244;" f +drawRBOptions src/Dodge/Render/HUD.hs 222;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f -drawReturn src/Dodge/Render/Picture.hs 112;" f +drawReturn src/Dodge/Render/Picture.hs 115;" f drawRootCursor src/Dodge/Render/HUD.hs 78;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 30;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 41;" f -drawSelect src/Dodge/Render/Picture.hs 188;" f +drawSelect src/Dodge/Render/Picture.hs 200;" f drawSelectionList src/Dodge/Render/List.hs 35;" f drawSelectionListBackground src/Dodge/Render/List.hs 51;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 17;" f @@ -4182,13 +4183,13 @@ drawShell src/Dodge/Projectile/Draw.hs 20;" f drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 6;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 14;" f -drawSubInventory src/Dodge/Render/HUD.hs 178;" f -drawSweep src/Dodge/Render/Picture.hs 225;" f +drawSubInventory src/Dodge/Render/HUD.hs 156;" f +drawSweep src/Dodge/Render/Picture.hs 237;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f drawTargeting src/Dodge/Targeting/Draw.hs 13;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 373;" f +drawTerminalDisplay src/Dodge/Render/HUD.hs 340;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawText src/Picture/Base.hs 220;" f drawTitle src/Dodge/Render/MenuScreen.hs 57;" f @@ -4209,7 +4210,7 @@ droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f dropByState src/Dodge/Creature/State.hs 118;" f dropExcept src/Dodge/Creature/Action.hs 172;" f dropItem src/Dodge/Creature/Action.hs 178;" f -dropSelected src/Dodge/Update/Input/InGame.hs 112;" f +dropSelected src/Dodge/Update/Input/InGame.hs 115;" f drumMag src/Dodge/Item/Ammo.hs 48;" f dtIL src/Dodge/DoubleTree.hs 75;" f dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f @@ -4237,7 +4238,7 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f enterCombineInv src/Dodge/DisplayInventory.hs 281;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f -equipAllocString src/Dodge/Render/HUD.hs 302;" f +equipAllocString src/Dodge/Render/HUD.hs 280;" f equipInfo src/Dodge/Item/Info.hs 103;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f equipPosition src/Dodge/Item/Draw.hs 30;" f @@ -4330,7 +4331,7 @@ flockPointTarget src/Dodge/Creature/Boid.hs 199;" f flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 209;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 119;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 412;" f @@ -4598,7 +4599,7 @@ invAdj src/Dodge/Item/Grammar.hs 188;" f invCursorParams src/Dodge/ListDisplayParams.hs 38;" f invDimColor src/Dodge/DisplayInventory.hs 191;" f invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f -invHead src/Dodge/Render/HUD.hs 410;" f +invHead src/Dodge/Render/HUD.hs 377;" f invLDT src/Dodge/Item/Grammar.hs 171;" f invRootMap src/Dodge/Item/Grammar.hs 180;" f invRootTrees src/Dodge/Item/Grammar.hs 210;" f @@ -4609,8 +4610,8 @@ invSideEff src/Dodge/Creature/State.hs 162;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f invTrees src/Dodge/Item/Grammar.hs 198;" f invTrees' src/Dodge/Item/Grammar.hs 202;" f -inventoryExtra src/Dodge/Render/HUD.hs 311;" f -inventoryExtraH src/Dodge/Render/HUD.hs 322;" f +inventoryExtra src/Dodge/Render/HUD.hs 289;" f +inventoryExtraH src/Dodge/Render/HUD.hs 300;" f inventoryX src/Dodge/Creature.hs 115;" f inverseSelBoundaryDown src/Dodge/SelectionSections.hs 256;" f inverseSelBoundaryUp src/Dodge/SelectionSections.hs 243;" f @@ -4627,9 +4628,9 @@ invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f isAmmoIntLink src/Dodge/HeldUse.hs 206;" f isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f -isConnected src/Dodge/Inventory.hs 252;" f +isConnected src/Dodge/Inventory.hs 253;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFilteringInv src/Dodge/Inventory.hs 303;" f +isFilteringInv src/Dodge/Inventory.hs 314;" f isFrictionless src/Dodge/Creature/State.hs 341;" f isGas src/Dodge/Euse.hs 64;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f @@ -4777,7 +4778,7 @@ llleft src/Dodge/Item/Grammar.hs 107;" f llright src/Dodge/Item/Grammar.hs 114;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 399;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 366;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f @@ -4908,7 +4909,7 @@ maybeClearPath src/Dodge/Block.hs 77;" f maybeClearPaths src/Dodge/Block.hs 74;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 496;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 514;" f maybeOpenTerminal src/Dodge/Update.hs 123;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 111;" f @@ -5133,7 +5134,7 @@ parseNum src/Dodge/Debug/Terminal.hs 73;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 432;" f +pauseGame src/Dodge/Update/Input/InGame.hs 450;" f pauseMenu src/Dodge/Menu.hs 53;" f pauseMenuOptions src/Dodge/Menu.hs 58;" f pauseSound src/Dodge/SoundLogic.hs 41;" f @@ -5477,7 +5478,7 @@ rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f rmInLinks src/Dodge/RoomLink.hs 138;" f -rmInvItem src/Dodge/Inventory.hs 64;" f +rmInvItem src/Dodge/Inventory.hs 65;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f rmOutLinks src/Dodge/RoomLink.hs 138;" f roomC src/Dodge/Room/Room.hs 38;" f @@ -5570,8 +5571,8 @@ screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f -scrollAugInvSel src/Dodge/Inventory.hs 272;" f -scrollAugNextInSection src/Dodge/Inventory.hs 285;" f +scrollAugInvSel src/Dodge/Inventory.hs 283;" f +scrollAugNextInSection src/Dodge/Inventory.hs 296;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 135;" f scrollCommands src/Dodge/Update/Scroll.hs 132;" f scrollDebugInfoInt src/Dodge/Debug.hs 47;" f @@ -5594,16 +5595,16 @@ secondColumnParams src/Dodge/ListDisplayParams.hs 45;" f seedStartMenu src/Dodge/Menu.hs 79;" f seedStartOptions src/Dodge/Menu.hs 82;" f segOnCirc src/Geometry.hs 116;" f -selNumPos src/Dodge/Render/HUD.hs 470;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 493;" f +selNumPos src/Dodge/Render/HUD.hs 437;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 460;" f selSecDrawCursor src/Dodge/Render/List.hs 129;" f selSecDrawCursorAt src/Dodge/Render/List.hs 107;" f -selSecSelCol src/Dodge/Render/HUD.hs 516;" f +selSecSelCol src/Dodge/Render/HUD.hs 483;" f selSecSelSize src/Dodge/SelectionSections.hs 182;" f selSecYint src/Dodge/SelectionSections.hs 191;" f selectCreatureDebugItem src/Dodge/Debug.hs 39;" f selectUse src/Dodge/SelectUse.hs 10;" f -selectedCloseObject src/Dodge/Inventory.hs 296;" f +selectedCloseObject src/Dodge/Inventory.hs 307;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f senseDamage src/Dodge/Machine/Update.hs 152;" f @@ -5689,9 +5690,9 @@ shiftChildren src/Dodge/Tree/Compose.hs 43;" f shiftDraw src/Dodge/Render/ShapePicture.hs 66;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 72;" f shiftInBy src/Dodge/PlacementSpot.hs 236;" f -shiftInvItems src/Dodge/Update/Input/InGame.hs 225;" f -shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 245;" f -shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 239;" f +shiftInvItems src/Dodge/Update/Input/InGame.hs 234;" f +shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 263;" f +shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 257;" f shiftLinkBy src/Dodge/Room/Link.hs 87;" f shiftPSBy src/Dodge/Placement/Shift.hs 12;" f shiftPathBy src/Dodge/Room/Link.hs 92;" f @@ -5731,9 +5732,9 @@ showEquipItem src/Dodge/Item/Display.hs 68;" f showEquipmentNumber src/Dodge/Item/Display.hs 110;" f showInt src/Dodge/Item/Info.hs 31;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f -showManObj src/Dodge/TestString.hs 50;" f +showManObj src/Dodge/TestString.hs 49;" f showTerminalError src/Dodge/Debug/Terminal.hs 76;" f -showTimeFlow src/Dodge/TestString.hs 97;" f +showTimeFlow src/Dodge/TestString.hs 96;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 49;" f @@ -5790,7 +5791,7 @@ soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 98;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 48;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f -spaceAction src/Dodge/Update/Input/InGame.hs 435;" f +spaceAction src/Dodge/Update/Input/InGame.hs 453;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 186;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 179;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 171;" f @@ -5847,7 +5848,7 @@ stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 281;" f startCr src/Dodge/Creature.hs 91;" f startCrafts src/Dodge/Room/Start.hs 92;" f -startDrag src/Dodge/Update/Input/InGame.hs 182;" f +startDrag src/Dodge/Update/Input/InGame.hs 191;" f startInvList src/Dodge/Creature.hs 109;" f startInventory src/Dodge/Creature.hs 112;" f startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f @@ -5877,10 +5878,11 @@ stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 50;" f subMap src/TreeHelp.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f -swapAnyExtraSelection src/Dodge/Inventory.hs 234;" f +swapAnyExtraSelection src/Dodge/Inventory.hs 235;" f swapInOutLinks src/Dodge/RoomLink.hs 80;" f swapIndices src/ListHelp.hs 50;" f -swapInvItems src/Dodge/Inventory.hs 184;" f +swapInvItems src/Dodge/Inventory.hs 185;" f +swapItemWith src/Dodge/Inventory.hs 259;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 171;" f switchDoor src/Dodge/Placement/Instance/Door.hs 96;" f @@ -5987,8 +5989,8 @@ toggleCombineInv src/Dodge/DisplayInventory.hs 31;" f toggleCommand src/Dodge/Terminal.hs 196;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 79;" f toggleJust src/MaybeHelp.hs 41;" f -toggleMap src/Dodge/Update/Input/InGame.hs 459;" f -toggleTweakInv src/Dodge/Update/Input/InGame.hs 473;" f +toggleMap src/Dodge/Update/Input/InGame.hs 477;" f +toggleTweakInv src/Dodge/Update/Input/InGame.hs 491;" f togglesToEffects src/Dodge/Terminal.hs 248;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f @@ -5996,7 +5998,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 332;" f topInvW src/Dodge/ListDisplayParams.hs 53;" f topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f -topTestPart src/Dodge/TestString.hs 46;" f +topTestPart src/Dodge/TestString.hs 45;" f torch src/Dodge/Item/Held/Utility.hs 26;" f torchShape src/Dodge/Item/Draw/SPic.hs 213;" f torqueCr src/Dodge/WorldEffect.hs 69;" f @@ -6059,7 +6061,7 @@ trunkDepth src/TreeHelp.hs 161;" f tryAssignHotkey src/Dodge/Creature/YourControl.hs 85;" f tryAttachBulletBelt src/Dodge/Euse.hs 40;" f tryChargeBattery src/Dodge/Euse.hs 43;" f -tryCombine src/Dodge/Update/Input/InGame.hs 482;" f +tryCombine src/Dodge/Update/Input/InGame.hs 500;" f tryGetChannel src/Sound.hs 96;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 20;" f tryGetRootItemInvID src/Dodge/Inventory/Location.hs 29;" f @@ -6105,7 +6107,7 @@ updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f updateAttachedItems src/Dodge/Creature/State.hs 173;" f updateAutoRecharge src/Dodge/Creature/State.hs 324;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 370;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 388;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBounds src/Dodge/Update/Camera.hs 245;" f @@ -6113,7 +6115,7 @@ updateBulVel src/Dodge/Bullet.hs 50;" f updateBullet src/Dodge/Bullet.hs 28;" f updateBullets src/Dodge/Update.hs 523;" f updateCamera src/Dodge/Update/Camera.hs 31;" f -updateCloseObjects src/Dodge/Inventory.hs 125;" f +updateCloseObjects src/Dodge/Inventory.hs 126;" f updateCloud src/Dodge/Update.hs 708;" f updateClouds src/Dodge/Update.hs 552;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 38;" f @@ -6128,7 +6130,7 @@ updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 513;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f updateEnergyBalls src/Dodge/Update.hs 540;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 411;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 429;" f updateExpBarrel src/Dodge/Barreloid.hs 19;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f @@ -6136,35 +6138,35 @@ updateFlame src/Dodge/Flame.hs 71;" f updateFlames src/Dodge/Update.hs 537;" f updateFlare src/Dodge/Flare.hs 7;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f -updateFunctionKey src/Dodge/Update/Input/InGame.hs 263;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 256;" f +updateFunctionKey src/Dodge/Update/Input/InGame.hs 280;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 273;" f updateGusts src/Dodge/Update.hs 691;" f updateHeldRootItem src/Dodge/Creature/State.hs 167;" f updateHumanoid src/Dodge/Humanoid.hs 12;" f updateIMl src/Dodge/Update.hs 482;" f updateIMl' src/Dodge/Update.hs 487;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 315;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 333;" f updateInstantBullets src/Dodge/Update.hs 629;" f updateInv src/Dodge/Creature/State.hs 152;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 85;" f updateItemTargeting src/Dodge/Creature/State.hs 268;" f updateItemWithOrientation src/Dodge/Creature/State.hs 194;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 309;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 298;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 327;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 315;" f updateLampoid src/Dodge/Lampoid.hs 12;" f updateLaser src/Dodge/Laser/Update.hs 13;" f updateLasers src/Dodge/Update.hs 411;" f updateLightSources src/Dodge/Update.hs 516;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 330;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 348;" f updateMIM src/Dodge/Update.hs 642;" f updateMachine src/Dodge/Machine/Update.hs 19;" f -updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 134;" f +updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 144;" f updateMouseContext src/Dodge/Update.hs 307;" f -updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 95;" f -updateMouseInGame src/Dodge/Update/Input/InGame.hs 87;" f -updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 119;" f +updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 96;" f +updateMouseInGame src/Dodge/Update/Input/InGame.hs 88;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 122;" f updateMovement src/Dodge/Creature/State.hs 331;" f updateObjCatMaybes src/Dodge/Update.hs 504;" f updateObjMapMaybe src/Dodge/Update.hs 497;" f @@ -6172,8 +6174,8 @@ updatePastWorlds src/Dodge/Update.hs 399;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f updatePosEvents src/Dodge/Update.hs 549;" f updatePreload src/Preload/Update.hs 20;" f -updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 273;" f -updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 276;" f +updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 290;" f +updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 293;" f updateProjectile src/Dodge/Projectile/Update.hs 23;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f @@ -6207,7 +6209,7 @@ updateUniverse src/Dodge/Update.hs 71;" f updateUniverseFirst src/Dodge/Update.hs 83;" f updateUniverseLast src/Dodge/Update.hs 133;" f updateUniverseMid src/Dodge/Update.hs 155;" f -updateUseInputInGame src/Dodge/Update/Input/InGame.hs 37;" f +updateUseInputInGame src/Dodge/Update/Input/InGame.hs 38;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 21;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 12;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f @@ -6366,7 +6368,7 @@ yV2 src/Geometry/Vector.hs 203;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 18;" f youDropItem src/Dodge/Creature/Action.hs 187;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 238;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 216;" f yourControl src/Dodge/Creature/YourControl.hs 22;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f