diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index b813ed19c..d289332c8 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -4,7 +4,6 @@ module Dodge.Data.HUD where import Control.Lens -import qualified Data.IntSet as IS import Dodge.Data.Combine import Dodge.Data.Item.Location import Dodge.Data.SelectionList @@ -36,7 +35,7 @@ data HUD = HUD , _closeButtons :: [Int] } -data Selection = Sel {_slSec :: Int, _slInt :: Int, _slSet :: IS.IntSet} +data Selection = Sel {_slSec :: Int, _slInt :: Int} makeLenses ''HUD makeLenses ''Selection diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index 9fdaac840..2ca5e1d97 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -177,7 +177,7 @@ defaultHUD = HUD { _subInventory = NoSubInventory , _diSections = mempty - , _diSelection = Just (Sel 1 0 mempty) + , _diSelection = Just (Sel 1 0) , _diInvFilter = mempty , _diCloseFilter = mempty , _closeItems = mempty diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index e86bdfb82..4e41f3899 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -10,6 +10,7 @@ module Dodge.DisplayInventory ( toggleCombineInv, ) where +import qualified Data.IntSet as IS import Control.Applicative import Control.Lens import Control.Monad @@ -95,16 +96,15 @@ checkInventorySelectionExists w | isJust $ w ^? hud . diSections . ix i . ssItems . ix j = w | otherwise = scrollAugNextInSection w where - Sel i j _ = fromMaybe (Sel 1 (-1) mempty) $ w ^? hud . diSelection . _Just + Sel i j = fromMaybe (Sel 1 (-1)) $ w ^? hud . diSelection . _Just checkCombineSelectionExists :: SubInventory -> SubInventory checkCombineSelectionExists si | Just sss <- si ^? ciSections - , Sel i j _ <- fromMaybe (Sel 0 0 mempty) $ si ^? ciSelection . _Just + , Sel i j <- fromMaybe (Sel 0 0) $ si ^? ciSelection . _Just , isNothing $ si ^? ciSections . ix i . ssItems . ix j = - si & ciSelection ?~ Sel 0 (-1) mempty - & ciSelection - %~ scrollSelectionSections (-1) sss + si & ciSelection ?~ Sel 0 (-1) + & ciSelection %~ scrollSelectionSections (-1) sss | otherwise = si displayIndents :: Int -> Int @@ -246,28 +246,27 @@ updateSectionsPositioning :: IM.IntMap (SelSection a) -> IM.IntMap (SelSection a) updateSectionsPositioning h mselpos allavailablelines lsss sss = - IM.intersectionWithKey (\k -> updateSection (h k) (m k)) ls ssizes `g` offsets + IM.intersectionWithKey (\k -> updateSection (h k) (m k)) lsss ssizes `g` offsets where - offsets = fmap _ssOffset sss + offsets = fmap (\ss -> (_ssOffset ss, ss ^. ssSet)) sss m k = do - Sel k' i _ <- mselpos + Sel k' i <- mselpos guard $ k == k' return i - ls = lsss -- defaults non-existing offsets to 0 - g = merge (mapMissing (const ($ 0))) dropMissing (zipWithMatched (const ($))) + g = merge (mapMissing (const ($ (0,mempty)))) dropMissing (zipWithMatched (const ($))) lk = mselpos ^.. _Just . slSec - ssizes = sectionsSizes allavailablelines lk $ sectionsDesiredLines ls + ssizes = sectionsSizes allavailablelines lk $ sectionsDesiredLines lsss -updateSection :: Int -> Maybe Int -> IMSI a -> Int -> Int -> SelSection a -updateSection indent mcsel sis availablelines oldoffset = +updateSection :: Int -> Maybe Int -> IMSI a -> Int -> (Int,IS.IntSet) -> SelSection a +updateSection indent mcsel sis availablelines (oldoffset,sset) = SelSection { _ssItems = sis , _ssOffset = offset , _ssShownItems = shownitems , _ssShownLength = min aslength availablelines , _ssIndent = indent - , _ssSet = mempty + , _ssSet = sset } where shownitems = tweakfirst . tweaklast $ take availablelines shownstrings @@ -324,8 +323,7 @@ enterCombineInv cfig w = w & hud . subInventory .~ CombineInventory { _ciSections = updateCombineSections w cfig mempty - , _ciSelection = Just (Sel 0 0 mempty) + , _ciSelection = Just (Sel 0 0) , _ciFilter = Nothing } - & hud . diInvFilter - .~ Nothing + & hud . diInvFilter .~ Nothing diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index 3bf17a460..88ec8169d 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -95,11 +95,11 @@ rmInvItem cid invid w = where pointcid = cWorld . lWorld . creatures . ix cid updateselectionextra - | cid == 0 = hud . diSelection . _Just . slSet %~ IS.foldl' h mempty +-- | cid == 0 = hud . diSelection . _Just . slSet %~ IS.foldl' h mempty | otherwise = id - h x i | i > _unNInt invid = IS.insert (i-1) x - | i < _unNInt invid = IS.insert i x - | otherwise = x +-- h x i | i > _unNInt invid = IS.insert (i-1) x +-- | i < _unNInt invid = IS.insert i x +-- | otherwise = x updateselection | cid == 0 && cr ^? crManipulation . manObject . imSelectedItem == Just invid = scrollAugInvSel (-1) . scrollAugInvSel 1 @@ -159,7 +159,9 @@ changeSwapSelSet yi w swapSelSet :: (Int -> IS.IntSet -> World -> World) -> World -> World swapSelSet f w = fromMaybe w $ do - Sel j i is' <- w ^. hud . diSelection +-- Sel j i is' <- w ^. hud . diSelection + Sel j i <- w ^. hud . diSelection + is' <- w ^? hud . diSections . ix j . ssSet let is = if IS.null is' then IS.singleton i else is' @@ -231,7 +233,9 @@ multiSelScroll yi w multiSelScroll' :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> World -> World multiSelScroll' f w = fromMaybe w $ do - Sel j i is <- w ^. hud . diSelection + --Sel j i is <- w ^. hud . diSelection + Sel j i <- w ^. hud . diSelection + is <- w ^? hud . diSections . ix j . ssSet ss <- w ^? hud . diSections . ix j . ssItems k <- f i ss let insertordelete @@ -240,7 +244,8 @@ multiSelScroll' f w = fromMaybe w $ do | otherwise = IS.insert i . IS.insert k return $ w - & hud . diSelection . _Just . slSet %~ insertordelete +-- & hud . diSelection . _Just . slSet %~ insertordelete + & hud . diSections . ix j . ssSet %~ insertordelete & hud . diSelection . _Just . slInt .~ k changeSwapOther :: @@ -259,7 +264,7 @@ changeSwapOther manlens n f i w = fromMaybe w $ do | otherwise = j return $ w - & swapAnyExtraSelection i k + & swapAnyExtraSelection 3 i k & cWorld . lWorld . creatures @@ -285,7 +290,7 @@ swapItemWith f (j, i) = case j of changeSwapWith :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> World -> World changeSwapWith f w - | Just (Sel j i _) <- w ^. hud . diSelection = swapItemWith f (j, i) w + | Just (Sel j i) <- w ^. hud . diSelection = swapItemWith f (j, i) w | otherwise = w invSetSelection :: Selection -> World -> World @@ -297,7 +302,7 @@ invSetSelection sel w = & cWorld . lWorld %~ crUpdateItemLocations 0 invSetSelectionPos :: Int -> Int -> World -> World -invSetSelectionPos i j = invSetSelection (Sel i j mempty) +invSetSelectionPos i j = invSetSelection (Sel i j) scrollAugInvSel :: Int -> World -> World scrollAugInvSel yi w diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 0c73beb64..e77a4262c 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -6,6 +6,7 @@ module Dodge.Inventory.Add ( pickUpItemAt, ) where +import Dodge.Data.SelectionList import Linear import qualified Data.IntSet as IS import Control.Lens @@ -44,7 +45,8 @@ tryPutItemInInv cid itid w = do & cWorld . highlightItems . at itid ?~ 20 where updateselectionextra i - | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i)) +-- | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i)) + | cid == 0 = (hud . diSections . ix 0 . ssSet %~ IS.map (f i)) . (hud . diSelection . _Just . slInt %~ f i) | otherwise = id f j i | i >= _unNInt j = i + 1 diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index a5c3b0469..1f479885d 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -95,7 +95,8 @@ setInvPosFromSS w = w & cWorld . lWorld . creatures . ix 0 . crManipulation . manObject .~ thesel where thesel = fromMaybe SelNothing $ do - Sel i j _ <- w ^? hud . diSelection . _Just + --Sel i j _ <- w ^? hud . diSelection . _Just + Sel i j <- w ^? hud . diSelection . _Just case i of (-1) -> Just SortInventory 0 -> do diff --git a/src/Dodge/Inventory/Swap.hs b/src/Dodge/Inventory/Swap.hs index e8eb4a3c4..6953ecbae 100644 --- a/src/Dodge/Inventory/Swap.hs +++ b/src/Dodge/Inventory/Swap.hs @@ -11,13 +11,14 @@ import Dodge.Base.You import Dodge.Inventory.Location import Dodge.Data.DoubleTree import Sound.Data -import qualified Data.IntSet as IS +--import qualified Data.IntSet as IS import Data.Maybe import Control.Lens import Dodge.Data.SelectionList import qualified IntMapHelp as IM import Dodge.Data.World import Control.Monad +import qualified Data.IntSet as IS swapInvItems :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> @@ -28,12 +29,12 @@ swapInvItems f i w = fromMaybe w $ do ss <- w ^? hud . diSections . ix 0 . ssItems k <- f i ss let updateselection = case w ^? hud . diSelection . _Just of - Just (Sel 0 j _) | j == k -> hud . diSelection . _Just . slInt .~ i - Just (Sel 0 j _) | j == i -> hud . diSelection . _Just . slInt .~ k + Just (Sel 0 j) | j == k -> hud . diSelection . _Just . slInt .~ i + Just (Sel 0 j) | j == i -> hud . diSelection . _Just . slInt .~ k _ -> id return $ w - & swapAnyExtraSelection i k + & swapAnyExtraSelection 0 i k & checkConnection InventorySound disconnectItemS i k & cWorld . lWorld . creatures . ix 0 %~ updatecreature k & updateselection @@ -54,14 +55,22 @@ swapInvItems f i w = fromMaybe w $ do Just epos -> crEquipment . ix epos .~ NInt b Nothing -> id -swapAnyExtraSelection :: Int -> Int -> World -> World -swapAnyExtraSelection i k w = fromMaybe w $ do - is <- w ^? hud . diSelection . _Just . slSet - let f = if i `IS.member` is then IS.insert k else id - g = if k `IS.member` is then IS.insert i else id - return $ - w & hud . diSelection . _Just . slSet - %~ (f . g . IS.delete i . IS.delete k) +swapAnyExtraSelection :: Int -> Int -> Int -> World -> World +swapAnyExtraSelection seci i k w = w + & hud . diSections . ix seci . ssSet %~ f + where + f is + | i `IS.member` is && not (k `IS.member` is) = IS.insert k $ IS.delete i is + | k `IS.member` is && not (i `IS.member` is) = IS.insert i $ IS.delete k is + | otherwise = is + +-- fromMaybe w $ do +-- is <- w ^? hud . diSelection . _Just . slSet +-- let f = if i `IS.member` is then IS.insert k else id +-- g = if k `IS.member` is then IS.insert i else id +-- return $ +-- w & hud . diSelection . _Just . slSet +-- %~ (f . g . IS.delete i . IS.delete k) checkConnection :: SoundOrigin -> SoundID -> Int -> Int -> World -> World checkConnection so s i j w = fromMaybe w $ do diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index b3fe3e53f..a84c69ddb 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -127,7 +127,8 @@ drawMouseOver cfig w = . translateScreenPos cfig (invDP ^. ldpPos) . color (0.3 *^ white) -- . color white - $ selSecDrawCursor invDP curs sss (Sel j i mempty) +-- $ selSecDrawCursor invDP curs sss (Sel j i mempty) + $ selSecDrawCursor invDP curs sss (Sel j i) -- curs = BoundaryCursor [West] curs = BackdropCurs combinvsel = do @@ -139,31 +140,45 @@ drawMouseOver cfig w = return . translateScreenPos cfig (idp ^. ldpPos) . color (0.3 * white) - $ selSecDrawCursor idp curs sss (Sel j i mempty) + $ selSecDrawCursor idp curs sss (Sel j i) drawDragSelected :: Config -> World -> Maybe Picture drawDragSelected cfig w = do - ys <- w ^? hud . diSelection . _Just . slSet - guard $ - not (IS.null ys) - && ( case w ^? hud . subInventory of + ys0 <- w ^? hud . diSections . ix 0 . ssSet + ys2 <- w ^? hud . diSections . ix 3 . ssSet + ys4 <- w ^? hud . diSections . ix 5 . ssSet + guard $ case w ^? hud . subInventory of Just NoSubInventory -> True _ -> False - ) - Sel i _ _ <- w ^? hud . diSelection . _Just sss <- w ^? hud . diSections - let f x = (selSecDrawCursor invDP BackdropCurs sss (Sel i x mempty) <>) + let f i x = (selSecDrawCursor invDP BackdropCurs sss (Sel i x) <>) return . translateScreenPos cfig (invDP ^. ldpPos) . color (0.2 *^ white) - . IS.foldr f mempty - $ ys + $ IS.foldr (f 0) mempty ys0 + <> IS.foldr (f 3) mempty ys2 + <> IS.foldr (f 5) mempty ys4 +-- ys <- w ^? hud . diSelection . _Just . slSet +-- guard $ +-- not (IS.null ys) +-- && ( case w ^? hud . subInventory of +-- Just NoSubInventory -> True +-- _ -> False +-- ) +-- Sel i _ _ <- w ^? hud . diSelection . _Just +-- sss <- w ^? hud . diSections +-- let f x = (selSecDrawCursor invDP BackdropCurs sss (Sel i x mempty) <>) +-- return +-- . translateScreenPos cfig (invDP ^. ldpPos) +-- . color (0.2 *^ white) +-- . IS.foldr f mempty +-- $ ys drawDragSelecting :: Config -> World -> Maybe Picture drawDragSelecting cfig w = do OverInvDragSelect (Just (i, j)) (Just b) <- w ^? input . mouseContext sss <- w ^? hud . diSections - let f x = selSecDrawCursor invDP BackdropCurs sss (Sel i x mempty) + let f x = selSecDrawCursor invDP BackdropCurs sss (Sel i x) return . translateScreenPos cfig (invDP ^. ldpPos) . color (0.2 *^ white) @@ -261,7 +276,7 @@ drawRBOptions cfig w = fold $ do i <- w ^? rbState . opSel let ae = equipmentDesignation invid w sss <- w ^? hud . diSections - Sel i' j _ <- w ^? hud . diSelection . _Just + Sel i' j <- w ^? hud . diSelection . _Just curpos <- selSecYint i' j sss itext <- sss ^? ix i' . ssItems . ix j . siPictures . ix 0 ind <- sss ^? ix i' . ssItems . ix j . siOffX @@ -352,7 +367,7 @@ combineInventoryExtra sss msel cfig w = fold $ do invDP (BoundCurs [North, South, East, West]) (w ^. hud . diSections) - (Sel 0 i mempty) + (Sel 0 i) drawTerminalDisplay :: World -> Config -> Int -> Picture drawTerminalDisplay w cfig tid = fold $ do @@ -407,7 +422,7 @@ drawTerminalCursorLink w cfig tm = fold $ do invDP (BoundCurs [North, South, East, West]) (w ^. hud . diSections) - (Sel 5 j mempty) + (Sel 5 j) ) <> lConnectCol (lp + V2 155 0) rp lcol white white diff --git a/src/Dodge/SelectedClose.hs b/src/Dodge/SelectedClose.hs index 10fbee8a1..cf3092970 100644 --- a/src/Dodge/SelectedClose.hs +++ b/src/Dodge/SelectedClose.hs @@ -13,7 +13,7 @@ interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e o getSelectedCloseObj :: World -> Maybe (Either (NewInt ItmInt) Button) getSelectedCloseObj w = do - Sel i j _ <- w ^? hud . diSelection . _Just + Sel i j <- w ^? hud . diSelection . _Just case i of 3 -> Left <$> w ^? hud . closeItems . ix j 5 -> do diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 85db99715..3380d0216 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -16,7 +16,6 @@ import Control.Lens import Control.Monad import Data.Foldable import qualified Data.IntMap.Strict as IM -import qualified Data.IntSet as IS import Data.Maybe import Dodge.Data.CardinalPoint import Dodge.Data.Config @@ -28,13 +27,8 @@ import Geometry.Data scrollSelectionSections :: Int -> IMSS a -> Maybe Selection -> Maybe Selection scrollSelectionSections yi sss msel | yi == 0 = msel - | yi > 0 = g $ foldl' (&) msel $ replicate yi (ssScrollUsing ssLookupUp sss) - | otherwise = g $ foldl' (&) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) - where - g msel' - | msel'^?_Just.slSec /= msel^?_Just.slSec - = msel'&_Just.slSet.~IS.empty - | otherwise = msel' + | yi > 0 = foldl' (&) msel $ replicate yi (ssScrollUsing ssLookupUp sss) + | otherwise = foldl' (&) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) nextInSectionSS :: IMSS a -> Maybe Selection -> Maybe Selection nextInSectionSS = ssScrollUsing ssLookupNextMax @@ -52,11 +46,11 @@ ssScrollMinOnFail :: IMSS a -> Maybe Selection -> Maybe Selection -ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> Sel i j q) $ l <|> ssLookupMin sss +ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> Sel i j) $ l <|> ssLookupMin sss where - q = fold (msel ^? _Just . slSet) +-- q = fold (msel ^? _Just . slSet) l = do - Sel i j _ <- msel + Sel i j <- msel f i j sss ---- this version removes the selected set when scrolling outside it @@ -81,12 +75,15 @@ ssSetCursor :: Maybe Selection -> Maybe Selection ssSetCursor f sss msel = fromMaybe msel $ do - (i, j, _) <- f sss - let newxs = fromMaybe mempty $ do - Sel k _ xs <- msel - guard $ k == i && j `IS.member` xs - return xs - return $ Just (Sel i j newxs) + (i,j,_) <- f sss + return $ Just (Sel i j) +-- = fromMaybe msel $ do +-- (i, j, _) <- f sss +-- let newxs = fromMaybe mempty $ do +-- Sel k _ xs <- msel +-- guard $ k == i && j `IS.member` xs +-- return xs +-- return $ Just (Sel i j newxs) ssLookupMax :: IMSS a -> Maybe (Int, Int, SelectionItem a) ssLookupMax sss = do diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index b05f528f7..02a3ae2c8 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -58,7 +58,8 @@ crs :: Universe -> [Creature] crs u = u ^.. uvWorld . cWorld . lWorld . creatures . each testStringInit :: Universe -> [String] -testStringInit u = u ^. uvWorld . cWorld . lWorld . creatures . ix 5 . crActionPlan . to prettyShort +testStringInit u = u ^.. uvWorld . hud . diSections . each . ssSet . to show +--testStringInit u = u ^. uvWorld . cWorld . lWorld . creatures . ix 5 . crActionPlan . to prettyShort --[show . getSum $ foldMap (Sum . crslime) (crs u)] -- u ^.. tocrs . each . crType . slimeSplitTimer . to show -- u ^.. tocrs . ix 1 . crPos . _xy . to show diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 393fb492b..a83427071 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -450,7 +450,8 @@ updateMouseContextGame cfig u = \case return $ OverInvSelect selpos overcomb = do sss <- w ^? hud . subInventory . ciSections - Sel xl xr _ <- w ^? hud . subInventory . ciSelection . _Just +-- Sel xl xr _ <- w ^? hud . subInventory . ciSelection . _Just + Sel xl xr <- w ^? hud . subInventory . ciSelection . _Just let msel = (xl, xr) let mpossel = inverseSelNumPos cfig secondColumnLDP (w ^. input . mousePos) sss ^? _Just . nonInf return $ case mpossel of diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 958f0eb68..07b184089 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -49,7 +49,7 @@ import SDL updateUseInputInGame :: Universe -> Universe updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . subInventory of DisplayTerminal tmid -> updateKeysInTerminal tmid u - CombineInventory{_ciSections = sss, _ciSelection = msel@(Just (Sel (-1) _ _))} -> + CombineInventory{_ciSections = sss, _ciSelection = msel@(Just (Sel (-1) _))} -> u & tohud . subInventory %~ docombineregexinput sss msel & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () @@ -165,13 +165,20 @@ tryDropSelected mpos w = do xs <- selectionSet w let xmin = IS.findMin xs return - . (hud . diSelection ?~ Sel 3 (j-xmin) (IS.fromDistinctAscList [0..IS.size xs - 1])) + . (hud . diSelection ?~ Sel 3 (j-xmin) ) + . (hud . diSections . ix 3 . ssSet .~ IS.fromDistinctAscList [0..IS.size xs - 1]) . foldl' (flip $ dropItem cr) w . IS.toDescList $ xs selectionSet :: World -> Maybe IS.IntSet -selectionSet w = case w ^? hud . diSelection . _Just . slSet of - Just is' | not $ IS.null is' -> Just is' +selectionSet w = do + j <- w ^? hud . diSelection . _Just . slSec + case w ^? hud . diSections . ix j . ssSet of + Just is | not $ IS.null is -> Just is _ -> IS.singleton <$> w ^? hud . diSelection . _Just . slInt +--selectionSet :: World -> Maybe IS.IntSet +--selectionSet w = case w ^? hud . diSelection . _Just . slSet of +-- Just is' | not $ IS.null is' -> Just is' +-- _ -> IS.singleton <$> w ^? hud . diSelection . _Just . slInt tryPickupSelected :: Int -> Maybe (Int, Int) -> World -> Maybe World @@ -193,7 +200,9 @@ tryPickupSelected k mpos w = do _ -> foldl' (flip $ pickUpItem 0) w ispickup & newdisel (length (cr ^. crInv)) joff xs where newdisel j joff xs = - hud . diSelection ?~ Sel 0 (j+joff) (IS.fromDistinctAscList [j .. j + IS.size xs -1]) +-- hud . diSelection ?~ Sel 0 (j+joff) (IS.fromDistinctAscList [j .. j + IS.size xs -1]) + (hud . diSelection ?~ Sel 0 (j+joff)) + . (hud . diSections . ix 0 . ssSet .~ IS.fromDistinctAscList [j .. j + IS.size xs -1]) g i = do NInt j <- w ^? hud . closeItems . ix i w ^? cWorld . lWorld . items . ix j @@ -206,23 +215,44 @@ updateMouseReleaseInGame w = case w ^. input . mouseContext of OverInvDragSelect (Just ssel) mesel | ScancodeLShift `M.member` (w ^. input . pressedKeys) -> w & input . mouseContext .~ MouseInGame - & hud . diSelection . _Just . slSet - %~ getuniques - ( maybe + & (fromMaybe id $ do + j <- w ^? hud . diSelection . _Just . slSec + return $ hud . diSections . ix j . ssSet + %~ getuniques + ( maybe mempty - (h ssel) + mempty + --(h ssel) (guard (ssel ^? _1 == w ^? hud . diSelection . _Just . slSec) >> mesel ^? _Just) + )) + & hud . diSections . ix (fst ssel) . ssSet + %~ getuniques + ( maybe + mempty + (h ssel) + (guard (ssel ^? _1 == w ^? hud . diSelection . _Just . slSec) >> mesel ^? _Just) ) + -- & hud . diSelection . _Just . slSet + -- %~ getuniques + -- ( maybe + -- mempty + -- (h ssel) + -- (guard (ssel ^? _1 == w ^? hud . diSelection . _Just . slSec) >> mesel ^? _Just) + -- ) OverInvDragSelect (Just ssel) (Just esel) -> w & input . mouseContext .~ MouseInGame - & invSetSelection (f (fst ssel, esel) (h ssel esel)) + -- & invSetSelection (f (fst ssel, esel) (h ssel esel)) + & hud . diSections . ix (fst ssel) . ssSet .~ h ssel esel + & invSetSelection (f (fst ssel, esel)) OverInvDragSelect{} -> w & input . mouseContext .~ MouseInGame - & hud . diSelection . _Just . slSet %~ const mempty +-- & hud . diSelection . _Just . slSet %~ const mempty + & hud . diSections . each . ssSet %~ const mempty _ -> w where getuniques x y = IS.union x y IS.\\ IS.intersection x y f (x, y) = Sel x y +-- need to set this in OverInvDragSelect (twice)? h (k, i) j = fold $ do sss <- w ^? hud . diSections . ix k . ssItems let (_, xss) = IM.split (min i j -1) sss @@ -298,7 +328,7 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of _ -> w & hud . subInventory . ciFilter ?~ ("#" ++ str) _ -> w where - f (x, y) = Sel x y mempty + f (x, y) = Sel x y selsec = w ^? hud . diSelection . _Just . slSec endRegex :: Int -> World -> Maybe Selection -> Maybe Selection @@ -317,12 +347,18 @@ endCombineRegex w = ssSetCursor (ssLookupDown 0 j) sss return (k -1) startDrag :: (Int, Int) -> World -> World -startDrag (a, b) w = setcontext $ case w ^? hud . diSelection . _Just of - Just (Sel i _ xs) | i == a && b `IS.member` xs -> w --- _ -> invSetSelection (Sel a b (IS.singleton b)) w - _ -> invSetSelection (Sel a b mempty) w +startDrag (a, b) w = setcontext $ fromMaybe (invSetSelection (Sel a b) w) $ do + i <- w ^? hud . diSelection . _Just . slSec + xs <- w ^? hud . diSections . ix i . ssSet + guard $ i == a && b `IS.member` xs + return w where setcontext = input . mouseContext .~ OverInvDrag a (Just (a, b)) +--startDrag (a, b) w = setcontext $ case w ^? hud . diSelection . _Just of +-- Just (Sel i _ xs) | i == a && b `IS.member` xs -> w +-- _ -> invSetSelection (Sel a b mempty) w +-- where +-- setcontext = input . mouseContext .~ OverInvDrag a (Just (a, b)) shiftInvItems :: @@ -359,10 +395,15 @@ shiftInvItems cfig n k x xs ss w = setSelWhileDragging . fromMaybe w $ do setSelWhileDragging :: World -> World setSelWhileDragging w = fromMaybe w $ do - Sel i _ xs <- w ^? hud . diSelection . _Just + Sel i _ <- w ^? hud . diSelection . _Just + xs <- w ^? hud . diSections . ix i . ssSet (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just guard $ i == k && j `IS.member` xs return $ w & hud . diSelection . _Just . slInt .~ j +-- Sel i _ xs <- w ^? hud . diSelection . _Just +-- (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just +-- guard $ i == k && j `IS.member` xs +-- return $ w & hud . diSelection . _Just . slInt .~ j updateFunctionKeys :: Universe -> Universe @@ -508,7 +549,8 @@ updateBackspaceRegex w = case di ^? subInventory of return $ case str of (_ : _) -> he & filtset . _Just %~ init - & selset ?~ Sel x 0 mempty + & selset ?~ Sel x 0 +-- & selset ?~ Sel x 0 mempty [] -> he & filtset .~ Nothing di = w ^. hud @@ -516,15 +558,18 @@ updateEnterRegex :: World -> World updateEnterRegex w = case w ^? hud . subInventory of Just NoSubInventory{} | secfocus [-1, 0, 1] -> - w & hud . diSelection ?~ Sel (-1) 0 mempty +-- w & hud . diSelection ?~ Sel (-1) 0 mempty + w & hud . diSelection ?~ Sel (-1) 0 & hud . diInvFilter %~ enterregex Just NoSubInventory{} | secfocus [2, 3] -> - w & hud . diSelection ?~ Sel 2 0 mempty + -- w & hud . diSelection ?~ Sel 2 0 mempty + w & hud . diSelection ?~ Sel 2 0 & hud . diCloseFilter %~ enterregex Just CombineInventory{} -> w & hud . subInventory . ciFilter %~ enterregex - & hud . subInventory . ciSelection ?~ Sel (-1) 0 mempty +-- & hud . subInventory . ciSelection ?~ Sel (-1) 0 mempty + & hud . subInventory . ciSelection ?~ Sel (-1) 0 _ -> w where secfocus xs = fromMaybe False $ do @@ -567,7 +612,8 @@ tryCombine (i, j) w = fromMaybe w $ do return $ createItemYou it (foldr (destroyInvItem 0 . NInt) w (sort is)) & soundStart InventorySound p wrench1S Nothing - & hud . diSelection . _Just . slSet .~ mempty + & hud . diSections . ix 1 . ssSet.~ mempty +-- & hud . diSelection . _Just . slSet .~ mempty maybeExitCombine :: World -> World maybeExitCombine w diff --git a/tags b/tags index 081a8de13..c58241814 100644 --- a/tags +++ b/tags @@ -229,7 +229,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 21;" C CombineInventoryChange src/Dodge/Data/World.hs 33;" C ComsSS src/Dodge/Data/Scenario.hs 98;" C ConcurrentEffect src/Loop/Data.hs 6;" t @@ -334,7 +334,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 26;" 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 @@ -399,7 +399,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 15;" 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 @@ -526,7 +526,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 28;" t HalfRes src/Dodge/Data/Config.hs 115;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 68;" C @@ -733,7 +733,7 @@ MakeTempLightFade src/Dodge/Data/WorldEffect.hs 37;" C ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" t Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C -MapperInventory src/Dodge/Data/HUD.hs 17;" C +MapperInventory src/Dodge/Data/HUD.hs 16;" 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 @@ -855,7 +855,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 14;" 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 @@ -1181,14 +1181,14 @@ 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 39;" C +Sel src/Dodge/Data/HUD.hs 38;" C SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 32;" C SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" C SelItem src/Dodge/Data/SelectionList.hs 47;" C SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C SelSection src/Dodge/Data/SelectionList.hs 32;" t SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" C -Selection src/Dodge/Data/HUD.hs 39;" t +Selection src/Dodge/Data/HUD.hs 38;" 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 @@ -1289,7 +1289,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 13;" t Superfluous src/Shape/Data.hs 34;" C Surface src/Shape/Data.hs 38;" t Survive src/Dodge/Data/Scenario.hs 5;" C @@ -1673,11 +1673,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 24;" 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 22;" f +_ciSelection src/Dodge/Data/HUD.hs 23;" 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 @@ -1687,8 +1687,8 @@ _clZoning src/Dodge/Data/World.hs 50;" f _clickPos src/Dodge/Data/Input.hs 42;" f _clickWorldPos src/Dodge/Data/Input.hs 44;" 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 35;" f +_closeItems src/Dodge/Data/HUD.hs 34;" 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 @@ -1758,10 +1758,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 33;" f +_diInvFilter src/Dodge/Data/HUD.hs 32;" f +_diSections src/Dodge/Data/HUD.hs 30;" f +_diSelection src/Dodge/Data/HUD.hs 31;" 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 @@ -2033,9 +2033,9 @@ _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/Item/Use/Consumption/LoadAction.hs 16;" 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 +_mapInvItmID src/Dodge/Data/HUD.hs 19;" f +_mapInvOffset src/Dodge/Data/HUD.hs 17;" f +_mapInvZoom src/Dodge/Data/HUD.hs 18;" 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 @@ -2379,9 +2379,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 39;" f -_slSec src/Dodge/Data/HUD.hs 39;" f -_slSet src/Dodge/Data/HUD.hs 39;" f +_slInt src/Dodge/Data/HUD.hs 38;" f +_slSec src/Dodge/Data/HUD.hs 38;" 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 @@ -2422,7 +2421,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 29;" 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 @@ -2447,7 +2446,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 26;" 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 @@ -2653,7 +2652,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 500;" f +advanceScrollAmount src/Dodge/Update.hs 501;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f aimDelaySweep src/Dodge/Render/Picture.hs 291;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f @@ -2676,7 +2675,7 @@ anRoom src/Dodge/Floor.hs 116;" f analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f analyserByDoor src/Dodge/Room/LasTurret.hs 126;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 112;" f -andOrRegex src/Dodge/DisplayInventory.hs 78;" f +andOrRegex src/Dodge/DisplayInventory.hs 79;" f angleBetween src/Geometry.hs 158;" f angleThreeSides src/Geometry/Vector.hs 71;" f angleVV src/Geometry/Vector.hs 58;" f @@ -2874,7 +2873,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 1004;" f +canSpring src/Dodge/Update.hs 1005;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 67;" f card8Vec src/Dodge/Base/CardinalPoint.hs 32;" f @@ -2893,10 +2892,10 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 271;" f centroid src/Geometry/Polygon.hs 192;" f centroidNum src/Geometry/Polygon.hs 195;" f chainPairs src/Geometry.hs 360;" f -changeSwapOther src/Dodge/Inventory.hs 246;" f -changeSwapSel src/Dodge/Inventory.hs 218;" f +changeSwapOther src/Dodge/Inventory.hs 251;" f +changeSwapSel src/Dodge/Inventory.hs 220;" f changeSwapSelSet src/Dodge/Inventory.hs 155;" f -changeSwapWith src/Dodge/Inventory.hs 286;" f +changeSwapWith src/Dodge/Inventory.hs 291;" f charToTuple src/Picture/Base.hs 312;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f @@ -2909,16 +2908,16 @@ chasmSimpleMaze src/Dodge/Room/Tutorial.hs 417;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 348;" f chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 126;" f chasmWallToSurface src/Dodge/Base/Collide.hs 133;" f -checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f -checkConnection src/Dodge/Inventory/Swap.hs 66;" f +checkCombineSelectionExists src/Dodge/DisplayInventory.hs 101;" f +checkConnection src/Dodge/Inventory/Swap.hs 75;" f checkDeath src/Dodge/Creature/Update.hs 461;" f checkDeath' src/Dodge/Creature/Update.hs 464;" f -checkEndGame src/Dodge/Update.hs 890;" 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 93;" f +checkInventorySelectionExists src/Dodge/DisplayInventory.hs 94;" f checkTermDist src/Dodge/Update.hs 413;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f @@ -2965,7 +2964,7 @@ closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 237;" f closeItemDist src/Dodge/Inventory.hs 152;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 221;" f closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 260;" f -closeObjectInfo src/Dodge/Render/HUD.hs 228;" f +closeObjectInfo src/Dodge/Render/HUD.hs 243;" f closestCrToMouse src/Dodge/Debug.hs 308;" f closestPointOnLine src/Geometry/Intersect.hs 286;" f closestPointOnLineParam src/Geometry/Intersect.hs 302;" f @@ -2980,7 +2979,7 @@ cognizantVoc src/Dodge/Creature/Perception.hs 68;" f colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f collectDamageTypes src/Dodge/Damage.hs 54;" f -collectInvItems src/Dodge/Inventory.hs 208;" f +collectInvItems src/Dodge/Inventory.hs 210;" f collide3 src/Dodge/Base/Collide.hs 142;" f collide3Chasm src/Dodge/Base/Collide.hs 126;" f collide3Chasms src/Dodge/Base/Collide.hs 118;" f @@ -3000,7 +2999,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 44;" f combineAwareness src/Dodge/Creature/Perception.hs 119;" f combineFloors src/Dodge/Room/Procedural.hs 154;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 340;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 355;" f combineItemListYouX src/Dodge/Combine.hs 36;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 134;" f @@ -3022,12 +3021,12 @@ compressionScale src/Dodge/Creature/State/WalkCycle.hs 69;" f compressor src/Dodge/Item/Ammo.hs 74;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 716;" f conEffects src/Dodge/Concurrent.hs 12;" f -concurrentIS src/Dodge/Inventory.hs 200;" f +concurrentIS src/Dodge/Inventory.hs 202;" f 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 411;" f +continueTerminal src/Dodge/Update/Input/InGame.hs 452;" f convexHull src/Geometry/Polygon.hs 150;" f convexHullSafe src/Geometry/Polygon.hs 172;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 48;" f @@ -3048,7 +3047,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 1011;" 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 @@ -3088,7 +3087,7 @@ crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 999;" 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 @@ -3114,7 +3113,7 @@ crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 10;" f createHeadLamp src/Dodge/Euse.hs 64;" f -createItemYou src/Dodge/Inventory/Add.hs 62;" f +createItemYou src/Dodge/Inventory/Add.hs 64;" f createLightMap src/Render.hs 26;" f createProjectile src/Dodge/HeldUse.hs 1305;" f createProjectileR src/Dodge/HeldUse.hs 1254;" f @@ -3329,7 +3328,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 50;" f displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 192;" f -displayTerminalLineString src/Dodge/Update.hs 585;" 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 @@ -3388,7 +3387,7 @@ doPreload appDodge/Main.hs 133;" f doQuickload src/Dodge/Save.hs 83;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 8;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 457;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 498;" f doRoomPlacements src/Dodge/Layout.hs 121;" f doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f @@ -3407,7 +3406,7 @@ 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 509;" 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 @@ -3439,7 +3438,7 @@ drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 273;" f -drawCombineInventory src/Dodge/Render/HUD.hs 190;" f +drawCombineInventory src/Dodge/Render/HUD.hs 205;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 72;" f drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f @@ -3460,13 +3459,13 @@ drawDrag src/Dodge/Render/Picture.hs 204;" f drawDragDrop src/Dodge/Render/Picture.hs 233;" f drawDragPickup src/Dodge/Render/Picture.hs 242;" f drawDragSelect src/Dodge/Render/Picture.hs 197;" f -drawDragSelected src/Dodge/Render/HUD.hs 144;" f -drawDragSelecting src/Dodge/Render/HUD.hs 162;" f +drawDragSelected src/Dodge/Render/HUD.hs 145;" f +drawDragSelecting src/Dodge/Render/HUD.hs 177;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f drawEmptySet src/Dodge/Render/Picture.hs 153;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 426;" f -drawExamineInventory src/Dodge/Render/HUD.hs 199;" f +drawExamineInventory src/Dodge/Render/HUD.hs 214;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f @@ -3481,8 +3480,8 @@ drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f drawInspectWall src/Dodge/Debug/Picture.hs 256;" f drawInspectWalls src/Dodge/Debug/Picture.hs 244;" f drawInventory src/Dodge/Render/HUD.hs 61;" f -drawItemChildrenConnect src/Dodge/Render/HUD.hs 332;" f -drawItemConnections src/Dodge/Render/HUD.hs 325;" f +drawItemChildrenConnect src/Dodge/Render/HUD.hs 347;" f +drawItemConnections src/Dodge/Render/HUD.hs 340;" f drawJumpDown src/Dodge/Render/Picture.hs 192;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLabelledList src/Dodge/Render/List.hs 198;" f @@ -3496,7 +3495,7 @@ drawListYoff src/Dodge/Render/List.hs 89;" f drawLoadingScreen src/Dodge/Render/MenuScreen.hs 24;" f drawMachine src/Dodge/Machine/Draw.hs 18;" f drawMapperAR src/Dodge/Targeting/Draw.hs 12;" f -drawMapperInventory src/Dodge/Render/HUD.hs 181;" f +drawMapperInventory src/Dodge/Render/HUD.hs 196;" f drawMenuClick src/Dodge/Render/Picture.hs 168;" f drawMenuCursor src/Dodge/Render/Picture.hs 180;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 67;" f @@ -3515,7 +3514,7 @@ drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawPulseBall src/Dodge/Render/ShapePicture.hs 95;" f drawPulseLaser src/Dodge/Laser/Update.hs 42;" f drawQuitTerminal src/Dodge/Render/Picture.hs 147;" f -drawRBOptions src/Dodge/Render/HUD.hs 253;" f +drawRBOptions src/Dodge/Render/HUD.hs 268;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 38;" f drawReturn src/Dodge/Render/Picture.hs 156;" f @@ -3533,12 +3532,12 @@ drawSlimeCrit src/Dodge/Creature/Picture.hs 57;" f drawSlinkCrit src/Dodge/Creature/Picture.hs 86;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f -drawSubInventory src/Dodge/Render/HUD.hs 173;" f +drawSubInventory src/Dodge/Render/HUD.hs 188;" f drawSwitch src/Dodge/Button/Draw.hs 18;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f -drawTerminalCursorLink src/Dodge/Render/HUD.hs 396;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 357;" f +drawTerminalCursorLink src/Dodge/Render/HUD.hs 411;" f +drawTerminalDisplay src/Dodge/Render/HUD.hs 372;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f drawText src/Picture/Base.hs 224;" f drawTitle src/Dodge/Render/MenuScreen.hs 49;" f @@ -3600,16 +3599,16 @@ 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 310;" f -endRegex src/Dodge/Update/Input/InGame.hs 304;" f +endCombineRegex src/Dodge/Update/Input/InGame.hs 340;" f +endRegex src/Dodge/Update/Input/InGame.hs 334;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f -enterCombineInv src/Dodge/DisplayInventory.hs 322;" f +enterCombineInv src/Dodge/DisplayInventory.hs 321;" f enumOption src/Dodge/Menu/OptionType.hs 17;" f epText src/Dodge/Inventory/SelectionList.hs 74;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqTypeToSites src/Dodge/Inventory/RBList.hs 77;" f -equipAllocString src/Dodge/Render/HUD.hs 316;" f +equipAllocString src/Dodge/Render/HUD.hs 331;" f equipAttachPos src/Dodge/Item/Draw.hs 30;" f equipBackgroundEffect src/Dodge/Euse.hs 22;" f equipInfo src/Dodge/Item/Info.hs 140;" f @@ -3648,7 +3647,7 @@ faceEdges src/Polyhedra.hs 62;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f fdiv src/ShortShow.hs 41;" f -feedSlime src/Dodge/Update.hs 1079;" 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 160;" f @@ -3692,7 +3691,7 @@ flockACC src/Dodge/Creature/ReaderUpdate.hs 97;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 233;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 248;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 143;" f floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f @@ -3727,7 +3726,7 @@ fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 44;" f functionalUpdate src/Dodge/Update.hs 278;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f -fuseSlimes src/Dodge/Update.hs 1093;" 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 @@ -3740,7 +3739,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 915;" 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 @@ -3760,13 +3759,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 543;" f +getCloseObj src/Dodge/Update/Input/InGame.hs 588;" 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 475;" 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 @@ -3776,7 +3775,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 487;" 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 @@ -3981,21 +3980,21 @@ invDP src/Dodge/ListDisplayParams.hs 32;" f invDT src/Dodge/Item/Grammar.hs 227;" f invDT' src/Dodge/Item/Grammar.hs 232;" f invDimColor src/Dodge/DisplayInventory.hs 190;" f -invHead src/Dodge/Render/HUD.hs 426;" f +invHead src/Dodge/Render/HUD.hs 441;" f invIMDT src/Dodge/Item/Grammar.hs 256;" f invIndents src/Dodge/Item/Grammar.hs 263;" f invItemEffs src/Dodge/Creature/State.hs 91;" f invItemLocUpdate src/Dodge/Creature/State.hs 99;" f invRootMap src/Dodge/Item/Grammar.hs 237;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 33;" f -invSetSelection src/Dodge/Inventory.hs 291;" f -invSetSelectionPos src/Dodge/Inventory.hs 299;" f +invSetSelection src/Dodge/Inventory.hs 296;" f +invSetSelectionPos src/Dodge/Inventory.hs 304;" f invShiftPointBy src/Dodge/ShiftPoint.hs 17;" f invSize src/Dodge/Inventory/CheckSlots.hs 33;" f inventoryX src/Dodge/Creature.hs 103;" f -inverseSelNumPos src/Dodge/SelectionSections.hs 216;" f -inverseSelSecYint src/Dodge/SelectionSections.hs 184;" f -inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 197;" f +inverseSelNumPos src/Dodge/SelectionSections.hs 213;" f +inverseSelSecYint src/Dodge/SelectionSections.hs 181;" f +inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 194;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 44;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 16;" f invertIntMap src/IntMapHelp.hs 100;" f @@ -4008,10 +4007,10 @@ isAmmoIntLink src/Dodge/HeldUse.hs 738;" f isAnimate src/Dodge/Creature/Test.hs 128;" f isBee src/Dodge/TestString.hs 45;" f isCognizant src/Dodge/Creature/Perception.hs 115;" f -isConnected src/Dodge/Inventory/Swap.hs 77;" f +isConnected src/Dodge/Inventory/Swap.hs 86;" f isCornerLink src/Dodge/RoomLink.hs 66;" f isFlyable src/Dodge/WorldEvent/ThingsHit.hs 232;" f -isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 232;" f +isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 262;" f isInLnk src/Dodge/PlacementSpot.hs 163;" f isJust' src/MaybeHelp.hs 27;" f isLHS src/Geometry/LHS.hs 12;" f @@ -4170,10 +4169,10 @@ listConfig src/Dodge/Menu.hs 232;" f listControls src/Dodge/Menu.hs 244;" f listCursor src/Dodge/Render/List.hs 120;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 287;" f -listSelectionColorPicture src/Dodge/DisplayInventory.hs 300;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 415;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 430;" f loadAmmoTut src/Dodge/Room/Tutorial.hs 475;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f @@ -4300,7 +4299,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 572;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 618;" f maybeOpenConsole src/Dodge/Update.hs 135;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 135;" f @@ -4419,8 +4418,8 @@ multGunCrit src/Dodge/Creature.hs 68;" f multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f -multiSelScroll src/Dodge/Inventory.hs 225;" f -multiSelScroll' src/Dodge/Inventory.hs 232;" f +multiSelScroll src/Dodge/Inventory.hs 227;" f +multiSelScroll' src/Dodge/Inventory.hs 234;" f muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 702;" f muzzlePos src/Dodge/HeldUse.hs 787;" f @@ -4429,7 +4428,7 @@ muzzleWallCheck src/Dodge/Update.hs 351;" 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 906;" 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 @@ -4454,7 +4453,7 @@ newSounds src/Dodge/Creature/Perception.hs 175;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f nextArc src/Dodge/Tesla.hs 61;" f -nextInSectionSS src/Dodge/SelectionSections.hs 39;" f +nextInSectionSS src/Dodge/SelectionSections.hs 33;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f @@ -4496,7 +4495,7 @@ optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 53;" f optionValueOffset src/Dodge/Menu/Option.hs 86;" f optionsOptions src/Dodge/Menu.hs 113;" f optionsToSelections src/Dodge/Menu/Option.hs 47;" f -orRegex src/Dodge/DisplayInventory.hs 81;" f +orRegex src/Dodge/DisplayInventory.hs 82;" f orange src/Color.hs 52;" f orderAround3 src/Geometry/Vector3D.hs 106;" f orderAroundFirst src/Geometry/Polygon.hs 128;" f @@ -4542,12 +4541,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 535;" f +pauseGame src/Dodge/Update/Input/InGame.hs 580;" 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 219;" f -pbFlicker src/Dodge/Update.hs 570;" 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 @@ -4560,8 +4559,8 @@ performAimAt src/Dodge/Creature/Action.hs 108;" f performPathTo src/Dodge/Creature/Action.hs 129;" f performTurnToA src/Dodge/Creature/Action.hs 149;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f -pickUpItem src/Dodge/Inventory/Add.hs 70;" f -pickUpItemAt src/Dodge/Inventory/Add.hs 75;" f +pickUpItem src/Dodge/Inventory/Add.hs 72;" f +pickUpItemAt src/Dodge/Inventory/Add.hs 77;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 830;" f pincerP src/Dodge/Creature/Boid.hs 63;" f pincerP' src/Dodge/Creature/Boid.hs 96;" f @@ -4672,7 +4671,7 @@ pop3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 838;" f popS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posRms src/Dodge/Tree/Shift.hs 46;" f -posSelSecYint src/Dodge/SelectionSections.hs 166;" f +posSelSecYint src/Dodge/SelectionSections.hs 163;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 36;" f postGenerationProcessing src/Dodge/LevelGen.hs 31;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 14;" f @@ -4767,7 +4766,7 @@ rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToCompass src/Dodge/Inventory/SelectionList.hs 111;" f radToDeg src/Geometry/Vector.hs 131;" f -radiusSpring src/Dodge/Update.hs 988;" 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 @@ -4789,7 +4788,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 757;" 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 @@ -4832,8 +4831,8 @@ reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 20;" f reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 65;" f refract src/Dodge/Item/Weapon/LaserPath.hs 39;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 35;" f -regexCombs src/Dodge/DisplayInventory.hs 71;" f -regexList src/Dodge/DisplayInventory.hs 313;" f +regexCombs src/Dodge/DisplayInventory.hs 72;" f +regexList src/Dodge/DisplayInventory.hs 312;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 754;" f reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 860;" f reloadLevelStart src/Dodge/Save.hs 71;" f @@ -4990,10 +4989,10 @@ screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f screenPosAbs src/Dodge/ScreenPos.hs 16;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 45;" f -scrollAugInvSel src/Dodge/Inventory.hs 302;" f -scrollAugNextInSection src/Dodge/Inventory.hs 316;" f +scrollAugInvSel src/Dodge/Inventory.hs 307;" f +scrollAugNextInSection src/Dodge/Inventory.hs 321;" f scrollRBOption src/Dodge/Update/Scroll.hs 139;" f -scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f +scrollSelectionSections src/Dodge/SelectionSections.hs 27;" f scrollTimeBack src/Dodge/Update.hs 245;" f scrollTimeForward src/Dodge/Update.hs 262;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f @@ -5013,14 +5012,14 @@ seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f segmentArea src/Dodge/Creature/Update.hs 355;" f -selNumPos src/Dodge/Render/HUD.hs 475;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 492;" f +selNumPos src/Dodge/Render/HUD.hs 490;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 507;" f selSecDrawCursor src/Dodge/Render/List.hs 101;" f -selSecSelCol src/Dodge/Render/HUD.hs 512;" f -selSecSelSize src/Dodge/SelectionSections.hs 162;" f -selSecYint src/Dodge/SelectionSections.hs 171;" f +selSecSelCol src/Dodge/Render/HUD.hs 527;" f +selSecSelSize src/Dodge/SelectionSections.hs 159;" f +selSecYint src/Dodge/SelectionSections.hs 168;" f selectedItemScroll src/Dodge/Update/Scroll.hs 49;" f -selectionSet src/Dodge/Update/Input/InGame.hs 171;" f +selectionSet src/Dodge/Update/Input/InGame.hs 172;" 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 @@ -5049,13 +5048,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 601;" 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 137;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 318;" f -setSelWhileDragging src/Dodge/Update/Input/InGame.hs 360;" f +setSelWhileDragging src/Dodge/Update/Input/InGame.hs 396;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5098,9 +5097,9 @@ 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 328;" f -shiftInvItemsDown src/Dodge/Inventory.hs 184;" f -shiftInvItemsUp src/Dodge/Inventory.hs 194;" f +shiftInvItems src/Dodge/Update/Input/InGame.hs 364;" f +shiftInvItemsDown src/Dodge/Inventory.hs 186;" f +shiftInvItemsUp src/Dodge/Inventory.hs 196;" f shiftLinkBy src/Dodge/Room/Link.hs 89;" f shiftPSBy src/Dodge/Placement/Shift.hs 12;" f shiftPathBy src/Dodge/Room/Link.hs 94;" f @@ -5112,8 +5111,8 @@ shiftRelativeToPS src/Dodge/Placement/Shift.hs 18;" f shiftRoomBy src/Dodge/Room/Link.hs 38;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 83;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 74;" f -shiftSetDown src/Dodge/Inventory.hs 177;" f -shiftSetUp src/Dodge/Inventory.hs 171;" f +shiftSetDown src/Dodge/Inventory.hs 179;" f +shiftSetUp src/Dodge/Inventory.hs 173;" f shiftTile src/Dodge/Room/Link.hs 49;" f shineTargetLaser src/Dodge/Creature/State.hs 229;" f shineTorch src/Dodge/Creature/State.hs 266;" f @@ -5140,10 +5139,10 @@ showEquipItem src/Dodge/Item/Display.hs 109;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 87;" f -showManObj src/Dodge/TestString.hs 127;" f +showManObj src/Dodge/TestString.hs 128;" f showMuzzlePositions src/Dodge/Debug.hs 320;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 144;" f +showTimeFlow src/Dodge/TestString.hs 145;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5152,7 +5151,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 993;" 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 @@ -5180,10 +5179,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 1109;" f -slimeFood src/Dodge/Update.hs 1071;" 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 1055;" 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 @@ -5232,7 +5231,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 538;" f +spaceAction src/Dodge/Update/Input/InGame.hs 583;" 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 @@ -5270,21 +5269,21 @@ square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 127;" f squashNormalizeV src/Geometry/Vector.hs 166;" f -ssLookupDown src/Dodge/SelectionSections.hs 101;" f -ssLookupGE' src/Dodge/SelectionSections.hs 155;" f -ssLookupGT src/Dodge/SelectionSections.hs 142;" f -ssLookupGT' src/Dodge/SelectionSections.hs 148;" f -ssLookupLE' src/Dodge/SelectionSections.hs 130;" f -ssLookupLT src/Dodge/SelectionSections.hs 117;" f -ssLookupLT' src/Dodge/SelectionSections.hs 123;" f -ssLookupMax src/Dodge/SelectionSections.hs 91;" f -ssLookupMaxInSection src/Dodge/SelectionSections.hs 111;" f -ssLookupMin src/Dodge/SelectionSections.hs 137;" f -ssLookupNextMax src/Dodge/SelectionSections.hs 106;" f -ssLookupUp src/Dodge/SelectionSections.hs 96;" f -ssScrollMinOnFail src/Dodge/SelectionSections.hs 50;" f -ssScrollUsing src/Dodge/SelectionSections.hs 42;" f -ssSetCursor src/Dodge/SelectionSections.hs 78;" f +ssLookupDown src/Dodge/SelectionSections.hs 98;" f +ssLookupGE' src/Dodge/SelectionSections.hs 152;" f +ssLookupGT src/Dodge/SelectionSections.hs 139;" f +ssLookupGT' src/Dodge/SelectionSections.hs 145;" f +ssLookupLE' src/Dodge/SelectionSections.hs 127;" f +ssLookupLT src/Dodge/SelectionSections.hs 114;" f +ssLookupLT' src/Dodge/SelectionSections.hs 120;" f +ssLookupMax src/Dodge/SelectionSections.hs 88;" f +ssLookupMaxInSection src/Dodge/SelectionSections.hs 108;" f +ssLookupMin src/Dodge/SelectionSections.hs 134;" f +ssLookupNextMax src/Dodge/SelectionSections.hs 103;" f +ssLookupUp src/Dodge/SelectionSections.hs 93;" f +ssScrollMinOnFail src/Dodge/SelectionSections.hs 44;" f +ssScrollUsing src/Dodge/SelectionSections.hs 36;" f +ssSetCursor src/Dodge/SelectionSections.hs 72;" f ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 95;" f stackPicturesAtOff src/Dodge/Render/List.hs 98;" f @@ -5293,7 +5292,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 319;" f +startDrag src/Dodge/Update/Input/InGame.hs 349;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f @@ -5329,11 +5328,11 @@ subMap src/TreeHelp.hs 121;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f subtree src/TreeHelp.hs 72;" f succB src/Dodge/Debug.hs 174;" f -swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f +swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 58;" f swapInOutLinks src/Dodge/RoomLink.hs 99;" f swapIndices src/ListHelp.hs 50;" f -swapInvItems src/Dodge/Inventory/Swap.hs 22;" f -swapItemWith src/Dodge/Inventory.hs 275;" f +swapInvItems src/Dodge/Inventory/Swap.hs 23;" f +swapItemWith src/Dodge/Inventory.hs 280;" f swapSelSet src/Dodge/Inventory.hs 160;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f @@ -5439,7 +5438,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 467;" f +tmScreenMousePos src/Dodge/Update.hs 468;" f toBinary src/Dodge/Inventory/SelectionList.hs 154;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5454,7 +5453,7 @@ toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f toV4 src/Geometry/Data.hs 60;" f tocrs src/Dodge/TestString.hs 40;" f -toggleCombineInv src/Dodge/DisplayInventory.hs 316;" f +toggleCombineInv src/Dodge/DisplayInventory.hs 315;" f toggleCommands src/Dodge/Terminal.hs 86;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 68;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 106;" f @@ -5468,7 +5467,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 714;" f topInvW src/Dodge/ListDisplayParams.hs 56;" f topPrismEdgeIndices src/Shader/Poke.hs 344;" f topPrismIndices src/Shader/Poke.hs 419;" f -topTestPart src/Dodge/TestString.hs 122;" f +topTestPart src/Dodge/TestString.hs 123;" f torchShape src/Dodge/Item/Draw/SPic.hs 278;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f @@ -5522,17 +5521,17 @@ 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 207;" f -tryCombine src/Dodge/Update/Input/InGame.hs 555;" f +tryCombine src/Dodge/Update/Input/InGame.hs 600;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 179;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 159;" f tryEvadeSideways src/Dodge/Creature/Action.hs 101;" f tryGetChannel src/Sound.hs 99;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 42;" f -tryPickupSelected src/Dodge/Update/Input/InGame.hs 177;" f +tryPickupSelected src/Dodge/Update/Input/InGame.hs 184;" f tryPlay src/Sound.hs 85;" f -tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f -tryPutItemInInvAt src/Dodge/Inventory/Add.hs 54;" f +tryPutItemInInv src/Dodge/Inventory/Add.hs 25;" f +tryPutItemInInvAt src/Dodge/Inventory/Add.hs 56;" f trySeedFromClipboard src/Dodge/Menu.hs 94;" f trySpin src/Dodge/Projectile/Update.hs 120;" f trySynthBullet src/Dodge/Creature/State.hs 195;" f @@ -5582,17 +5581,17 @@ updateAggroBee src/Dodge/Creature/Update.hs 129;" f updateAimPos src/Dodge/Update.hs 400;" f updateAllNodes src/TreeHelp.hs 88;" f updateArc src/Dodge/Tesla.hs 44;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 529;" 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 786;" f +updateBeePheremone src/Dodge/Update.hs 787;" f updateBounds src/Dodge/Update/Camera.hs 262;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 672;" 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 33;" f @@ -5600,108 +5599,108 @@ 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 129;" f -updateCloud src/Dodge/Update.hs 919;" f -updateClouds src/Dodge/Update.hs 783;" f -updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f -updateCombineSections src/Dodge/DisplayInventory.hs 47;" f +updateCloud src/Dodge/Update.hs 920;" f +updateClouds src/Dodge/Update.hs 784;" f +updateCombinePositioning src/Dodge/DisplayInventory.hs 41;" f +updateCombineSections src/Dodge/DisplayInventory.hs 48;" f updateCreature src/Dodge/Creature/Update.hs 50;" f -updateCreatureGroups src/Dodge/Update.hs 644;" f -updateCreatureSoundPositions src/Dodge/Update.hs 623;" f +updateCreatureGroups src/Dodge/Update.hs 645;" f +updateCreatureSoundPositions src/Dodge/Update.hs 624;" f updateCreatureStride src/Dodge/Update.hs 379;" f updateCreatureStrides src/Dodge/Update.hs 376;" f -updateDebris src/Dodge/Update.hs 686;" 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 1116;" f +updateDelayedEvents src/Dodge/Update.hs 1117;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 665;" f +updateDistortions src/Dodge/Update.hs 666;" f updateDoor src/Dodge/Door.hs 22;" f updateDoors src/Dodge/Update.hs 405;" f -updateDust src/Dodge/Update.hs 967;" f -updateDusts src/Dodge/Update.hs 794;" 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 774;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 515;" f +updateEnergyBalls src/Dodge/Update.hs 775;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 557;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 771;" f +updateFlames src/Dodge/Update.hs 772;" f updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f updateFoodSearchChaseCrit src/Dodge/Creature/Update.hs 381;" f -updateFunctionKey src/Dodge/Update/Input/InGame.hs 372;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f -updateGas src/Dodge/Update.hs 941;" f -updateGusts src/Dodge/Update.hs 903;" f +updateFunctionKey src/Dodge/Update/Input/InGame.hs 413;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 409;" 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 638;" f -updateIMl' src/Dodge/Update.hs 641;" f +updateIMl src/Dodge/Update.hs 639;" f +updateIMl' src/Dodge/Update.hs 642;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 438;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 479;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f -updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f +updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f updateItemTargeting src/Dodge/Creature/State.hs 288;" f -updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 405;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 432;" f +updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 446;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 473;" f updateKeysInGame src/Dodge/Update/Input/InGame.hs 87;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 391;" f -updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 414;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 432;" f +updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 455;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 12;" f -updateLasers src/Dodge/Update.hs 516;" f +updateLasers src/Dodge/Update.hs 517;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLivingCreature src/Dodge/Creature/Update.hs 61;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 492;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 408;" f -updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 238;" f +updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 268;" f updateMouseContext src/Dodge/Update.hs 421;" f updateMouseContextGame src/Dodge/Update.hs 426;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 100;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 90;" f -updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 201;" f -updateObjCatMaybes src/Dodge/Update.hs 656;" f -updateObjMapMaybe src/Dodge/Update.hs 649;" f -updatePastWorlds src/Dodge/Update.hs 505;" f -updatePlasmaBall src/Dodge/Update.hs 530;" f -updatePlasmaBalls src/Dodge/Update.hs 679;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 210;" 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 550;" f -updatePulseLaser src/Dodge/Update.hs 726;" f -updatePulseLasers src/Dodge/Update.hs 525;" 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 668;" f +updateRadarBlips src/Dodge/Update.hs 669;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 777;" 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 updateRootItemID src/Dodge/Inventory/Location.hs 42;" f updateScopeZoom src/Dodge/Update/Scroll.hs 77;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f -updateSection src/Dodge/DisplayInventory.hs 262;" f +updateSection src/Dodge/DisplayInventory.hs 261;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 768;" 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 780;" f -updateTerminal src/Dodge/Update.hs 588;" f -updateTeslaArc src/Dodge/Update.hs 696;" f -updateTeslaArcs src/Dodge/Update.hs 693;" 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 765;" 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 @@ -5712,7 +5711,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 495;" 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 @@ -5878,7 +5877,7 @@ yV2 src/Geometry/Vector.hs 213;" f yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f youDropItem src/Dodge/Creature/Action.hs 195;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 255;" f yourControl src/Dodge/Creature/YourControl.hs 26;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 109;" f yourInfo src/Dodge/Creature/Info.hs 10;" f @@ -5896,11 +5895,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 577;" f +zoneClouds src/Dodge/Update.hs 578;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f -zoneCreatures src/Dodge/Update.hs 612;" f +zoneCreatures src/Dodge/Update.hs 613;" f zoneDust src/Dodge/Zoning/Cloud.hs 57;" f -zoneDusts src/Dodge/Update.hs 582;" 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