diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index ae650a738..516dca8d2 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -63,6 +63,7 @@ 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 @@ -83,7 +84,7 @@ 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 +-- & _Just . hud . diSections . ix 0 . ssSet %~ IS.map f where f j | j >= invid = j +1 | otherwise = j diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 4bee8c71b..da6789198 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -194,10 +194,8 @@ updateUniverseMid u = case _uvScreenLayers u of -- . (uvWorld . cWorld . highlightItems . filteredBy . non 0 -~ 1) . timeFlowUpdate . updateUseInputInGame - $ over - uvWorld - (updateMouseInGame (u ^. uvConfig) . updateCamera (u ^. uvConfig)) - u + . updateMouseInGame + $ over uvWorld (updateCamera (u ^. uvConfig)) u where minusone x | x > 0 = Just $ x - 1 diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 66c19fc6a..6df077561 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -82,24 +82,28 @@ updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . subInven updateKeysInGame :: Universe -> Universe updateKeysInGame u = M.foldlWithKey' updateKeyInGame u (u ^. uvWorld . input . pressedKeys) -updateMouseInGame :: Config -> World -> World -updateMouseInGame cfig w - | Just 0 <- lbpress = updateMouseClickInGame cfig w - | Just _ <- lbpress = updateMouseHeldInGame cfig w - | Just 0 <- lbrelease = updateMouseReleaseInGame cfig w - | otherwise = w +updateMouseInGame :: Universe -> Universe +updateMouseInGame u + | Just 0 <- lbpress = updateMouseClickInGame u + | Just _ <- lbpress = updateMouseHeldInGame u + | Just 0 <- lbrelease = updateMouseReleaseInGame u + | otherwise = u where - lbpress = w ^? input . mouseButtons . ix ButtonLeft - lbrelease = w ^? input . mouseButtonsReleased . ix ButtonLeft + lbpress = u ^? uvWorld . input . mouseButtons . ix ButtonLeft + lbrelease = u ^? uvWorld . input . mouseButtonsReleased . ix ButtonLeft -updateMouseHeldInGame :: Config -> World -> World -updateMouseHeldInGame cfig w = case w ^. input . mouseContext of +updateMouseHeldInGame :: Universe -> Universe +updateMouseHeldInGame u = case u ^. uvWorld . input . mouseContext of OverInvDragSelect{} - | ButtonRight `M.member` (w ^. input . mouseButtons) -> - w & input . mouseContext .~ MouseGameRotate (dist (mouseWorldPosW w) (w ^. wCam . camCenter)) - OverInvDrag k -> doDrag cfig 30 k w - OverTerminalBar p -> w & tmLDP %~ setPixelOffsetBounded cfig (p + w ^. input . mousePos) - _ -> w + | ButtonRight `M.member` (u ^. uvWorld . input . mouseButtons) -> + u & uvWorld . input . mouseContext .~ MouseGameRotate + (dist (mouseWorldPosW w) (w ^. wCam . camCenter)) + OverInvDrag k -> u & doDrag 30 k + OverTerminalBar p -> u & uvWorld . tmLDP %~ setPixelOffsetBounded cfig (p + w ^. input . mousePos) + _ -> u + where + w = u ^. uvWorld + cfig = u ^. uvConfig setPixelOffsetBounded :: Config -> Point2 -> LDParams -> LDParams setPixelOffsetBounded cfig (V2 x y) ldp = ldp & ldpPos . spPixelOff .~ V2 x' y' @@ -114,48 +118,49 @@ setPixelOffsetBounded cfig (V2 x y) ldp = ldp & ldpPos . spPixelOff .~ V2 x' y' max (1 + 20 * (ldp ^. ldpVerticalGap + ldp ^?! ldpSize . _Just . _y . to fromIntegral) - h * b) y V2 a b = ldp ^. ldpPos . spScreenOff -doDrag :: Config -> Int -> Int -> World -> World -doDrag cfig n k w = fromMaybe w $ do +doDrag :: Int -> Int -> Universe -> Universe +doDrag n k u = fromMaybe u $ do guard (n /= 0) ss <- w ^? hud . diSections . ix k . ssItems - x <- mouseover - is <- selectionSet w + x <- mouseInvPos u ^? _Just . nonInf + is <- selectionSet $ u ^. uvWorld . hud return $ if concurrentIS is - then shiftInvItems cfig n k x is ss w - else collectInvItems k is w + then u & shiftInvItems n k x is ss + else u & uvWorld %~ collectInvItems k is where - mouseover = inverseSelNumPos cfig invDP mpos disss ^? _Just . nonInf - mpos = w ^. input . mousePos - disss = w ^. hud . diSections + w = u ^. uvWorld -tryDropSelected :: Maybe (Int, Int) -> World -> Maybe World -tryDropSelected mpos w = do - guard $ maybe True (\(i, _) -> i == 3) mpos +tryDropSelected :: Universe -> Maybe Universe +tryDropSelected u = do + let mi = mouseInvPos u ^? _Just . nonInf . _1 + guard $ maybe True (== 3) mi cr <- w ^? cWorld . lWorld . creatures . ix 0 Sel 0 j <- w ^. hud . diSelection - xs <- selectionSet w + xs <- selectionSet $ u ^. uvWorld . hud let xmin = IS.findMin xs - return - . setInvPosFromSS + return $ u & uvWorld %~ (\w' -> setInvPosFromSS . (hud . diSelection ?~ Sel 3 (j - xmin)) - . foldl' (flip $ dropItem cr) w + . foldl' (flip $ dropItem cr) w' . IS.toDescList - $ xs + $ xs) + where + w = u ^. uvWorld -selectionSet :: World -> Maybe IS.IntSet -selectionSet w = do - j <- w ^? hud . diSelection . _Just . slSec - case w ^? hud . diSections . ix j . ssSet of +selectionSet :: HUD -> Maybe IS.IntSet +selectionSet h = do + j <- h ^? diSelection . _Just . slSec + case h ^? diSections . ix j . ssSet of Just is | not $ IS.null is -> Just is - _ -> IS.singleton <$> w ^? hud . diSelection . _Just . slInt + _ -> IS.singleton <$> h ^? diSelection . _Just . slInt -tryPickupSelected :: Int -> Maybe (Int, Int) -> World -> Maybe World -tryPickupSelected k mpos w = do +tryPickupSelected :: Int -> Universe -> Maybe Universe +tryPickupSelected k u = do guard $ k == 3 - guard $ maybe True (\(i, _) -> i == 0 || i == 1) mpos + let mij = mouseInvPos u ^? _Just . nonInf + guard $ maybe True (\(i,_) -> i == 0 || i == 1) mij cr <- w ^? cWorld . lWorld . creatures . ix 0 - xs <- selectionSet w + xs <- selectionSet $ u ^. uvWorld . hud sli <- w ^? hud . diSelection . _Just . slInt let xmin = IS.findMin xs joff = sli - xmin @@ -165,45 +170,45 @@ tryPickupSelected k mpos w = do slotsneeded = alaf Sum foldMap itInvHeight itmstopickup ispickup = map (_unNInt . _itID) itmstopickup guard $ nfreeslots >= slotsneeded - return $ case mpos of - Just (0, j) -> foldr (pickUpItemAt j) w (zip is ispickup) & newdisel j joff - _ -> foldl' (flip $ pickUpItem (head is)) w ispickup & newdisel (length (cr ^. crInv)) joff + return $ case mij of + Just (0, j) -> u & uvWorld %~ (\w' -> foldr (pickUpItemAt j) w' (zip is ispickup) & newdisel j joff) + _ -> u & uvWorld %~ (\w' -> foldl' (flip $ pickUpItem (head is)) w' ispickup & newdisel (length (cr ^. crInv)) joff) where + w = u ^. uvWorld newdisel j joff = hud . diSelection ?~ Sel 0 (j + joff) g i = do NInt j <- w ^? hud . closeItems . ix i w ^? cWorld . lWorld . items . ix j -updateMouseReleaseInGame :: Config -> World -> World -updateMouseReleaseInGame cfig w = input . mouseContext .~ MouseInGame - $ case w ^. input . mouseContext of - OverInvDrag k -> fromMaybe w $ tryDropSelected mpos w <|> tryPickupSelected k mpos w - OverInvDragSelect ssel -> doDragSelect cfig ssel $ mresetssset w - _ -> w +updateMouseReleaseInGame :: Universe -> Universe +updateMouseReleaseInGame u = uvWorld . input . mouseContext .~ MouseInGame + $ case u ^. uvWorld . input . mouseContext of + OverInvDrag k -> fromMaybe u $ tryDropSelected u <|> tryPickupSelected k u + OverInvDragSelect ssel -> doDragSelect ssel $ mresetssset u + _ -> u where mresetssset - | ScancodeLShift `M.member` (w ^. input . pressedKeys) = id - | otherwise = hud . diSections . each . ssSet .~ mempty - mpos = inverseSelNumPos cfig invDP mpos' disss ^? _Just . nonInf - mpos' = w ^. input . mousePos - disss = w ^. hud . diSections + | ScancodeLShift `M.member` (u ^. uvWorld . input . pressedKeys) = id + | otherwise = uvWorld . hud . diSections . each . ssSet .~ mempty -doDragSelect :: Config -> XInfinity (Int, Int) -> World -> World -doDragSelect cfig x w = fromMaybe w $ do - sss <- w ^? hud . diSections - y <- inverseSelNumPos cfig invDP (w ^. input . mousePos) sss - return $ IM.foldlWithKey' f w $ sssSelectionSlice sss x y +doDragSelect :: XInfinity (Int, Int) -> Universe -> Universe +doDragSelect x u = fromMaybe u $ do + sss <- u ^? uvWorld . hud . diSections + y <- mouseInvPos u + return $ IM.foldlWithKey' f u $ sssSelectionSlice sss x y where - f w' i ss + f u' i ss | i == 0 || i == 3 = - w' & hud . diSections . ix i . ssSet %~ IS.symmetricDifference (IM.keysSet (ss ^. ssItems)) - | otherwise = w' + u' & uvWorld . hud . diSections . ix i . ssSet %~ IS.symmetricDifference (IM.keysSet (ss ^. ssItems)) + | otherwise = u' -mouseInvHeight :: Config -> World -> XInfinity (Int,Int) -mouseInvHeight cfig w = +mouseInvHeight :: Universe -> XInfinity (Int,Int) +mouseInvHeight u = inverseSelSecYint - (posSelSecYint cfig invDP (w ^. input . mousePos . _y)) - (w ^. hud . diSections) + (posSelSecYint (u^.uvConfig) + invDP + (u ^.uvWorld . input . mousePos . _y)) + (u ^.uvWorld . hud . diSections) mouseInvPos :: Universe -> Maybe (XInfinity (Int,Int)) mouseInvPos u = inverseSelNumPos @@ -212,65 +217,66 @@ mouseInvPos u = inverseSelNumPos (u^.uvWorld. input . mousePos) (u ^.uvWorld. hud . diSections) -updateMouseClickInGame :: Config -> World -> World -updateMouseClickInGame cfig w = case w ^. input . mouseContext of - MouseInGame -> - w & input . mouseContext .~ OverInvDragSelect (mouseInvHeight cfig w) +updateMouseClickInGame :: Universe -> Universe +updateMouseClickInGame u = case w ^. input . mouseContext of + MouseInGame -> u & uvWorld . input . mouseContext .~ OverInvDragSelect (mouseInvHeight u) OverInvSelect (-1, _) | selsec == Just (-1) -> - w - & hud . diSelection %~ endRegex (-1) w - & hud . diInvFilter .~ Nothing + u + & uvWorld . hud . diSelection %~ endRegex (-1) w + & uvWorld . hud . diInvFilter .~ Nothing OverInvSelect (2, _) | selsec == Just 2 -> - w - & hud . diSelection %~ endRegex 2 w - & hud . diCloseFilter .~ Nothing - OverInvSelect (5, j) -> fromMaybe w $ do + u + & uvWorld . hud . diSelection %~ endRegex 2 w + & uvWorld . hud . diCloseFilter .~ Nothing + OverInvSelect (5, j) -> fromMaybe u $ do k <- w ^? hud . closeButtons . ix j but <- w ^? cWorld . lWorld . buttons . ix k - return $ doButtonEvent (but ^. btEvent) but w + return $ u & uvWorld %~ doButtonEvent (but ^. btEvent) but OverInvSelect x | ScancodeLShift `M.member` (w ^. input . pressedKeys) -> - w & input . mouseContext .~ OverInvDragSelect (NonInf x) - OverInvSelect x -> startDrag x w - OverTerminal tmid TerminalTextInput{} -> terminalReturnEffect tmid w - OverTerminal tmid TerminalPressTo{} -> continueTerminal tmid w - OutsideTerminal -> w & hud . subInventory .~ NoSubInventory + u & uvWorld . input . mouseContext .~ OverInvDragSelect (NonInf x) + OverInvSelect x -> u & uvWorld %~ startDrag x + OverTerminal tmid TerminalTextInput{} -> u & uvWorld %~ terminalReturnEffect tmid + OverTerminal tmid TerminalPressTo{} -> u & uvWorld %~ continueTerminal tmid + OutsideTerminal -> u & uvWorld . hud . subInventory .~ NoSubInventory OverCombSelect x -> - w - & hud . subInventory . ciSelection ?~ f x - & worldEventFlags . at CombineInventoryChange ?~ () + u + & uvWorld .hud . subInventory . ciSelection ?~ f x + & uvWorld .worldEventFlags . at CombineInventoryChange ?~ () OverCombFilter -> - w - & hud . subInventory . ciFilter .~ Nothing - & worldEventFlags . at CombineInventoryChange ?~ () - & hud . subInventory . ciSelection %~ endCombineRegex w + u + & uvWorld . hud . subInventory . ciFilter .~ Nothing + & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () + & uvWorld . hud . subInventory . ciSelection %~ endCombineRegex w OverCombCombine x -> - w - & tryCombine x - & worldEventFlags . at CombineInventoryChange ?~ () - & worldEventFlags . at InventoryChange ?~ () - & maybeExitCombine + u + & uvWorld %~ tryCombine x + & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () + & uvWorld . worldEventFlags . at InventoryChange ?~ () + & uvWorld %~ maybeExitCombine OverCombEscape -> - w - & worldEventFlags . at InventoryChange ?~ () - & hud . subInventory .~ NoSubInventory - OverCombFiltInv (0, j) -> fromMaybe w $ do + u + & uvWorld . worldEventFlags . at InventoryChange ?~ () + & uvWorld . hud . subInventory .~ NoSubInventory + OverCombFiltInv (0, j) -> u & uvWorld %~ (\w' -> fromMaybe w' $ do str <- fmap (take 5) $ - w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix (NInt j) + w' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix (NInt j) >>= \k -> - w ^? cWorld . lWorld . items . ix k + w' ^? cWorld . lWorld . items . ix k >>= (listToMaybe . basicItemDisplay) return . (worldEventFlags . at CombineInventoryChange ?~ ()) $ - case w ^? hud . subInventory . ciFilter . _Just of + case w' ^? hud . subInventory . ciFilter . _Just of Just ('#' : xs) | str == xs -> - w & hud . subInventory . ciFilter .~ Nothing - _ -> w & hud . subInventory . ciFilter ?~ ("#" ++ str) - _ -> w + w' & hud . subInventory . ciFilter .~ Nothing + _ -> w' & hud . subInventory . ciFilter ?~ ("#" ++ str) + ) + _ -> u where + w = u ^. uvWorld f (x, y) = Sel x y selsec = w ^? hud . diSelection . _Just . slSec @@ -302,17 +308,16 @@ startDrag (a, b) w = return $ hud . diSections . ix a . ssSet .~ mempty shiftInvItems :: - Config -> Int -> -- recurse limit Int -> -- section where drag started (Int, Int) -> -- selection item mouse is over IS.IntSet -> IM.IntMap (SelectionItem a) -> - World -> - World -shiftInvItems cfig n k x xs ss w = setSelWhileDragging cfig . fromMaybe w $ do + Universe -> + Universe +shiftInvItems n k x xs ss u = setSelWhileDragging . fromMaybe u $ do let xk = fst x - let yint = posSelSecYint cfig invDP (w ^. input . mousePos . _y) + let yint = posSelSecYint (u^.uvConfig) invDP (w ^. input . mousePos . _y) bn = (\v -> inverseSelSecYint (yint + 1) v ^? nonInf) =<< w ^? hud . diSections @@ -326,23 +331,23 @@ shiftInvItems cfig n k x xs ss w = setSelWhileDragging cfig . fromMaybe w $ do _ | x < (k, mini) -> do guard $ not . null . fst $ IM.split mini ss guard $ Just (k, mini - 1) /= ab - -- return . doDrag cfig (n - 1) k (Just x) $ shiftInvItemsUp k xs w - return . doDrag cfig (n - 1) k $ shiftInvItemsUp k xs w + return . doDrag (n - 1) k $ (uvWorld %~ shiftInvItemsUp k xs) u _ | x > (k, maxi) -> do guard $ not . null . snd $ IM.split maxi ss guard $ Just (k, maxi + 1) /= bn - -- return . doDrag cfig (n - 1) k (Just x) $ shiftInvItemsDown k xs w - return . doDrag cfig (n - 1) k $ shiftInvItemsDown k xs w + return . doDrag (n - 1) k $ (uvWorld %~ shiftInvItemsDown k xs) u _ -> Nothing + where + w = u ^. uvWorld -setSelWhileDragging :: Config -> World -> World -setSelWhileDragging cfig w = fromMaybe w $ do - Sel i _ <- w ^? hud . diSelection . _Just - xs <- w ^? hud . diSections . ix i . ssSet +setSelWhileDragging :: Universe -> Universe +setSelWhileDragging u = fromMaybe u $ do + Sel i _ <- u ^? uvWorld . hud . diSelection . _Just + xs <- u ^? uvWorld . hud . diSections . ix i . ssSet -- (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just - (k, j) <- inverseSelNumPos cfig invDP (w ^. input . mousePos) (w ^. hud . diSections) ^? _Just . nonInf + (k, j) <- mouseInvPos u ^? _Just . nonInf guard $ i == k && j `IS.member` xs - return $ w & hud . diSelection . _Just . slInt .~ j + return $ u & uvWorld . hud . diSelection . _Just . slInt .~ j -- Sel i _ xs <- w ^? hud . diSelection . _Just -- (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just @@ -561,8 +566,6 @@ tryCombine (i, j) w = fromMaybe w $ do & soundStart InventorySound p wrench1S Nothing & hud . diSections . ix 1 . ssSet .~ mempty --- & hud . diSelection . _Just . slSet .~ mempty - maybeExitCombine :: World -> World maybeExitCombine w | ButtonRight `M.member` (w ^. input . mouseButtons) = w diff --git a/tags b/tags index c20b7dc28..249b5e768 100644 --- a/tags +++ b/tags @@ -228,7 +228,7 @@ ColoredLightRP src/Dodge/Data/Room.hs 88;" C Comatose src/Dodge/Data/Creature/Perception.hs 51;" C CombAmount src/Dodge/Data/CombAmount.hs 10;" t CombItem src/Dodge/Data/Combine.hs 8;" t -CombineInventory src/Dodge/Data/HUD.hs 22;" C +CombineInventory src/Dodge/Data/HUD.hs 23;" C CombineInventoryChange src/Dodge/Data/World.hs 33;" C ComsSS src/Dodge/Data/Scenario.hs 98;" C ConcurrentEffect src/Loop/Data.hs 6;" t @@ -333,7 +333,7 @@ DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 183;" t Dirt src/Dodge/Data/Material.hs 12;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t -DisplayTerminal src/Dodge/Data/HUD.hs 27;" C +DisplayTerminal src/Dodge/Data/HUD.hs 28;" C Display_debug src/Dodge/Data/Config.hs 79;" C Distortion src/Dodge/Data/Distortion.hs 11;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C @@ -398,7 +398,7 @@ EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 18;" C Escape src/Dodge/Data/Scenario.hs 10;" C Essential src/Shape/Data.hs 30;" C EvadeAim src/Dodge/Data/ActionPlan.hs 78;" C -ExamineInventory src/Dodge/Data/HUD.hs 16;" C +ExamineInventory src/Dodge/Data/HUD.hs 17;" C Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 39;" C ExplosionPayload src/Dodge/Data/Payload.hs 9;" C @@ -525,7 +525,7 @@ HELD src/Dodge/Data/Item/Combine.hs 16;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C HP src/Dodge/Data/Creature.hs 64;" C -HUD src/Dodge/Data/HUD.hs 29;" t +HUD src/Dodge/Data/HUD.hs 30;" t HalfRes src/Dodge/Data/Config.hs 115;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HandsFree src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" C @@ -732,7 +732,7 @@ MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 33;" C MakeTempLight src/Dodge/Data/WorldEffect.hs 36;" C MakeTempLightFade src/Dodge/Data/WorldEffect.hs 37;" C ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t -MapperInventory src/Dodge/Data/HUD.hs 17;" C +MapperInventory src/Dodge/Data/HUD.hs 18;" C MapperSF src/Dodge/Data/ComposedItem.hs 40;" C Material src/Dodge/Data/Material.hs 10;" t MaterialSound src/Dodge/Data/SoundOrigin.hs 36;" C @@ -854,7 +854,7 @@ NoSIDisplayMod src/Dodge/Data/SelectionList.hs 59;" C NoShadowFidelity src/Shape/Data.hs 21;" C NoShadows src/Dodge/Data/Config.hs 121;" C NoSoundFilter src/Dodge/Data/WorldEffect.hs 23;" C -NoSubInventory src/Dodge/Data/HUD.hs 15;" C +NoSubInventory src/Dodge/Data/HUD.hs 16;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C Noclip src/Dodge/Data/Config.hs 83;" C @@ -1180,10 +1180,10 @@ SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 26;" t SeeAbove src/Dodge/Data/Wall.hs 32;" C SeeThrough src/Dodge/Data/Wall.hs 31;" C -Sel src/Dodge/Data/HUD.hs 40;" C +Sel src/Dodge/Data/HUD.hs 42;" C SelItem src/Dodge/Data/SelectionList.hs 47;" C SelSection src/Dodge/Data/SelectionList.hs 32;" t -Selection src/Dodge/Data/HUD.hs 40;" t +Selection src/Dodge/Data/HUD.hs 42;" t SelectionItem src/Dodge/Data/SelectionList.hs 47;" t SelectionWidth src/Dodge/Data/SelectionList.hs 45;" t SelfTree src/Dodge/Data/MetaTree.hs 21;" t @@ -1281,7 +1281,7 @@ Stone src/Dodge/Data/Material.hs 13;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C Strategy src/Dodge/Data/ActionPlan.hs 136;" t StrategyInt src/Dodge/Data/ActionPlan.hs 154;" C -SubInventory src/Dodge/Data/HUD.hs 14;" t +SubInventory src/Dodge/Data/HUD.hs 15;" t Superfluous src/Shape/Data.hs 34;" C Surface src/Shape/Data.hs 38;" t Survive src/Dodge/Data/Scenario.hs 5;" C @@ -1665,11 +1665,11 @@ _ceilingStencilShader src/Data/Preload/Render.hs 19;" f _chasmShader src/Data/Preload/Render.hs 48;" f _chasmVBO src/Data/Preload/Render.hs 47;" f _chasms src/Dodge/Data/CWorld.hs 33;" f -_ciFilter src/Dodge/Data/HUD.hs 25;" f +_ciFilter src/Dodge/Data/HUD.hs 26;" f _ciInvIDs src/Dodge/Data/Combine.hs 9;" f _ciItem src/Dodge/Data/Combine.hs 10;" f -_ciSections src/Dodge/Data/HUD.hs 23;" f -_ciSelection src/Dodge/Data/HUD.hs 24;" f +_ciSections src/Dodge/Data/HUD.hs 24;" f +_ciSelection src/Dodge/Data/HUD.hs 25;" f _cigType src/Dodge/Data/Camera.hs 18;" f _clPos src/Dodge/Data/Cloud.hs 14;" f _clTimer src/Dodge/Data/Cloud.hs 16;" f @@ -1679,8 +1679,9 @@ _clZoning src/Dodge/Data/World.hs 51;" f _clickPos src/Dodge/Data/Input.hs 44;" f _clickWorldPos src/Dodge/Data/Input.hs 46;" f _cliffs src/Dodge/Data/CWorld.hs 34;" f -_closeButtons src/Dodge/Data/HUD.hs 36;" f -_closeItems src/Dodge/Data/HUD.hs 35;" f +_closeButtons src/Dodge/Data/HUD.hs 37;" f +_closeItems src/Dodge/Data/HUD.hs 36;" f +_closeItemsInv src/Dodge/Data/HUD.hs 39;" f _cloudShader src/Data/Preload/Render.hs 52;" f _cloudVBO src/Data/Preload/Render.hs 51;" f _clouds src/Dodge/Data/LWorld.hs 98;" f @@ -1749,10 +1750,10 @@ _debugMessage src/Dodge/Data/Universe.hs 58;" f _debug_booleans src/Dodge/Data/Config.hs 68;" f _debug_view_clip_bounds src/Dodge/Data/Config.hs 67;" f _delayedEvents src/Dodge/Data/LWorld.hs 135;" f -_diCloseFilter src/Dodge/Data/HUD.hs 34;" f -_diInvFilter src/Dodge/Data/HUD.hs 33;" f -_diSections src/Dodge/Data/HUD.hs 31;" f -_diSelection src/Dodge/Data/HUD.hs 32;" f +_diCloseFilter src/Dodge/Data/HUD.hs 35;" f +_diInvFilter src/Dodge/Data/HUD.hs 34;" f +_diSections src/Dodge/Data/HUD.hs 32;" f +_diSelection src/Dodge/Data/HUD.hs 33;" f _dimAttachPos src/Dodge/Data/Item/Misc.hs 14;" f _dimCenter src/Dodge/Data/Item/Misc.hs 13;" f _dimRad src/Dodge/Data/Item/Misc.hs 12;" f @@ -2017,10 +2018,10 @@ _machines src/Dodge/Data/LWorld.hs 126;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 129;" f _mainAction src/Dodge/Data/ActionPlan.hs 131;" f -_manObject src/Dodge/Data/HUD.hs 37;" f -_mapInvItmID src/Dodge/Data/HUD.hs 20;" f -_mapInvOffset src/Dodge/Data/HUD.hs 18;" f -_mapInvZoom src/Dodge/Data/HUD.hs 19;" f +_manObject src/Dodge/Data/HUD.hs 38;" f +_mapInvItmID src/Dodge/Data/HUD.hs 21;" f +_mapInvOffset src/Dodge/Data/HUD.hs 19;" f +_mapInvZoom src/Dodge/Data/HUD.hs 20;" f _matUBO src/Data/Preload/Render.hs 42;" f _mbAttach src/Dodge/Data/MetaTree.hs 19;" f _mbTree src/Dodge/Data/MetaTree.hs 19;" f @@ -2362,8 +2363,8 @@ _skVel src/Dodge/Data/Spark.hs 12;" f _skinHead src/Dodge/Data/Creature/Misc.hs 112;" f _skinLower src/Dodge/Data/Creature/Misc.hs 114;" f _skinUpper src/Dodge/Data/Creature/Misc.hs 113;" f -_slInt src/Dodge/Data/HUD.hs 40;" f -_slSec src/Dodge/Data/HUD.hs 40;" f +_slInt src/Dodge/Data/HUD.hs 42;" f +_slSec src/Dodge/Data/HUD.hs 42;" f _slimeCompression src/Dodge/Data/Creature/Misc.hs 82;" f _slimeEngulfProgress src/Dodge/Data/Creature/Misc.hs 84;" f _slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 83;" f @@ -2404,7 +2405,7 @@ _stuckCrID src/Dodge/Data/Projectile.hs 50;" f _stuckCrOffset src/Dodge/Data/Projectile.hs 50;" f _stuckCrRot src/Dodge/Data/Projectile.hs 50;" f _stuckWlID src/Dodge/Data/Projectile.hs 51;" f -_subInventory src/Dodge/Data/HUD.hs 30;" f +_subInventory src/Dodge/Data/HUD.hs 31;" f _swColor src/Dodge/Data/Shockwave.hs 17;" f _swDam src/Dodge/Data/Shockwave.hs 22;" f _swDirection src/Dodge/Data/Shockwave.hs 18;" f @@ -2429,7 +2430,7 @@ _tbStartPos src/Dodge/Data/TractorBeam.hs 13;" f _tbTime src/Dodge/Data/TractorBeam.hs 15;" f _tbVel src/Dodge/Data/TractorBeam.hs 14;" f _tempSPic src/Dodge/Data/LWorld.hs 114;" f -_termID src/Dodge/Data/HUD.hs 27;" f +_termID src/Dodge/Data/HUD.hs 28;" f _terminals src/Dodge/Data/LWorld.hs 127;" f _teslaArcs src/Dodge/Data/LWorld.hs 115;" f _testFloat src/Dodge/Data/World.hs 45;" f @@ -2636,7 +2637,7 @@ addToTrunk src/TreeHelp.hs 159;" f addWarningTerminal src/Dodge/Room/Warning.hs 98;" f addZ src/Geometry/Vector3D.hs 90;" f adjustIMZone src/Dodge/Base.hs 81;" f -advanceScrollAmount src/Dodge/Update.hs 503;" f +advanceScrollAmount src/Dodge/Update.hs 501;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f aimDelaySweep src/Dodge/Render/Picture.hs 295;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f @@ -2857,7 +2858,7 @@ calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f canSee src/Dodge/Base/Collide.hs 333;" f canSeeIndirect src/Dodge/Base/Collide.hs 340;" f -canSpring src/Dodge/Update.hs 1007;" f +canSpring src/Dodge/Update.hs 1005;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 26;" f capacitor src/Dodge/Item/Ammo.hs 67;" f card8Vec src/Dodge/Base/CardinalPoint.hs 32;" f @@ -2896,13 +2897,13 @@ checkCombineSelectionExists src/Dodge/DisplayInventory.hs 102;" f checkConnection src/Dodge/Inventory/Swap.hs 74;" f checkDeath src/Dodge/Creature/Update.hs 461;" f checkDeath' src/Dodge/Creature/Update.hs 464;" f -checkEndGame src/Dodge/Update.hs 893;" f +checkEndGame src/Dodge/Update.hs 891;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f checkInventorySelectionExists src/Dodge/DisplayInventory.hs 95;" f -checkTermDist src/Dodge/Update.hs 414;" f +checkTermDist src/Dodge/Update.hs 412;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f @@ -3009,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 426;" f +continueTerminal src/Dodge/Update/Input/InGame.hs 404;" f convexHull src/Geometry/Polygon.hs 150;" f convexHullSafe src/Geometry/Polygon.hs 172;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 48;" f @@ -3030,7 +3031,7 @@ crAdd src/Dodge/Room/RezBox.hs 116;" f crAwayFromPost src/Dodge/Creature/Test.hs 82;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCanSeeCr src/Dodge/Creature/Test.hs 49;" f -crCrSpring src/Dodge/Update.hs 1014;" f +crCrSpring src/Dodge/Update.hs 1012;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 68;" f crDeathEffects src/Dodge/Creature/Update.hs 483;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 40;" f @@ -3069,7 +3070,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 1002;" f +crSpring src/Dodge/Update.hs 1000;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f crUpdate src/Dodge/Creature/Update.hs 454;" f @@ -3310,7 +3311,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 53;" f displayFreeSlots src/Dodge/DisplayInventory.hs 197;" f displayIndents src/Dodge/DisplayInventory.hs 111;" f displayPulse src/Dodge/Inventory/SelectionList.hs 191;" f -displayTerminalLineString src/Dodge/Update.hs 588;" f +displayTerminalLineString src/Dodge/Update.hs 586;" f dist src/Geometry/Vector.hs 193;" f dist3 src/Geometry/Vector3D.hs 102;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 150;" f @@ -3350,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 117;" f -doDragSelect src/Dodge/Update/Input/InGame.hs 196;" f +doDrag src/Dodge/Update/Input/InGame.hs 120;" f +doDragSelect src/Dodge/Update/Input/InGame.hs 195;" f doDrawing src/Dodge/Render.hs 33;" f doDrawing' src/Dodge/Render.hs 44;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f @@ -3361,7 +3362,7 @@ doHeldUseEffect src/Dodge/HeldUse.hs 379;" f doInPlacements src/Dodge/Layout.hs 106;" f doIndividualPlacements src/Dodge/Layout.hs 118;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 38;" f -doItemTimeScroll src/Dodge/Update.hs 231;" f +doItemTimeScroll src/Dodge/Update.hs 229;" f doLoop src/Loop.hs 60;" f doMagnetBuBu src/Dodge/Bullet.hs 35;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -3370,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 479;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 457;" f doRoomPlacements src/Dodge/Layout.hs 121;" f doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 90;" f @@ -3382,14 +3383,14 @@ doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 132;" f -doTimeScroll src/Dodge/Update.hs 236;" f +doTimeScroll src/Dodge/Update.hs 234;" f doTmWdWd src/Dodge/WorldEffect.hs 102;" f doWallRotate src/Dodge/Update/Camera.hs 232;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 18;" f doWdP2f src/Dodge/WdP2f.hs 10;" f doWdWd src/Dodge/WorldEffect.hs 35;" f -doWorldEvents src/Dodge/Update.hs 512;" f +doWorldEvents src/Dodge/Update.hs 510;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 14;" f doorBetween src/Dodge/Placement/Instance/Door.hs 34;" f @@ -3582,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 312;" f -endRegex src/Dodge/Update/Input/InGame.hs 306;" f +endCombineRegex src/Dodge/Update/Input/InGame.hs 290;" f +endRegex src/Dodge/Update/Input/InGame.hs 284;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f enterCombineInv src/Dodge/DisplayInventory.hs 322;" f enumOption src/Dodge/Menu/OptionType.hs 17;" f @@ -3630,7 +3631,7 @@ faceEdges src/Polyhedra.hs 62;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 246;" f fdiv src/ShortShow.hs 41;" f -feedSlime src/Dodge/Update.hs 1082;" f +feedSlime src/Dodge/Update.hs 1080;" f feet src/Dodge/Creature/Picture.hs 226;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 161;" f @@ -3707,9 +3708,9 @@ fromV3 src/Geometry/Data.hs 63;" f frontArmour src/Dodge/Item/Equipment.hs 32;" f fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 44;" f -functionalUpdate src/Dodge/Update.hs 279;" f +functionalUpdate src/Dodge/Update.hs 277;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f -fuseSlimes src/Dodge/Update.hs 1096;" f +fuseSlimes src/Dodge/Update.hs 1094;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 48;" f @@ -3722,7 +3723,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 170;" f gameplayMenu src/Dodge/Menu.hs 152;" f gameplayMenuOptions src/Dodge/Menu.hs 155;" f -gasEffect src/Dodge/Update.hs 918;" f +gasEffect src/Dodge/Update.hs 916;" f gasType src/Dodge/HeldUse.hs 1144;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f @@ -3742,13 +3743,13 @@ 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 603;" f +getCloseObj src/Dodge/Update/Input/InGame.hs 551;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 56;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 628;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 615;" f -getDebugMouseOver src/Dodge/Update.hs 478;" f +getDebugMouseOver src/Dodge/Update.hs 476;" f getDistortions src/Dodge/Render.hs 448;" f getEdgesCrossing src/Dodge/Path.hs 39;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1293;" f @@ -3758,7 +3759,7 @@ getLaserDamage src/Dodge/HeldUse.hs 728;" f getLaserPhaseV src/Dodge/HeldUse.hs 725;" f getLinksOfType src/Dodge/RoomLink.hs 40;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f -getMenuMouseContext src/Dodge/Update.hs 490;" f +getMenuMouseContext src/Dodge/Update.hs 488;" f getNodePos src/Dodge/Path.hs 36;" f getPJStabiliser src/Dodge/HeldUse.hs 1280;" f getPretty src/AesonHelp.hs 8;" f @@ -4280,7 +4281,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 631;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 575;" f maybeOpenConsole src/Dodge/Update.hs 136;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 135;" f @@ -4376,6 +4377,8 @@ 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 +mouseInvPos src/Dodge/Update/Input/InGame.hs 212;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 39;" f mouseWorldPosW src/Dodge/Base/Coordinate.hs 42;" f moveBullet src/Dodge/Bullet.hs 200;" f @@ -4405,11 +4408,11 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 702;" f muzzlePos src/Dodge/HeldUse.hs 787;" f muzzleRandPos src/Dodge/HeldUse.hs 796;" f -muzzleWallCheck src/Dodge/Update.hs 352;" f +muzzleWallCheck src/Dodge/Update.hs 350;" f mvButton src/Dodge/Placement/PlaceSpot.hs 170;" f mvCr src/Dodge/Placement/PlaceSpot.hs 173;" f mvFS src/Dodge/Placement/PlaceSpot.hs 176;" f -mvGust src/Dodge/Update.hs 909;" f +mvGust src/Dodge/Update.hs 907;" f mvLS src/Dodge/Placement/PlaceSpot.hs 215;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4522,12 +4525,12 @@ 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 595;" f +pauseGame src/Dodge/Update/Input/InGame.hs 543;" f pauseMenu src/Dodge/Menu.hs 57;" f pauseMenuOptions src/Dodge/Menu.hs 64;" f pauseSound src/Dodge/SoundLogic.hs 42;" f -pauseTime src/Dodge/Update.hs 220;" f -pbFlicker src/Dodge/Update.hs 573;" f +pauseTime src/Dodge/Update.hs 218;" f +pbFlicker src/Dodge/Update.hs 571;" f pbsHit src/Dodge/WorldEvent/ThingsHit.hs 144;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f @@ -4706,7 +4709,7 @@ pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 124;" f pushOutFromWall' src/Dodge/WallCreatureCollisions.hs 113;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f -pushYouOutFromWalls src/Dodge/Update.hs 346;" f +pushYouOutFromWalls src/Dodge/Update.hs 344;" f putAutoDoor src/Dodge/Placement/Instance/Door.hs 64;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 120;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f @@ -4747,7 +4750,7 @@ rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToCompass src/Dodge/Inventory/SelectionList.hs 110;" f radToDeg src/Geometry/Vector.hs 131;" f -radiusSpring src/Dodge/Update.hs 991;" f +radiusSpring src/Dodge/Update.hs 989;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 58;" f @@ -4769,7 +4772,7 @@ randPeakedParam src/RandomHelp.hs 149;" f randProb src/RandomHelp.hs 87;" f randSpark src/Dodge/Spark.hs 70;" f randSparkExtraVel src/Dodge/Spark.hs 93;" f -randWallReflect src/Dodge/Update.hs 760;" f +randWallReflect src/Dodge/Update.hs 758;" f randomChallenges src/Dodge/Room/Start.hs 64;" f randomCompass src/Dodge/Layout.hs 61;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 248;" f @@ -4974,8 +4977,8 @@ 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 -scrollTimeBack src/Dodge/Update.hs 246;" f -scrollTimeForward src/Dodge/Update.hs 263;" f +scrollTimeBack src/Dodge/Update.hs 244;" f +scrollTimeForward src/Dodge/Update.hs 261;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f seagullBarkTransformedS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 572;" f seagullChatter1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 644;" f @@ -5000,7 +5003,7 @@ selSecSelCol src/Dodge/Render/HUD.hs 507;" f selSecSelSize src/Dodge/SelectionSections.hs 178;" f selSecYint src/Dodge/SelectionSections.hs 187;" f selectedItemScroll src/Dodge/Update/Scroll.hs 50;" f -selectionSet src/Dodge/Update/Input/InGame.hs 147;" f +selectionSet src/Dodge/Update/Input/InGame.hs 148;" 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 @@ -5029,13 +5032,13 @@ setLinkType src/Dodge/RoomLink.hs 79;" f setLinkTypePD src/Dodge/RoomLink.hs 86;" f setMusicVolume src/Sound.hs 164;" f setMvPosToTargetCr src/Dodge/Creature/ReaderUpdate.hs 59;" f -setOldPos src/Dodge/Update.hs 604;" f +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 104;" f +setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 107;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 326;" f -setSelWhileDragging src/Dodge/Update/Input/InGame.hs 369;" f +setSelWhileDragging src/Dodge/Update/Input/InGame.hs 347;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5078,7 +5081,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 335;" f +shiftInvItems src/Dodge/Update/Input/InGame.hs 311;" f shiftInvItemsDown src/Dodge/Inventory.hs 156;" f shiftInvItemsUp src/Dodge/Inventory.hs 166;" f shiftLinkBy src/Dodge/Room/Link.hs 89;" f @@ -5132,7 +5135,7 @@ shufflePair src/RandomHelp.hs 166;" f shuffleRoomPos src/Dodge/Layout.hs 103;" f shuffleTail src/RandomHelp.hs 78;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 996;" f +simpleCrSprings src/Dodge/Update.hs 994;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 816;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 854;" f @@ -5160,10 +5163,10 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f slideWindow src/ListHelp.hs 81;" f slimeCrit src/Dodge/Creature/ChaseCrit.hs 70;" f -slimeEatSound src/Dodge/Update.hs 1112;" f -slimeFood src/Dodge/Update.hs 1074;" f +slimeEatSound src/Dodge/Update.hs 1110;" f +slimeFood src/Dodge/Update.hs 1072;" f slimeOutline src/Dodge/Creature/Slime.hs 9;" f -slimeSuck src/Dodge/Update.hs 1058;" f +slimeSuck src/Dodge/Update.hs 1056;" f slimeToRad src/Dodge/Data/Creature/Misc.hs 105;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 58;" f slinkCritUpdate src/Dodge/Creature/Update.hs 358;" f @@ -5212,7 +5215,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 598;" f +spaceAction src/Dodge/Update/Input/InGame.hs 546;" 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 @@ -5276,7 +5279,7 @@ 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 321;" f +startDrag src/Dodge/Update/Input/InGame.hs 299;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f @@ -5320,7 +5323,7 @@ swapItemWith src/Dodge/Inventory.hs 241;" f swapSelSet src/Dodge/Inventory.hs 130;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f -symmetricDifference src/Dodge/Update/Input/InGame.hs 213;" f +symmetricDifference src/IntSetHelp.hs 18;" f t src/ShortShow.hs 48;" f tEast src/Dodge/Room/Corridor.hs 96;" f tToBTree src/Dodge/Tree/Compose.hs 93;" f @@ -5405,7 +5408,7 @@ throwItem src/Dodge/Creature/Action.hs 207;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 221;" f tilesToLine src/Shader/AuxAddition.hs 66;" f -timeFlowUpdate src/Dodge/Update.hs 206;" f +timeFlowUpdate src/Dodge/Update.hs 204;" f timeScroller src/Dodge/Item/Held/Utility.hs 42;" f timeStopper src/Dodge/Item/Held/Utility.hs 39;" f tinMag src/Dodge/Item/Ammo.hs 24;" f @@ -5423,7 +5426,7 @@ tlSetStatus src/Dodge/Terminal.hs 112;" f tmDistributeAmmo src/Dodge/WorldEffect.hs 118;" f tmDistributeLines src/Dodge/Room/Room.hs 474;" f tmMachine src/Dodge/Placement/Instance/Terminal.hs 55;" f -tmScreenMousePos src/Dodge/Update.hs 470;" f +tmScreenMousePos src/Dodge/Update.hs 468;" f toBinary src/Dodge/Inventory/SelectionList.hs 153;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5506,14 +5509,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 615;" f +tryCombine src/Dodge/Update/Input/InGame.hs 563;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 184;" f -tryDropSelected src/Dodge/Update/Input/InGame.hs 132;" f +tryDropSelected src/Dodge/Update/Input/InGame.hs 133;" 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 154;" f +tryPickupSelected src/Dodge/Update/Input/InGame.hs 155;" f tryPlay src/Sound.hs 85;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 25;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 61;" f @@ -5563,20 +5566,20 @@ unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 121;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 203;" f updateAggroBee src/Dodge/Creature/Update.hs 129;" f -updateAimPos src/Dodge/Update.hs 401;" 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 510;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f updateBeeCrit src/Dodge/Creature/Update.hs 115;" f updateBeeFromPheremones src/Dodge/Creature/Update.hs 107;" f -updateBeePheremone src/Dodge/Update.hs 789;" f +updateBeePheremone src/Dodge/Update.hs 787;" f updateBounds src/Dodge/Update/Camera.hs 263;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 675;" f +updateBullets src/Dodge/Update.hs 673;" f updateCalmBee src/Dodge/Creature/Update.hs 170;" f updateCalmChaseCrit src/Dodge/Creature/Update.hs 422;" f updateCamera src/Dodge/Update/Camera.hs 34;" f @@ -5584,87 +5587,87 @@ updateCarriage src/Dodge/Creature/State/WalkCycle.hs 22;" f updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 27;" f updateChaseCrit src/Dodge/Creature/Update.hs 371;" f updateCloseObjects src/Dodge/Inventory.hs 99;" f -updateCloud src/Dodge/Update.hs 922;" f -updateClouds src/Dodge/Update.hs 786;" f +updateCloud src/Dodge/Update.hs 920;" f +updateClouds src/Dodge/Update.hs 784;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 42;" f updateCombineSections src/Dodge/DisplayInventory.hs 49;" f updateCreature src/Dodge/Creature/Update.hs 50;" f -updateCreatureGroups src/Dodge/Update.hs 647;" f -updateCreatureSoundPositions src/Dodge/Update.hs 626;" f -updateCreatureStride src/Dodge/Update.hs 380;" f -updateCreatureStrides src/Dodge/Update.hs 377;" f -updateDebris src/Dodge/Update.hs 689;" f +updateCreatureGroups src/Dodge/Update.hs 645;" f +updateCreatureSoundPositions src/Dodge/Update.hs 624;" f +updateCreatureStride src/Dodge/Update.hs 378;" f +updateCreatureStrides src/Dodge/Update.hs 375;" f +updateDebris src/Dodge/Update.hs 687;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 104;" f -updateDelayedEvents src/Dodge/Update.hs 1119;" f +updateDelayedEvents src/Dodge/Update.hs 1117;" f updateDisplaySections src/Dodge/DisplayInventory.hs 117;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 668;" f +updateDistortions src/Dodge/Update.hs 666;" f updateDoor src/Dodge/Door.hs 22;" f -updateDoors src/Dodge/Update.hs 406;" f -updateDust src/Dodge/Update.hs 970;" f -updateDusts src/Dodge/Update.hs 797;" f +updateDoors src/Dodge/Update.hs 404;" f +updateDust src/Dodge/Update.hs 968;" f +updateDusts src/Dodge/Update.hs 795;" f updateEdge src/Dodge/Path.hs 45;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f 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 777;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 555;" f +updateEnergyBalls src/Dodge/Update.hs 775;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 520;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 774;" 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 387;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 383;" f -updateGas src/Dodge/Update.hs 944;" f -updateGusts src/Dodge/Update.hs 906;" f +updateFunctionKey src/Dodge/Update/Input/InGame.hs 365;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 361;" f +updateGas src/Dodge/Update.hs 942;" f +updateGusts src/Dodge/Update.hs 904;" f updateHiveCrit src/Dodge/Creature/Update.hs 82;" f updateHoverCrit src/Dodge/Humanoid.hs 25;" f -updateIMl src/Dodge/Update.hs 641;" f -updateIMl' src/Dodge/Update.hs 644;" 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 460;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 438;" 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 420;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 454;" f +updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 398;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 432;" f updateKeysInGame src/Dodge/Update/Input/InGame.hs 82;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 406;" f -updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 429;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 384;" f +updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 407;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 12;" f -updateLasers src/Dodge/Update.hs 519;" 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 473;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f updateMachine src/Dodge/Machine/Update.hs 24;" f -updateMagnets src/Dodge/Update.hs 409;" f -updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 216;" f -updateMouseContext src/Dodge/Update.hs 422;" f -updateMouseContextGame src/Dodge/Update.hs 427;" f +updateMagnets src/Dodge/Update.hs 407;" f +updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 219;" f +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 178;" f -updateObjCatMaybes src/Dodge/Update.hs 659;" f -updateObjMapMaybe src/Dodge/Update.hs 652;" f -updatePastWorlds src/Dodge/Update.hs 508;" f -updatePlasmaBall src/Dodge/Update.hs 533;" f -updatePlasmaBalls src/Dodge/Update.hs 682;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 180;" f +updateObjCatMaybes src/Dodge/Update.hs 657;" f +updateObjMapMaybe src/Dodge/Update.hs 650;" f +updatePastWorlds src/Dodge/Update.hs 506;" f +updatePlasmaBall src/Dodge/Update.hs 531;" f +updatePlasmaBalls src/Dodge/Update.hs 680;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f updatePulse src/Dodge/Creature/Update.hs 549;" f -updatePulseBall src/Dodge/Update.hs 553;" f -updatePulseLaser src/Dodge/Update.hs 729;" f -updatePulseLasers src/Dodge/Update.hs 528;" f +updatePulseBall src/Dodge/Update.hs 551;" f +updatePulseLaser src/Dodge/Update.hs 727;" f +updatePulseLasers src/Dodge/Update.hs 526;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 671;" f +updateRadarBlips src/Dodge/Update.hs 669;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 780;" f +updateRadarSweeps src/Dodge/Update.hs 778;" f updateRandNode src/TreeHelp.hs 111;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 190;" f @@ -5673,18 +5676,18 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 242;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 771;" f +updateShockwaves src/Dodge/Update.hs 769;" f updateSingleNodes src/TreeHelp.hs 100;" f updateSlimeCrit src/Dodge/Creature/Update.hs 252;" f updateSound src/Sound.hs 73;" f updateSounds src/Sound.hs 68;" f updateSpark src/Dodge/Spark.hs 20;" f -updateSparks src/Dodge/Update.hs 783;" f -updateTerminal src/Dodge/Update.hs 591;" f -updateTeslaArc src/Dodge/Update.hs 699;" f -updateTeslaArcs src/Dodge/Update.hs 696;" f +updateSparks src/Dodge/Update.hs 781;" f +updateTerminal src/Dodge/Update.hs 589;" f +updateTeslaArc src/Dodge/Update.hs 697;" f +updateTeslaArcs src/Dodge/Update.hs 694;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 768;" f +updateTractorBeams src/Dodge/Update.hs 766;" f updateTurret src/Dodge/Machine/Update.hs 55;" f updateUniverse src/Dodge/Update.hs 83;" f updateUniverseFirst src/Dodge/Update.hs 94;" f @@ -5695,7 +5698,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f updateVocTimer src/Dodge/Humanoid.hs 39;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f -updateWheelEvents src/Dodge/Update.hs 498;" f +updateWheelEvents src/Dodge/Update.hs 496;" f updateWorldEventFlag src/Dodge/Update.hs 129;" f updateWorldEventFlags src/Dodge/Update.hs 117;" f upperBody src/Dodge/Creature/Picture.hs 422;" f @@ -5879,11 +5882,11 @@ zeroZ src/Geometry/Vector.hs 9;" f zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 142;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f -zoneClouds src/Dodge/Update.hs 580;" f +zoneClouds src/Dodge/Update.hs 578;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f -zoneCreatures src/Dodge/Update.hs 615;" f +zoneCreatures src/Dodge/Update.hs 613;" f zoneDust src/Dodge/Zoning/Cloud.hs 57;" f -zoneDusts src/Dodge/Update.hs 585;" f +zoneDusts src/Dodge/Update.hs 583;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneGas src/Dodge/Zoning/Cloud.hs 36;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f