diff --git a/ghcidOutput b/ghcidOutput index 024bd44f6..179966296 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,15 +1 @@ -/home/justin/Haskell/loop/src/Dodge/Update/Input/InGame.hs:211:9-11: warning: [-Wunused-matches] - Defined but not used: ‘sss’ - | -211 | sss <- he ^? diSections - | ^^^ -/home/justin/Haskell/loop/src/Dodge/Update/Input/InGame.hs:219:9-11: warning: [-Wunused-matches] - Defined but not used: ‘sss’ - | -219 | sss <- ci ^? ciSections - | ^^^ -/home/justin/Haskell/loop/src/Dodge/InputFocus.hs:14:1-31: warning: [-Wunused-imports] - The import of ‘Dodge.Data.SelectionList’ is redundant - | -14 | import Dodge.Data.SelectionList - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All good (595 modules, at 22:15:48) diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 2ebf724a1..187501da6 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -185,7 +185,7 @@ youDropItem :: World -> World youDropItem w = fromMaybe w $ do curpos <- you w ^? crManipulation . manObject . imSelectedItem - <|> fmap fst (IM.lookupMax =<< w ^? hud . hudElement . diSections . sssSections . ix 0 . ssItems) + <|> fmap fst (IM.lookupMax =<< w ^? hud . hudElement . diSections . ix 0 . ssItems) guard $ not $ _crInvLock (you w) return $ w diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index fcbb7cfed..b75c19f5f 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -16,7 +16,7 @@ import Geometry.Data data HUDElement = DisplayInventory { _subInventory :: SubInventory - , _diSections :: SelectionSections () + , _diSections :: IntMap (SelectionSection ()) , _diSelection :: Maybe (Int, Int) , _diFilters :: IntMap (Maybe String) , _diSelectionExtra :: Int @@ -36,7 +36,7 @@ data SubInventory } | ExamineInventory | CombineInventory - { _ciSections :: SelectionSections CombinableItem + { _ciSections :: IntMap (SelectionSection CombinableItem) , _ciSelection :: Maybe (Int, Int) , _ciFilters :: IntMap (Maybe String) } diff --git a/src/Dodge/Data/SelectionList.hs b/src/Dodge/Data/SelectionList.hs index 360c71fe8..c89c15892 100644 --- a/src/Dodge/Data/SelectionList.hs +++ b/src/Dodge/Data/SelectionList.hs @@ -33,17 +33,9 @@ data SelectionList a = SelectionList , _slSelPos :: Maybe Int } -data SelectionSections a = SelectionSections - { _sssSections :: IntMap (SelectionSection a) --- , _sssExtra :: SSSExtra - } - --- note that filters are arbitrary: the sssFilters point to the lower of --- a pair of ints (i,i+1) such that the lower is the regex section, the higher --- is the items section. -newtype SSSExtra = SSSExtra - { _sssFilters :: IntMap (Maybe String) - } +--data SelectionSections a = SelectionSections +-- { _sssSections :: IntMap (SelectionSection a) +-- } data SectionCursor = SectionCursor { _scurPos :: Int @@ -87,8 +79,7 @@ makeLenses ''ListDisplayParams makeLenses ''SelectionList makeLenses ''SelectionItem makeLenses ''SelectionSection -makeLenses ''SelectionSections -makeLenses ''SSSExtra +--makeLenses ''SelectionSections makeLenses ''SectionCursor makeLenses ''CursorDisplay diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index fc869ce32..cc9a30580 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -177,11 +177,8 @@ defaultDisplayInventory = -- { _sssFilters = IM.fromList [(-1, mempty), (2, mempty)] -- } -defaultInvSections :: SelectionSections () -defaultInvSections = - SelectionSections - { _sssSections = - IM.fromDistinctAscList $ +defaultInvSections :: IM.IntMap (SelectionSection ()) +defaultInvSections = IM.fromDistinctAscList $ zip [-1 ..] [ defaultFiltSection @@ -191,8 +188,6 @@ defaultInvSections = & ssDescriptor .~ "NEARBY" , defaultCOSection ] --- , _sssExtra = defaultSSSExtra - } defaultSS :: SelectionSection a defaultSS = diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 1d785e06f..df7037c84 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -36,10 +36,13 @@ updateCombinePositioning u = u & uvWorld . hud . hudElement . subInventory . ciSections %~ updateCombineSections (_uvWorld u) (_uvConfig u) -updateCombineSections :: World -> Configuration -> SelectionSections CombinableItem -> SelectionSections CombinableItem +updateCombineSections :: + World -> + Configuration -> + IM.IntMap (SelectionSection CombinableItem) -> + IM.IntMap (SelectionSection CombinableItem) updateCombineSections w cfig = - sssSections - %~ updateSectionsPositioning + updateSectionsPositioning mselpos availablelines [(0, showncombs), (-1, filtinv)] @@ -49,11 +52,12 @@ updateCombineSections w cfig = allcombs = IM.fromDistinctAscList $ zip [0 ..] $ combineList w filtcombs = fromMaybe allcombs $ do str <- mstr - invitms <- w ^? hud . hudElement . diSections . sssSections . ix 0 . ssItems + invitms <- w ^? hud . hudElement . diSections . ix 0 . ssItems return $ IM.filter (flip (andOrRegex $ regexCombs invitms) str) allcombs showncombs - | null filtcombs = IM.singleton 0 - $ SelectionInfo ["No possible combinations"] 1 False white 0 + | null filtcombs = + IM.singleton 0 $ + SelectionInfo ["No possible combinations"] 1 False white 0 | otherwise = filtcombs filtinv = fromMaybe mempty $ do str <- mstr @@ -90,14 +94,14 @@ updateInventoryPositioning u = updateDisplaySections :: World -> Configuration -> - SelectionSections () -> - SelectionSections () + IM.IntMap (SelectionSection ()) -> + IM.IntMap (SelectionSection ()) updateDisplaySections w cfig sss = - sss & sssSections - %~ updateSectionsPositioning + updateSectionsPositioning mselpos availablelines addorder + sss where mselpos = w ^? hud . hudElement . diSelection . _Just addorder = case mselpos of @@ -246,17 +250,18 @@ listSelectionColorPicture = foldMap f g str = (_siColor si, translate indent 0 . color (_siColor si) $ text str) enterCombineInv :: Configuration -> World -> World -enterCombineInv cfig w = w & hud . hudElement . subInventory .~ CombineInventory sss selpos - (IM.singleton (-1) Nothing) +enterCombineInv cfig w = + w & hud . hudElement . subInventory + .~ CombineInventory + sss + selpos + (IM.singleton (-1) Nothing) where cm' = IM.fromDistinctAscList . zip [0 ..] $ combineList w cm | null cm' = IM.singleton 0 $ SelectionInfo ["No possible combinations"] 1 False white 0 | otherwise = cm' - sss = - SelectionSections - { _sssSections = IM.fromDistinctAscList [(-1, filtsection), (0, combsection)] - } + sss = IM.fromDistinctAscList [(-1, filtsection), (0, combsection)] selpos | null cm' = Nothing | otherwise = Just (0, 0) diff --git a/src/Dodge/InputFocus.hs b/src/Dodge/InputFocus.hs index f93cb9429..337656eba 100644 --- a/src/Dodge/InputFocus.hs +++ b/src/Dodge/InputFocus.hs @@ -11,7 +11,6 @@ module Dodge.InputFocus ( import Control.Monad import Data.Maybe -import Dodge.Data.SelectionList import Dodge.Data.World import LensHelp diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index 68489c4fd..be3b635d3 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -122,7 +122,7 @@ updateCloseObjects w = case w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject of Just i | i >= length newcloseobjects -> scrollAugInvSel 1 - | isNothing (w ^? hud . hudElement . diSections . sssSections . ix 3 . ssItems . ix i) -> + | isNothing (w ^? hud . hudElement . diSections . ix 3 . ssItems . ix i) -> scrollAugInvSel (-1) _ -> id filt = filter $ \obj -> dist ypos (closeObjPos obj) < 40 && hasButtonLOS ypos (closeObjPos obj) w @@ -159,7 +159,7 @@ changeSwapClose :: World -> World changeSwapClose f i w = fromMaybe w $ do - ss <- w ^? hud . hudElement . diSections . sssSections . ix 3 . ssItems + ss <- w ^? hud . hudElement . diSections . ix 3 . ssItems k <- f i ss return $ w @@ -176,7 +176,7 @@ swapInvItems :: World -> World swapInvItems f i w = fromMaybe w $ do - ss <- w ^? hud . hudElement . diSections . sssSections . ix 0 . ssItems + ss <- w ^? hud . hudElement . diSections . ix 0 . ssItems k <- f i ss let updateselection = case w ^? hud . hudElement . diSelection . _Just of Just (0, j) | j == k -> hud . hudElement . diSelection . _Just . _2 .~ i @@ -239,5 +239,5 @@ selectedCloseObject :: World -> Maybe (Either FloorItem Button) selectedCloseObject w = do i <- you w ^? crManipulation . manObject . ispCloseObject - <|> fmap fst (IM.lookupMin =<< w ^? hud . hudElement . diSections . sssSections . ix 3 . ssItems) + <|> fmap fst (IM.lookupMin =<< w ^? hud . hudElement . diSections . ix 3 . ssItems) w ^? hud . closeObjects . ix i diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 334405063..cc9193f9e 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -56,7 +56,7 @@ drawHP cfig = . show . (^?! cWorld . lWorld . creatures . ix 0 . crHP) -drawInventory :: SelectionSections () -> World -> Configuration -> Picture +drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Configuration -> Picture drawInventory sss w cfig = drawSelectionSections sss ldp cfig <> drawSSCursor sss (w ^? hud . hudElement . diSelection . _Just) ldp curs cfig @@ -123,7 +123,11 @@ drawSubInventory subinv cfig w = case subinv of DisplayTerminal tid -> displayTerminal tid cfig (w ^. cWorld . lWorld) CombineInventory{_ciSections = sss} -> drawCombineInventory cfig sss w -drawCombineInventory :: Configuration -> SelectionSections CombinableItem -> World -> Picture +drawCombineInventory :: + Configuration -> + IM.IntMap (SelectionSection CombinableItem) -> + World -> + Picture drawCombineInventory cfig sss w = invHead cfig "COMBINE" <> drawSelectionSections sss secondColumnParams cfig @@ -249,7 +253,7 @@ equipAllocString = \case RemoveEquipment{} -> "TAKE OFF" inventoryExtra :: - SelectionSections () -> + IM.IntMap (SelectionSection ()) -> Configuration -> World -> IM.IntMap (Maybe (Int, Int), [Int], [Int]) -> @@ -259,7 +263,13 @@ inventoryExtra sss cfig w = . IM.foldMapWithKey (inventoryExtraH sss cfig w) . fmap (\(_, a, b) -> a <> b) -inventoryExtraH :: SelectionSections () -> Configuration -> World -> Int -> [Int] -> Picture +inventoryExtraH :: + IM.IntMap (SelectionSection ()) -> + Configuration -> + World -> + Int -> + [Int] -> + Picture inventoryExtraH sss cfig w i is = fromMaybe mempty $ do p <- snum i let ps = mapMaybe snum is @@ -268,7 +278,7 @@ inventoryExtraH sss cfig w i is = fromMaybe mempty $ do snum = selNumPos cfig (invDisplayParams w) sss 0 combineInventoryExtra :: - SelectionSections CombinableItem -> + IM.IntMap (SelectionSection CombinableItem) -> Maybe (Int, Int) -> Configuration -> World -> @@ -276,7 +286,7 @@ combineInventoryExtra :: combineInventoryExtra sss msel cfig w = fromMaybe mempty $ do (i, j) <- msel cpos <- selSecYint i j sss - si <- sss ^? sssSections . ix i . ssItems . ix j + si <- sss ^? ix i . ssItems . ix j let col = _siColor si mconcat [ do @@ -403,7 +413,7 @@ invHead cfig = selNumPos :: Configuration -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Int -> Int -> Maybe Point2 @@ -427,14 +437,14 @@ selNumPosCardinal :: CardinalEightPoint -> Configuration -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Int -> Int -> Maybe Point2 selNumPosCardinal card cfig ldp sss i j = do ipos <- selSecYint i j sss size <- selSecSelSize i j sss - indent <- sss ^? sssSections . ix i . ssItems . ix j . siOffX + indent <- sss ^? ix i . ssItems . ix j . siOffX let offset = cardEightVec card * V2 0 (fromIntegral size * 0.5 * 20 * s) return $ screenPosAbs cfig (ldp ^. ldpPos) @@ -446,5 +456,5 @@ selNumPosCardinal card cfig ldp sss i j = do s = _ldpScale ldp ygap = _ldpVerticalGap ldp -selSecSelCol :: Int -> Int -> SelectionSections a -> Maybe Color -selSecSelCol i j sss = sss ^? sssSections . ix i . ssItems . ix j . siColor +selSecSelCol :: Int -> Int -> IM.IntMap (SelectionSection a) -> Maybe Color +selSecSelCol i j sss = sss ^? ix i . ssItems . ix j . siColor diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index f9396ec9f..6dd462e38 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -14,6 +14,7 @@ module Dodge.Render.List ( selSecDrawCursorAt, ) where +import qualified Data.IntMap.Strict as IM import Data.Maybe import Dodge.Base.Window import Dodge.Data.CardinalPoint @@ -86,13 +87,13 @@ selSecDrawCursorAt :: Int -> ListDisplayParams -> CursorDisplay -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> (Int, Int) -> Picture selSecDrawCursorAt xsize ldp curs sss (i, j) = fromMaybe mempty $ do yint <- selSecYint i j sss - xint <- sss ^? sssSections . ix i . ssIndent - si <- sss ^? sssSections . ix i . ssItems . ix j + xint <- sss ^? ix i . ssIndent + si <- sss ^? ix i . ssItems . ix j return $ listCursorChooseBorderScale (ldp ^. ldpVerticalGap) @@ -108,7 +109,7 @@ selSecDrawCursor :: Int -> ListDisplayParams -> CursorDisplay -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> Picture selSecDrawCursor xsize ldp curs = maybe mempty . selSecDrawCursorAt xsize ldp curs diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 60eb8f235..44c96744e 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -17,17 +17,17 @@ import Control.Applicative import qualified Control.Foldl as L import Control.Lens import Control.Monad +import Data.Foldable import qualified Data.IntMap.Strict as IM import Data.Maybe import Dodge.Data.Config import Dodge.Data.SelectionList import Dodge.ScreenPos import Geometry.Data -import Data.Foldable scrollSelectionSections :: Int -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> Maybe (Int, Int) scrollSelectionSections yi sss msel @@ -41,18 +41,18 @@ scrollSelectionSections yi sss msel -- return $ sss & sssExtra . sssSelPos ?~ (i, j) ssScrollUsing :: - (Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> - SelectionSections a -> + (Int -> Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a)) -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> Maybe (Int, Int) ssScrollUsing g = ssScrollMinOnFail g - . (sssSections %~ fmap (ssItems %~ IM.filter _siIsSelectable)) + . fmap (ssItems %~ IM.filter _siIsSelectable) ssScrollMinOnFail :: - (Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> - SelectionSections a -> + (Int -> Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a)) -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> Maybe (Int, Int) ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> (i, j)) $ l <|> ssLookupMin sss @@ -62,76 +62,95 @@ ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> (i, j)) $ l <|> ssLookupMin s f i j sss ssSetCursor :: - (SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> - SelectionSections a -> + (IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a)) -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> Maybe (Int, Int) ssSetCursor f sss msel = fromMaybe msel $ do (i, j, _) <- f sss return $ Just (i, j) -ssLookupMax :: SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupMax :: IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a) ssLookupMax sss = do - (i, _) <- IM.lookupMax (sss ^. sssSections) + (i, _) <- IM.lookupMax sss ssLookupLE' i sss -ssLookupUp :: Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupUp :: + Int -> + Int -> + IM.IntMap (SelectionSection a) -> + Maybe (Int, Int, SelectionItem a) ssLookupUp i j sss = case ssLookupLT i j sss of Nothing -> ssLookupMax sss x -> x -ssLookupDown :: Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupDown :: + Int -> + Int -> + IM.IntMap (SelectionSection a) -> + Maybe (Int, Int, SelectionItem a) ssLookupDown i j sss = case ssLookupGT i j sss of Nothing -> ssLookupMin sss x -> x -ssLookupLT :: Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupLT :: + Int -> + Int -> + IM.IntMap (SelectionSection a) -> + Maybe (Int, Int, SelectionItem a) ssLookupLT i j sss = fromMaybe (ssLookupLT' i sss) $ do - ss <- sss ^? sssSections . ix i + ss <- sss ^? ix i (j', si) <- IM.lookupLT j (ss ^. ssItems) return $ Just (i, j', si) -ssLookupLT' :: Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupLT' :: + Int -> + IM.IntMap (SelectionSection a) -> + Maybe (Int, Int, SelectionItem a) ssLookupLT' i sss = do - (i', ss) <- IM.lookupLT i (sss ^. sssSections) + (i', ss) <- IM.lookupLT i sss case IM.lookupMax (ss ^. ssItems) of Just (j', si) -> return (i', j', si) Nothing -> ssLookupLT' i' sss -ssLookupLE' :: Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupLE' :: Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a) ssLookupLE' i sss = do - (i', ss) <- IM.lookupLE i (sss ^. sssSections) + (i', ss) <- IM.lookupLE i sss case IM.lookupMax (ss ^. ssItems) of Just (j', si) -> return (i', j', si) Nothing -> ssLookupLT' i' sss -ssLookupMin :: SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupMin :: IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a) ssLookupMin sss = do - (i, _) <- IM.lookupMin (sss ^. sssSections) + (i, _) <- IM.lookupMin sss ssLookupGE' i sss -ssLookupGT :: Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupGT :: + Int -> + Int -> + IM.IntMap (SelectionSection a) -> + Maybe (Int, Int, SelectionItem a) ssLookupGT i j sss = fromMaybe (ssLookupGT' i sss) $ do - ss <- sss ^? sssSections . ix i + ss <- sss ^? ix i (j', si) <- IM.lookupGT j (ss ^. ssItems) return $ Just (i, j', si) -ssLookupGT' :: Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupGT' :: Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a) ssLookupGT' i sss = do - (i', ss) <- IM.lookupGT i (sss ^. sssSections) + (i', ss) <- IM.lookupGT i sss case IM.lookupMin (ss ^. ssItems) of Just (j', si) -> return (i', j', si) Nothing -> ssLookupGT' i' sss -ssLookupGE' :: Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a) +ssLookupGE' :: Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int, SelectionItem a) ssLookupGE' i sss = do - (i', ss) <- IM.lookupGE i (sss ^. sssSections) + (i', ss) <- IM.lookupGE i sss case IM.lookupMin (ss ^. ssItems) of Just (j', si) -> return (i', j', si) Nothing -> ssLookupGT' i' sss -selSecSelSize :: Int -> Int -> SelectionSections a -> Maybe Int -selSecSelSize i j sss = fmap length $ sss ^? sssSections . ix i . ssItems . ix j . siPictures +selSecSelSize :: Int -> Int -> IM.IntMap (SelectionSection a) -> Maybe Int +selSecSelSize i j = fmap length . (^? ix i . ssItems . ix j . siPictures) -- need to check that the vertical gap is correctly put in here posSelSecYint :: Configuration -> ListDisplayParams -> Float -> Int @@ -139,9 +158,9 @@ posSelSecYint cfig ldp y = floor $ (y0 - y) / (20 / ldp ^. ldpScale + ldp ^. ldp where V2 _ y0 = screenPosAbs cfig (ldp ^. ldpPos) -selSecYint :: Int -> Int -> SelectionSections a -> Maybe Int +selSecYint :: Int -> Int -> IM.IntMap (SelectionSection a) -> Maybe Int selSecYint i j sss = do - ss <- sss ^? sssSections . ix i + ss <- sss ^? ix i return . (secpos +) . subtract (ss ^. ssOffset) . sum @@ -149,16 +168,16 @@ selSecYint i j sss = do . fst $ IM.split j (ss ^. ssItems) where - secpos = sum . fmap (length . _ssShownItems) . fst $ IM.split i $ sss ^. sssSections + secpos = sum . fmap (length . _ssShownItems) . fst $ IM.split i $ sss -- it is annoying that Control.Foldl doesn't seem to allow for scans to be done -- at the same time as folds -inverseSelSecYint :: Int -> SelectionSections a -> Maybe (Int, Int) +inverseSelSecYint :: Int -> IM.IntMap (SelectionSection a) -> Maybe (Int, Int) inverseSelSecYint yint sss = do - ((i, ss), othersss) <- IM.minViewWithKey (_sssSections sss) + ((i, ss), othersss) <- IM.minViewWithKey sss let l = length $ _ssShownItems ss if l <= yint - then inverseSelSecYint (yint - l) (sss & sssSections .~ othersss) + then inverseSelSecYint (yint - l) othersss else do let ls = L.postscan (L.premap _siHeight L.sum) (_ssItems ss) j <- L.fold (L.findIndex (\x -> x - _ssOffset ss > yint)) ls @@ -169,15 +188,15 @@ inverseSelSecYintXPosCheck :: ListDisplayParams -> Float -> Int -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) inverseSelSecYintXPosCheck cfig ldp x yint sss = do - ((i, ss), othersss) <- IM.minViewWithKey (_sssSections sss) + ((i, ss), othersss) <- IM.minViewWithKey sss let l = length $ _ssShownItems ss V2 x0 _ = screenPosAbs cfig (ldp ^. ldpPos) guard (x - x0 < 150) -- HACK, should determine selection item width and offset below if l <= yint - then inverseSelSecYint (yint - l) (sss & sssSections .~ othersss) + then inverseSelSecYint (yint - l) othersss else do let ls = L.postscan (L.premap _siHeight L.sum) (_ssItems ss) j <- L.fold (L.findIndex (\val -> val - _ssOffset ss > yint)) ls @@ -186,7 +205,7 @@ inverseSelSecYintXPosCheck cfig ldp x yint sss = do inverseSelNumPos :: Configuration -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Point2 -> Maybe (Int, Int) inverseSelNumPos cfig ldp sss (V2 x y) = @@ -195,7 +214,7 @@ inverseSelNumPos cfig ldp sss (V2 x y) = inverseSelBoundaryUp :: Configuration -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Point2 -> Maybe (Int, Int) inverseSelBoundaryUp cfig ldp sss (V2 _ y) = do @@ -208,7 +227,7 @@ inverseSelBoundaryUp cfig ldp sss (V2 _ y) = do inverseSelBoundaryDown :: Configuration -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Point2 -> Maybe (Int, Int) inverseSelBoundaryDown cfig ldp sss (V2 _ y) = do diff --git a/src/Dodge/SelectionSections/Draw.hs b/src/Dodge/SelectionSections/Draw.hs index 168cce77d..aec095b51 100644 --- a/src/Dodge/SelectionSections/Draw.hs +++ b/src/Dodge/SelectionSections/Draw.hs @@ -9,9 +9,10 @@ import Dodge.Data.SelectionList import Dodge.Render.List import Dodge.ScreenPos import Picture.Base +import qualified Data.IntMap.Strict as IM drawSelectionSections - :: SelectionSections a + :: IM.IntMap (SelectionSection a) -> ListDisplayParams -> Configuration -> Picture @@ -21,10 +22,10 @@ drawSelectionSections sss ldp cfig = (_ldpVerticalGap ldp) (_ldpScale ldp) 0 - (foldMap _ssShownItems (_sssSections sss)) + (foldMap _ssShownItems sss) drawSSCursor - :: SelectionSections a + :: IM.IntMap (SelectionSection a) -> Maybe (Int,Int) -> ListDisplayParams -> CursorDisplay diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 1501f3b70..08d2ba443 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -301,7 +301,11 @@ updateMouseInventorySelection cfig w = fromMaybe w $ do sss <- w ^? hud . hudElement . diSections return $ updateMouseInventorySelection' sss cfig w -updateMouseInventorySelection' :: SelectionSections a -> Configuration -> World -> World +updateMouseInventorySelection' :: + IM.IntMap (SelectionSection a) -> + Configuration -> + World -> + World updateMouseInventorySelection' sss cfig w | leftclickstart = case msel of Nothing -> fromMaybe w $ do @@ -350,7 +354,7 @@ shiftInvItems :: Configuration -> Point2 -> ListDisplayParams -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> World -> World shiftInvItems topsel x cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of @@ -368,7 +372,7 @@ shiftInvItemsUp (_, i) x w = foldl' f w [i .. i + x] shiftInvItemsDown :: (Int, Int) -> Int -> World -> World shiftInvItemsDown (_, i) x w = fromMaybe w $ do guard . isJust $ - w ^? hud . hudElement . diSections . sssSections . ix 0 . ssItems . ix (i + x + 1) + w ^? hud . hudElement . diSections . ix 0 . ssItems . ix (i + x + 1) return $ foldl' f w $ reverse [i .. i + x] where f w' i' = swapInvItems g i' w' diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index af33448f0..3d8db1986 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -70,7 +70,7 @@ updateUseInputInGame u = case u ^. uvWorld . hud . hudElement of sss <- ci ^? ciSections msel <- ci ^? ciSelection filts <- ci ^? ciFilters - let (sss', msel',filts') = doRegexInput (u ^. uvWorld . input) (-1) sss msel filts + let (sss', msel', filts') = doRegexInput (u ^. uvWorld . input) (-1) sss msel filts return $ ci & ciSections .~ sss' & ciSelection .~ msel' @@ -79,7 +79,7 @@ updateUseInputInGame u = case u ^. uvWorld . hud . hudElement of sss <- di ^? diSections msel <- di ^? diSelection filts <- di ^? diFilters - let (sss', msel',filts') = doRegexInput (u ^. uvWorld . input) x sss msel filts + let (sss', msel', filts') = doRegexInput (u ^. uvWorld . input) x sss msel filts return $ di & diSections .~ sss' & diSelection .~ msel' @@ -156,10 +156,10 @@ updateLongPressInGame uv sc = case sc of doRegexInput :: Input -> Int -> - SelectionSections a -> + IM.IntMap (SelectionSection a) -> Maybe (Int, Int) -> IM.IntMap (Maybe String) -> - (SelectionSections a, Maybe (Int, Int), IM.IntMap (Maybe String)) + (IM.IntMap (SelectionSection a), Maybe (Int, Int), IM.IntMap (Maybe String)) doRegexInput inp i sss msel filts | backspacetonothing || escapekey = endregex i 0 | endkeys || endmouse = endregex (i + 1) (j -1) @@ -170,13 +170,12 @@ doRegexInput inp i sss msel filts ) where endregex a b = - ( sss - & sssSections . ix i . ssItems .~ mempty + ( sss & ix i . ssItems .~ mempty , msel & ssSetCursor (ssLookupDown a b) sss , filts & ix i .~ Nothing ) j = fromMaybe 0 $ do - itms <- sss ^? sssSections . ix (i + 1) . ssItems + itms <- sss ^? ix (i + 1) . ssItems fst <$> IM.lookupMin itms escapekey = ScancodeEscape `M.lookup` pkeys == Just InitialPress endkeys = @@ -208,7 +207,6 @@ updateBackspaceRegex w = case di ^? subInventory of i <- di ^? diSelection . _Just . _1 return $ i == a || i == b trybackspace x he = fromMaybe he $ do - sss <- he ^? diSections str <- he ^? diFilters . ix x . _Just return $ case str of (_ : _) -> @@ -216,7 +214,6 @@ updateBackspaceRegex w = case di ^? subInventory of & diSelection ?~ (x, 0) [] -> he & diFilters . ix x .~ Nothing trybackspace' x ci = fromMaybe ci $ do - sss <- ci ^? ciSections str <- ci ^? ciFilters . ix x . _Just return $ case str of (_ : _) -> @@ -288,7 +285,8 @@ toggleMap u = case u ^. uvWorld . hud . hudElement of toggleTweakInv :: World -> World toggleTweakInv w = case w ^? hud . hudElement . subInventory of - Just ExamineInventory{} -> w + Just ExamineInventory{} -> + w & thepointer .~ NoSubInventory MouseInvNothing Nothing _ -> w & thepointer .~ ExamineInventory -- mi where @@ -296,10 +294,14 @@ toggleTweakInv w = case w ^? hud . hudElement . subInventory of -- mi = 0 <$ (yourSelectedItem w >>= (^? itTweaks . tweakParams . ix 0)) -tryCombine :: SelectionSections CombinableItem -> Maybe (Int, Int) -> World -> World +tryCombine :: + IM.IntMap (SelectionSection CombinableItem) -> + Maybe (Int, Int) -> + World -> + World tryCombine sss msel w = fromMaybe w $ do (i, j) <- msel - CombinableItem is it _ <- sss ^? sssSections . ix i . ssItems . ix j . siPayload + CombinableItem is it _ <- sss ^? ix i . ssItems . ix j . siPayload return $ snd (createItemYou it (foldr (destroyInvItem 0) w (sort is))) & cWorld . lWorld . creatures . ix 0 . crHammerPosition .~ HammerDown @@ -307,5 +309,6 @@ tryCombine sss msel w = fromMaybe w $ do maybeExitCombine :: Universe -> Universe maybeExitCombine u | ButtonRight `M.member` (u ^. uvWorld . input . mouseButtons) = u - | otherwise = u & uvWorld . hud . hudElement . subInventory - .~ NoSubInventory MouseInvNothing Nothing + | otherwise = + u & uvWorld . hud . hudElement . subInventory + .~ NoSubInventory MouseInvNothing Nothing diff --git a/tags b/tags index ed75824d5..27f71dac9 100644 --- a/tags +++ b/tags @@ -691,7 +691,7 @@ FetchItem src/Dodge/Data/Scenario.hs 11;" C Fixated src/Dodge/Data/Creature/Perception.hs 62;" C FixedCoordLayer src/Picture/Data.hs 28;" C FixedRate src/Dodge/Data/Item/HeldDelay.hs 15;" C -FixedSelectionWidth src/Dodge/Data/SelectionList.hs 65;" C +FixedSelectionWidth src/Dodge/Data/SelectionList.hs 57;" C FlIt src/Dodge/Data/FloorItem.hs 16;" C Flame src/Dodge/Data/Flame.hs 14;" t Flame src/Dodge/Data/Flame.hs 6;" m @@ -1637,7 +1637,6 @@ SPRING src/Dodge/Data/Item/Combine.hs 31;" C SPic src/ShapePicture/Data.hs 7;" t SPic src/Dodge/Item/Draw/SPic.hs 3;" m SQUARE src/Dodge/Data/GenParams.hs 20;" C -SSSExtra src/Dodge/Data/SelectionList.hs 44;" t ST src/Dodge/Tree/Compose/Data.hs 12;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 36;" C STOPWATCH src/Dodge/Data/Item/Combine.hs 121;" C @@ -1660,7 +1659,7 @@ ScreenPos src/Dodge/ScreenPos.hs 1;" m Scroll src/Dodge/Update/Scroll.hs 1;" m ScrollValue src/Dodge/ScrollValue.hs 1;" m SecretCabal src/Dodge/Data/Scenario.hs 44;" C -SectionCursor src/Dodge/Data/SelectionList.hs 48;" t +SectionCursor src/Dodge/Data/SelectionList.hs 40;" t SeeAbove src/Dodge/Data/Wall.hs 40;" C SeeThrough src/Dodge/Data/Wall.hs 39;" C SelCloseObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" C @@ -1668,17 +1667,16 @@ SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C SelectUse src/Dodge/SelectUse.hs 1;" m Select_creature src/Dodge/Data/Config.hs 92;" C SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" C -SelectionInfo src/Dodge/Data/SelectionList.hs 78;" C -SelectionItem src/Dodge/Data/SelectionList.hs 69;" t +SelectionInfo src/Dodge/Data/SelectionList.hs 70;" C +SelectionItem src/Dodge/Data/SelectionList.hs 61;" t SelectionList src/Dodge/Data/SelectionList.hs 31;" t SelectionList src/Dodge/Data/SelectionList.hs 6;" m SelectionList src/Dodge/Default/SelectionList.hs 1;" m SelectionList src/Dodge/Inventory/SelectionList.hs 2;" m SelectionList src/Dodge/SelectionList.hs 1;" m -SelectionSection src/Dodge/Data/SelectionList.hs 54;" t -SelectionSections src/Dodge/Data/SelectionList.hs 36;" t +SelectionSection src/Dodge/Data/SelectionList.hs 46;" t SelectionSections src/Dodge/SelectionSections.hs 1;" m -SelectionWidth src/Dodge/Data/SelectionList.hs 64;" t +SelectionWidth src/Dodge/Data/SelectionList.hs 56;" t SelfTree src/Dodge/Tree/Compose/Data.hs 12;" t Sensor src/Dodge/Data/Machine/Sensor.hs 16;" t Sensor src/Dodge/Data/Machine/Sensor.hs 6;" m @@ -2020,7 +2018,7 @@ UseHeld src/Dodge/Data/Item/Use.hs 36;" C UseHotkey src/Dodge/Data/Item/Use.hs 44;" C UseItem src/Dodge/Data/ActionPlan.hs 37;" C UseItem src/Dodge/Creature/Impulse/UseItem.hs 1;" m -UseMaxSelectionItemWidth src/Dodge/Data/SelectionList.hs 67;" C +UseMaxSelectionItemWidth src/Dodge/Data/SelectionList.hs 59;" C UseMvTargetPos src/Dodge/Data/ActionPlan.hs 163;" C UseScope src/Dodge/Data/Item/Use.hs 60;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C @@ -2034,7 +2032,7 @@ VBO src/Shader/Data.hs 81;" t VF src/Polyhedra/Data.hs 21;" t VIOLET src/Color/Data.hs 22;" C VOLLEYGUN src/Dodge/Data/Item/Combine.hs 139;" C -VariableSelectionWidth src/Dodge/Data/SelectionList.hs 66;" C +VariableSelectionWidth src/Dodge/Data/SelectionList.hs 58;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2992,9 +2990,9 @@ _scrollSmoothing src/Dodge/Data/World.hs 63;" f _scrollSmoothing src/Dodge/Data/World.hs 69;" f _scrollTestFloat src/Dodge/Data/Input.hs 31;" f _scrollTestInt src/Dodge/Data/Input.hs 32;" f -_scurColor src/Dodge/Data/SelectionList.hs 51;" f -_scurPos src/Dodge/Data/SelectionList.hs 49;" f -_scurSize src/Dodge/Data/SelectionList.hs 50;" f +_scurColor src/Dodge/Data/SelectionList.hs 43;" f +_scurPos src/Dodge/Data/SelectionList.hs 41;" f +_scurSize src/Dodge/Data/SelectionList.hs 42;" f _seenLocations src/Dodge/Data/LWorld.hs 139;" f _seenWalls src/Dodge/Data/CWorld.hs 29;" f _selLocation src/Dodge/Data/LWorld.hs 140;" f @@ -3020,17 +3018,17 @@ _shapeHalfSize src/Shape/Data.hs 18;" f _shapeShader src/Data/Preload/Render.hs 25;" f _shockwaves src/Dodge/Data/LWorld.hs 114;" f _shrinkGunStatus src/Dodge/Data/Item/Params.hs 18;" f +_siColor src/Dodge/Data/SelectionList.hs 66;" f _siColor src/Dodge/Data/SelectionList.hs 74;" f -_siColor src/Dodge/Data/SelectionList.hs 82;" f +_siHeight src/Dodge/Data/SelectionList.hs 64;" f _siHeight src/Dodge/Data/SelectionList.hs 72;" f -_siHeight src/Dodge/Data/SelectionList.hs 80;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 65;" f _siIsSelectable src/Dodge/Data/SelectionList.hs 73;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 81;" f +_siOffX src/Dodge/Data/SelectionList.hs 67;" f _siOffX src/Dodge/Data/SelectionList.hs 75;" f -_siOffX src/Dodge/Data/SelectionList.hs 83;" f -_siPayload src/Dodge/Data/SelectionList.hs 76;" f +_siPayload src/Dodge/Data/SelectionList.hs 68;" f +_siPictures src/Dodge/Data/SelectionList.hs 63;" f _siPictures src/Dodge/Data/SelectionList.hs 71;" f -_siPictures src/Dodge/Data/SelectionList.hs 79;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f _sidePush src/Dodge/Data/Item/Use.hs 87;" f @@ -3062,15 +3060,13 @@ _spPixelOff src/Dodge/Data/ScreenPos.hs 11;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 10;" f _sparks src/Dodge/Data/LWorld.hs 110;" f _spawnEBT src/Dodge/Data/Bullet.hs 43;" f -_ssCursor src/Dodge/Data/SelectionList.hs 56;" f -_ssDescriptor src/Dodge/Data/SelectionList.hs 61;" f -_ssIndent src/Dodge/Data/SelectionList.hs 60;" f -_ssItems src/Dodge/Data/SelectionList.hs 55;" f -_ssMinSize src/Dodge/Data/SelectionList.hs 57;" f -_ssOffset src/Dodge/Data/SelectionList.hs 58;" f -_ssShownItems src/Dodge/Data/SelectionList.hs 59;" f -_sssFilters src/Dodge/Data/SelectionList.hs 45;" f -_sssSections src/Dodge/Data/SelectionList.hs 37;" f +_ssCursor src/Dodge/Data/SelectionList.hs 48;" f +_ssDescriptor src/Dodge/Data/SelectionList.hs 53;" f +_ssIndent src/Dodge/Data/SelectionList.hs 52;" f +_ssItems src/Dodge/Data/SelectionList.hs 47;" f +_ssMinSize src/Dodge/Data/SelectionList.hs 49;" f +_ssOffset src/Dodge/Data/SelectionList.hs 50;" f +_ssShownItems src/Dodge/Data/SelectionList.hs 51;" f _strength src/Dodge/Data/Creature/Misc.hs 21;" f _strideAmount src/Dodge/Data/Creature/Stance.hs 22;" f _strideLength src/Dodge/Data/Creature/Stance.hs 16;" f @@ -3852,7 +3848,7 @@ defaultBounds src/Dodge/Data/Bounds.hs 20;" f defaultBullet src/Dodge/Item/Weapon/Bullet.hs 10;" f defaultBulletWeapon src/Dodge/Default/Item.hs 47;" f defaultButton src/Dodge/Default.hs 51;" f -defaultCOSection src/Dodge/Default/World.hs 208;" f +defaultCOSection src/Dodge/Default/World.hs 204;" f defaultCWCam src/Dodge/Default/World.hs 65;" f defaultCWGen src/Dodge/Default/World.hs 55;" f defaultCWorld src/Dodge/Default/World.hs 80;" f @@ -3876,7 +3872,7 @@ defaultDrawButton src/Dodge/Button/Draw.hs 28;" f defaultEquip src/Dodge/Default/Item/Use/Equipment.hs 6;" f defaultEquipUse src/Dodge/Default/Item/Use.hs 23;" f defaultEquipment src/Dodge/Default.hs 27;" f -defaultFiltSection src/Dodge/Default/World.hs 214;" f +defaultFiltSection src/Dodge/Default/World.hs 210;" f defaultFlIt src/Dodge/Default.hs 30;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultHUD src/Dodge/Default/World.hs 151;" f @@ -3886,8 +3882,8 @@ defaultImpulsive src/Dodge/Humanoid.hs 190;" f defaultInanimate src/Dodge/Default/Creature.hs 69;" f defaultInput src/Dodge/Default/World.hs 14;" f defaultIntention src/Dodge/Default/Creature.hs 105;" f -defaultInvSection src/Dodge/Default/World.hs 221;" f -defaultInvSections src/Dodge/Default/World.hs 179;" f +defaultInvSection src/Dodge/Default/World.hs 217;" f +defaultInvSections src/Dodge/Default/World.hs 180;" f defaultInvSize src/Dodge/Default/Creature.hs 79;" f defaultItEffect src/Dodge/Default/Item.hs 55;" f defaultItEffect src/Dodge/Default/Item/Effect.hs 5;" f @@ -3906,8 +3902,7 @@ defaultPerceptionState src/Dodge/Default/Creature.hs 82;" f defaultProp src/Dodge/Default/Prop.hs 6;" f defaultProximitySensor src/Dodge/Default.hs 80;" f defaultRoom src/Dodge/Default/Room.hs 9;" f -defaultSS src/Dodge/Default/World.hs 196;" f -defaultSSSExtra src/Dodge/Default/World.hs 173;" f +defaultSS src/Dodge/Default/World.hs 192;" f defaultSelectionList src/Dodge/Default/SelectionList.hs 5;" f defaultSensorWall src/Dodge/Default/Wall.hs 58;" f defaultState src/Dodge/Default/Creature.hs 140;" f @@ -3919,7 +3914,7 @@ defaultVision src/Dodge/Default/Creature.hs 92;" f defaultWall src/Dodge/Default/Wall.hs 10;" f defaultWindow src/Dodge/Default/Wall.hs 74;" f defaultWorld src/Dodge/Default/World.hs 32;" f -defaultYouSection src/Dodge/Default/World.hs 226;" f +defaultYouSection src/Dodge/Default/World.hs 222;" f defocusTerminalInput src/Dodge/Terminal/LeftButton.hs 20;" f degToRad src/Geometry/Vector.hs 117;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -4019,7 +4014,7 @@ doPropUpdates src/Dodge/Prop/Update.hs 36;" f doQuickload src/Dodge/Save.hs 82;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 7;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 152;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 156;" f doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f @@ -4485,14 +4480,14 @@ icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f ifConfigWallRotate src/Dodge/Update/Camera.hs 171;" f ildtPropagate src/Dodge/DoubleTree.hs 57;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f -inCloseRegex src/Dodge/InputFocus.hs 96;" f -inInputFocus src/Dodge/InputFocus.hs 60;" f -inInvRegex src/Dodge/InputFocus.hs 93;" f +inCloseRegex src/Dodge/InputFocus.hs 95;" f +inInputFocus src/Dodge/InputFocus.hs 59;" f +inInvRegex src/Dodge/InputFocus.hs 92;" f inLink src/Dodge/RoomLink.hs 113;" f inSegArea src/Geometry/Intersect.hs 298;" f -inSubInvRegex src/Dodge/InputFocus.hs 99;" f -inTermFocus src/Dodge/InputFocus.hs 18;" f -inTopRegex src/Dodge/InputFocus.hs 88;" f +inSubInvRegex src/Dodge/InputFocus.hs 98;" f +inTermFocus src/Dodge/InputFocus.hs 17;" f +inTopRegex src/Dodge/InputFocus.hs 87;" f incBallAt src/Dodge/EnergyBall.hs 54;" f incidenceToFunction src/Dodge/Graph.hs 26;" f indefiniteExceptions src/StringHelp.hs 29;" f @@ -4519,8 +4514,8 @@ initializeOptionMenu src/Dodge/Menu/Option.hs 14;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 29;" f initializeTexture2D src/Framebuffer/Update.hs 221;" f inorderNumberTree src/TreeHelp.hs 189;" f -inputFocus src/Dodge/InputFocus.hs 66;" f -inputFocusI src/Dodge/InputFocus.hs 63;" f +inputFocus src/Dodge/InputFocus.hs 65;" f +inputFocusI src/Dodge/InputFocus.hs 62;" f insertAt src/Padding.hs 60;" f insertIMInZone src/Dodge/Base.hs 59;" f insertInTrie src/SimpleTrie.hs 23;" f @@ -4858,7 +4853,7 @@ maybeClearPath src/Dodge/Block.hs 77;" f maybeClearPaths src/Dodge/Block.hs 74;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 299;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 307;" f maybeOpenTerminal src/Dodge/Update.hs 116;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 111;" f @@ -5087,7 +5082,7 @@ parseNum src/Dodge/Debug/Terminal.hs 73;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 242;" f +pauseGame src/Dodge/Update/Input/InGame.hs 249;" f pauseMenu src/Dodge/Menu.hs 53;" f pauseMenuOptions src/Dodge/Menu.hs 58;" f pauseSound src/Dodge/SoundLogic.hs 41;" f @@ -5373,11 +5368,9 @@ reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 13;" f refract src/Dodge/Item/Weapon/LaserPath.hs 40;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 34;" f regexCombs src/Dodge/DisplayInventory.hs 67;" f -regexFocus src/Dodge/InputFocus.hs 43;" f regexIn src/Regex.hs 4;" f regexList src/Dodge/DisplayInventory.hs 291;" f regexList src/Regex.hs 7;" f -regexScope src/Dodge/InputFocus.hs 25;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 426;" f @@ -5745,7 +5738,7 @@ soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 98;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 48;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f -spaceAction src/Dodge/Update/Input/InGame.hs 245;" f +spaceAction src/Dodge/Update/Input/InGame.hs 252;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 186;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 179;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 171;" f @@ -5936,8 +5929,8 @@ toggleCombineInv src/Dodge/DisplayInventory.hs 27;" f toggleCommand src/Dodge/Terminal.hs 194;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 75;" f toggleJust src/MaybeHelp.hs 41;" f -toggleMap src/Dodge/Update/Input/InGame.hs 269;" f -toggleTweakInv src/Dodge/Update/Input/InGame.hs 281;" f +toggleMap src/Dodge/Update/Input/InGame.hs 276;" f +toggleTweakInv src/Dodge/Update/Input/InGame.hs 289;" f togglesToEffects src/Dodge/Terminal.hs 245;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 460;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 430;" f @@ -6008,7 +6001,7 @@ trunkDepth src/TreeHelp.hs 161;" f tryAssignHotkey src/Dodge/Creature/YourControl.hs 85;" f tryAttachBulletBelt src/Dodge/Euse.hs 40;" f tryChargeBattery src/Dodge/Euse.hs 43;" f -tryCombine src/Dodge/Update/Input/InGame.hs 291;" f +tryCombine src/Dodge/Update/Input/InGame.hs 299;" f tryGetChannel src/Sound.hs 96;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 19;" f tryGetRootItemInvID src/Dodge/Inventory/Location.hs 28;" f @@ -6054,7 +6047,7 @@ updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f updateAttachedItems src/Dodge/Creature/State.hs 173;" f updateAutoRecharge src/Dodge/Creature/State.hs 324;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 185;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 192;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBounds src/Dodge/Update/Camera.hs 245;" f @@ -6077,7 +6070,7 @@ updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 513;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f updateEnergyBalls src/Dodge/Update.hs 540;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 221;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 228;" f updateExpBarrel src/Dodge/Barreloid.hs 19;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f @@ -6091,20 +6084,20 @@ updateHumanoid src/Dodge/Humanoid.hs 12;" f updateIMl src/Dodge/Update.hs 482;" f updateIMl' src/Dodge/Update.hs 487;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 126;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 130;" f updateInstantBullets src/Dodge/Update.hs 629;" f updateInv src/Dodge/Creature/State.hs 152;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 85;" f updateItemTargeting src/Dodge/Creature/State.hs 268;" f updateItemWithOrientation src/Dodge/Creature/State.hs 194;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 120;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 109;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 124;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 113;" f updateLampoid src/Dodge/Lampoid.hs 12;" f updateLaser src/Dodge/Laser/Update.hs 13;" f updateLasers src/Dodge/Update.hs 411;" f updateLightSources src/Dodge/Update.hs 516;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 146;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 150;" f updateMIM src/Dodge/Update.hs 642;" f updateMachine src/Dodge/Machine/Update.hs 16;" f updateMouseInventorySelection src/Dodge/Update.hs 299;" f @@ -6117,8 +6110,8 @@ updatePastWorlds src/Dodge/Update.hs 399;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f updatePosEvents src/Dodge/Update.hs 549;" f updatePreload src/Preload/Update.hs 20;" f -updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 84;" f -updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 87;" f +updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 88;" f +updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 91;" f updateProjectile src/Dodge/Projectile/Update.hs 23;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f