From f6c136cfd696c96b1cceb82a54955c6489d7b88f Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 25 Oct 2024 21:05:32 +0100 Subject: [PATCH] Cleanup --- ghcidOutput | 2 +- src/Dodge/Creature/State.hs | 2 +- src/Dodge/Data/SelectionList.hs | 16 +- src/Dodge/Debug.hs | 5 +- src/Dodge/Default/SelectionList.hs | 4 - src/Dodge/DisplayInventory.hs | 3 + src/Dodge/DoubleTree.hs | 2 +- src/Dodge/EnergyBall/Draw.hs | 3 +- src/Dodge/HeldUse.hs | 2 +- src/Dodge/Inventory.hs | 2 +- src/Dodge/Item/Grammar.hs | 3 +- src/Dodge/Item/HeldOffset.hs | 4 +- src/Dodge/Item/InventoryColor.hs | 22 +-- src/Dodge/Item/Scope.hs | 4 +- src/Dodge/ListDisplayParams.hs | 51 +++-- src/Dodge/Render/HUD.hs | 45 +++-- src/Dodge/Render/InfoBox.hs | 34 +++- src/Dodge/Render/List.hs | 100 +++++----- src/Dodge/SelectionList.hs | 6 - src/Dodge/SelectionSections.hs | 40 ++-- src/Dodge/Update.hs | 4 +- src/Dodge/Update/Input/InGame.hs | 6 +- src/IntMapHelp.hs | 6 +- src/Regex.hs | 8 - tags | 293 ++++++++++++++--------------- 25 files changed, 334 insertions(+), 333 deletions(-) delete mode 100644 src/Regex.hs diff --git a/ghcidOutput b/ghcidOutput index 8a0509eec..3ed68fc0a 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (596 modules, at 17:39:13) +All good (0 modules, at 21:05:25) diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 586505ed9..6ead16055 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -258,7 +258,7 @@ shineTorch cr itmtree (p, q) = fromMaybe id $ do x = 10 isammolink AmmoInLink{} = True isammolink _ = False - pos = (_crPos cr `v2z` 0 + rotate3 cdir p) + pos = _crPos cr `v2z` 0 + rotate3 cdir p pos'' = pos + rotate3 d (V3 8 0 1.5) cdir = _crDir cr d = _crDir cr + argV (Q.qToV2 q) diff --git a/src/Dodge/Data/SelectionList.hs b/src/Dodge/Data/SelectionList.hs index 3075f6e85..b1a30414c 100644 --- a/src/Dodge/Data/SelectionList.hs +++ b/src/Dodge/Data/SelectionList.hs @@ -22,20 +22,17 @@ data ListDisplayParams = ListDisplayParams , _ldpWidth :: SelectionWidth } -data CursorDisplay = CursorDisplay - { _cursSides :: [CardinalPoint] - } +data CursorDisplay + = BoundaryCursor + { _cursSides :: [CardinalPoint] + } + | BackdropCursor data SelectionList a = SelectionList { _slItems :: [SelectionItem a] , _slSelPos :: Maybe Int - , _slRegex :: String - , _slRegexInput :: Bool - , _slRegexList :: [(SelectionItem a, Maybe Int)] } ---deriving (Eq, Ord, Show, Read) --Generic, Flat) - data SelectionSections a = SelectionSections { _sssSections :: IntMap (SelectionSection a) , _sssExtra :: SSSExtra @@ -44,7 +41,7 @@ data SelectionSections a = SelectionSections -- 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. -data SSSExtra = SSSExtra +newtype SSSExtra = SSSExtra { _sssFilters :: IntMap (Maybe String) } @@ -64,7 +61,6 @@ data SelectionSection a = SelectionSection , _ssDescriptor :: String } - data SelectionWidth = FixedSelectionWidth Int | VariableSelectionWidth (Int -> Int) diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index 5d772f5a2..b143e7b2c 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -13,6 +13,7 @@ import Dodge.Debug.Picture import Dodge.WorldEvent.ThingsHit import Geometry.Vector import qualified SDL +import Data.Ord debugEvents :: Universe -> Universe debugEvents u = case dbools ^. at Enable_debug of @@ -90,8 +91,8 @@ clickGetCreature u closestCreatureID :: Universe -> Maybe Int closestCreatureID u = - fmap (_crID . snd) . listToMaybe . reverse - . sortOn (dist mwp . fst) + fmap (_crID . snd) . listToMaybe + . sortOn (Down . dist mwp . fst) . crsHitRadial mwp 100 $ _uvWorld u where diff --git a/src/Dodge/Default/SelectionList.hs b/src/Dodge/Default/SelectionList.hs index bec050d3d..16eed808a 100644 --- a/src/Dodge/Default/SelectionList.hs +++ b/src/Dodge/Default/SelectionList.hs @@ -6,8 +6,4 @@ defaultSelectionList :: SelectionList a defaultSelectionList = SelectionList {_slItems = mempty , _slSelPos = Nothing --- , _slLength = 0 - , _slRegex = "" - , _slRegexInput = False - , _slRegexList = [] } diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 14cfff06f..52c7f04c2 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -280,3 +280,6 @@ enterCombineInv cfig w = w & hud . hudElement . subInventory .~ CombineInventory , _ssIndent = 0 , _ssDescriptor = "COMBINATIONS" } + +regexList :: String -> [String] -> Bool +regexList x = any (isInfixOf x) diff --git a/src/Dodge/DoubleTree.hs b/src/Dodge/DoubleTree.hs index 63d6dfa54..6a8daa1c4 100644 --- a/src/Dodge/DoubleTree.hs +++ b/src/Dodge/DoubleTree.hs @@ -64,7 +64,7 @@ ildtPropagate lf rf x (LDT v l r) = LDT v (imap (go lf x) l) (imap (go rf x) r) ldtPropagateIndices :: LabelDoubleTree b a -> LabelDoubleTree b (a, [Either Int Int]) ldtPropagateIndices (LDT x l r) = LDT (x,[]) (imap (f Left) l) (imap (f Right) r) where - f e i (y,t) = (y, fmap (second (e i:)) $ ldtPropagateIndices t) + f e i (y,t) = (y, second (e i:) <$> ldtPropagateIndices t) -- conceptually, in a tree growing from left to right, -- bottom -> top is equated with left -> right. diff --git a/src/Dodge/EnergyBall/Draw.hs b/src/Dodge/EnergyBall/Draw.hs index 53e79041d..2771dc178 100644 --- a/src/Dodge/EnergyBall/Draw.hs +++ b/src/Dodge/EnergyBall/Draw.hs @@ -62,7 +62,8 @@ drawFlamelet pt = . rotate (negate (rot + 0.2 * fromIntegral time)) . scale s2 s2 . polygon - $ (rectNSWE siz2 (- siz2) (- siz2) siz2) + . reverse + $ rectNSWE siz2 (- siz2) (- siz2) siz2 pic = setDepth (z + 20) . uncurryV translate ep diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 7518fd3a8..e22cbdba4 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -371,7 +371,7 @@ shootBullet :: World shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do thebullet <- getBulletType itmtree magtree mz cr w - return $ flip (foldl' (&)) (replicate x (makeBullet thebullet (itmtree ^. ldtValue) cr mz)) w + return $ foldl' (&) w (replicate x (makeBullet thebullet (itmtree ^. ldtValue) cr mz)) -- & makeMuzzleSmoke mz itm cr diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index ed7b3e31e..68489c4fd 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -217,7 +217,7 @@ changeSwapWith f w = case w ^? hud . hudElement . diSelection . _Just of augInvDirectSelect :: (Int, Int) -> World -> World augInvDirectSelect (i, j) w = w - & hud . hudElement . diSelection .~ Just (i, j) + & hud . hudElement . diSelection ?~ (i, j) & worldEventFlags . at InventoryChange ?~ () & setInvPosFromSS & cWorld . lWorld %~ crUpdateItemLocations 0 diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index c17c1110e..7ed730225 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -103,7 +103,8 @@ laserLinkTest :: Item -> LinkTest laserLinkTest itm = LTest (llleft itm) (llright itm) llleft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate -llleft itm pci = _tryLeftLink (uncurry useBreakL $ itemToBreakLists (CItem itm WeaponTargetingSF)) pci +llleft itm = _tryLeftLink + . uncurry useBreakL . itemToBreakLists $ CItem itm WeaponTargetingSF llright :: Item -> PartiallyComposedItem -> Maybe LinkUpdate llright itm pci = case pci ^. _1 . itType of diff --git a/src/Dodge/Item/HeldOffset.hs b/src/Dodge/Item/HeldOffset.hs index 113f3f0f7..296fd172a 100644 --- a/src/Dodge/Item/HeldOffset.hs +++ b/src/Dodge/Item/HeldOffset.hs @@ -30,7 +30,7 @@ heldItemRelativeOrient itm cr (p,q) | isTwoHandFlat = ( V3 (_crRad cr) 0 handD + rotate3 (twoFlatHRot cr) (transToHandle itm p) - , (Q.axisAngle (V3 0 0 1) (twoFlatHRot cr)) * q + , Q.axisAngle (V3 0 0 1) (twoFlatHRot cr) * q ) | isOneHand = ( V3 (_crRad cr * 0.7 + handPos) (_crRad cr * negate 0.7) handD @@ -40,7 +40,7 @@ heldItemRelativeOrient itm cr (p,q) | otherwise = ( V3 (_crRad cr) 0 handD + rotate3 (strideRot cr + 1.2) (V3 (-8) 0 0 + transToHandle itm p) - , (Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2)) * q + , Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2) * q ) where handD = 15 diff --git a/src/Dodge/Item/InventoryColor.hs b/src/Dodge/Item/InventoryColor.hs index 514306d80..caea43581 100644 --- a/src/Dodge/Item/InventoryColor.hs +++ b/src/Dodge/Item/InventoryColor.hs @@ -1,12 +1,12 @@ -{-# LANGUAGE LambdaCase#-} -module Dodge.Item.InventoryColor - ( itemInvColor - ) where +module Dodge.Item.InventoryColor ( + itemInvColor, +) where --import Dodge.Data.Item.Use.Consumption.Ammo -import Dodge.Data.ComposedItem + import Color import Control.Lens +import Dodge.Data.ComposedItem itemInvColor :: ComposedItem -> Color itemInvColor ci = case ci ^. cItemFunction of @@ -14,13 +14,13 @@ itemInvColor ci = case ci ^. cItemFunction of WeaponScopeSF -> chartreuse WeaponTargetingSF -> green AugmentedHUDSF -> rose - AmmoMagSF {} -> red + AmmoMagSF{} -> red RemoteScreenSF -> azure UncomposableIsolateSF -> greyN 0.5 - AmmoModifierSF {} -> orange - AmmoTargetingSF {} -> green - AmmoPayloadSF {} -> violet - AmmoEffectSF {} -> aquamarine + AmmoModifierSF{} -> orange + AmmoTargetingSF{} -> green + AmmoPayloadSF{} -> violet + AmmoEffectSF{} -> aquamarine FunctionChangeSF -> yellow --ammoTypeColor :: AmmoType -> Color @@ -30,7 +30,7 @@ itemInvColor ci = case ci ^. cItemFunction of -- BeltBulletAmmo -> orange -- ElectricalAmmo -> blue -- GasAmmo -> green - + -- HELD {} -> white -- LEFT {} -> cyan -- EQUIP {} -> yellow diff --git a/src/Dodge/Item/Scope.hs b/src/Dodge/Item/Scope.hs index 82d33435f..19a8ce524 100644 --- a/src/Dodge/Item/Scope.hs +++ b/src/Dodge/Item/Scope.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE LambdaCase #-} module Dodge.Item.Scope ( zoomScope, targetingScope, @@ -21,8 +20,7 @@ zoomScope = defaultHeldItem & itUse .~ UseScope OpticScope{_opticPos = 0, _opticZoom = 1, _opticDefaultZoom = 0.5} targetingScope :: TargetingType -> Item -targetingScope tt= case tt of - _ -> defaultHeldItem +targetingScope tt = defaultHeldItem & itType .~ TARGETING tt & itUse .~ UseCraft & itTargeting .~ ItTargeting diff --git a/src/Dodge/ListDisplayParams.hs b/src/Dodge/ListDisplayParams.hs index 1ec3f1d42..a56a0494f 100644 --- a/src/Dodge/ListDisplayParams.hs +++ b/src/Dodge/ListDisplayParams.hs @@ -1,55 +1,51 @@ -module Dodge.ListDisplayParams - ( invDisplayParams - , invCursorParams - , secondColumnParams - , subInvX - , defaultListDisplayParams - , optionListDisplayParams - ) where +module Dodge.ListDisplayParams ( + invDisplayParams, + invCursorParams, + secondColumnParams, + subInvX, + defaultListDisplayParams, + optionListDisplayParams, +) where -import Dodge.Data.ScreenPos +import Control.Lens +import qualified Data.Map.Strict as M import Dodge.Data.CardinalPoint -import SDL (MouseButton (..)) +import Dodge.Data.ScreenPos import Dodge.Data.SelectionList import Dodge.Data.World -import qualified Data.Map.Strict as M -import Control.Lens import Linear +import SDL (MouseButton (..)) defaultListDisplayParams :: ListDisplayParams defaultListDisplayParams = ListDisplayParams { _ldpVerticalGap = 0 , _ldpScale = 1 - , _ldpPos = ScreenPos {_spScreenOff = V2 (-0.5) 0.5 -- top left - , _spPixelOff = 0} + , _ldpPos = + ScreenPos + { _spScreenOff = V2 (-0.5) 0.5 -- top left + , _spPixelOff = 0 + } , _ldpWidth = FixedSelectionWidth 15 } invDisplayParams :: World -> ListDisplayParams invDisplayParams w = defaultListDisplayParams --- & ldpCursorSides .~ selcursortype & ldpWidth .~ FixedSelectionWidth (determineInvSelCursorWidth w) & ldpPos . spPixelOff .~ V2 6 (-1) --- where --- selcursortype = case w ^? hud . hudElement . subInventory of --- _ | ButtonRight `M.member` _mouseButtons (_input w) -> [North, South, East, West] --- Just ExamineInventory{} -> [North, South, East, West] --- Just CombineInventory{} -> [] --- _ -> [North, South, West] + invCursorParams :: World -> CursorDisplay -invCursorParams w = CursorDisplay $ case w ^? hud . hudElement . subInventory of - _ | ButtonRight `M.member` _mouseButtons (_input w) -> [North, South, East, West] - Just ExamineInventory{} -> [North, South, East, West] - Just CombineInventory{} -> [] - _ -> [North, South, West] +invCursorParams w = BoundaryCursor $ case w ^? hud . hudElement . subInventory of + _ | ButtonRight `M.member` _mouseButtons (_input w) -> [North, South, East, West] + Just ExamineInventory{} -> [North, South, East, West] + Just CombineInventory{} -> [] + _ -> [North, South, West] secondColumnParams :: ListDisplayParams secondColumnParams = defaultListDisplayParams & ldpPos . spPixelOff .~ V2 subInvX (-81) --- & ldpCursorSides .~ [North, South, West] subInvX :: Float subInvX = 10 * fromIntegral topInvW + 70 @@ -77,4 +73,3 @@ optionListDisplayParams = & ldpScale .~ 2 & ldpVerticalGap .~ 0 & ldpWidth .~ FixedSelectionWidth 50 --- & ldpCursorSides .~ [North, South, West] diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 019e4136d..334405063 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -59,7 +59,7 @@ drawHP cfig = drawInventory :: SelectionSections () -> World -> Configuration -> Picture drawInventory sss w cfig = drawSelectionSections sss ldp cfig - <> drawSSCursor sss (w ^? hud . hudElement . diSelection . _Just) ldp curs cfig + <> drawSSCursor sss (w ^? hud . hudElement . diSelection . _Just) ldp curs cfig <> iextra <> translateScreenPos cfig @@ -82,9 +82,9 @@ drawDIMouseOver w = fromMaybe mempty $ do (_, i) <- w ^? hud . hudElement . subInventory . nsMouseOver . _Just sss <- w ^? hud . hudElement . diSections let idp = invDisplayParams w - return . color (withAlpha 0.5 white) $ selSecDrawCursorAt (0, i) 10 idp curs sss + return . color (withAlpha 0.5 white) $ selSecDrawCursorAt 10 idp curs sss (0, i) where - curs = CursorDisplay [North,South] + curs = BoundaryCursor [North, South] getMouseInvSel :: World -> Maybe ((Int, Int), (Int, Int)) getMouseInvSel w = case w ^? hud . hudElement . subInventory . nsSelected of @@ -130,7 +130,7 @@ drawCombineInventory cfig sss w = <> drawSSCursor sss msel secondColumnParams curs cfig <> combineInventoryExtra sss msel cfig w where - curs = CursorDisplay [North,South,West] + curs = BoundaryCursor [North, South, West] msel = w ^? hud . hudElement . subInventory . ciSelection . _Just drawExamineInventory :: Configuration -> World -> Picture @@ -185,7 +185,9 @@ drawRBOptions :: Configuration -> World -> Picture drawRBOptions cfig w = fromMaybe mempty $ do guard $ ButtonRight `M.member` _mouseButtons (_input w) invid <- you w ^? crManipulation . manObject . imSelectedItem - eslist <- fmap equipSiteToPositions $ you w ^? crInv . ix invid . itUse . uequipEffect . eeSite + eslist <- + fmap equipSiteToPositions $ + you w ^? crInv . ix invid . itUse . uequipEffect . eeSite i <- w ^? rbOptions . opSel let ae = getEquipmentAllocation w sss <- w ^? hud . hudElement . diSections @@ -202,23 +204,36 @@ drawRBOptions cfig w = fromMaybe mempty $ do return $ toTopLeft cfig $ translate 290 (-1) (ytext midstr) - <> translate 160 (-1) (listCursorChooseBorderScale 0 1 [North, South] curpos 0 white 21 1) + <> translate + 160 + (-1) + ( listCursorChooseBorderScale + 0 + 1 + (BoundaryCursor [North, South]) + curpos + 0 + white + 21 + 1 + ) <> translate 380 (-1) ( drawListYoff (curpos - i) (map (text . eqPosText) eslist) - <> listCursorChooseBorderScale 0 1 [East] (curpos - i) 0 white 7 (length eslist) - <> listCursorChooseBorderScale 0 1 [West] (curpos + 1) 0 white 7 (length eslist - (i + 1)) - <> listCursorChooseBorderScale 0 1 [West] (curpos - i) 0 white 7 i + <> listCursorChooseBorderScale 0 1 (bc East) (curpos - i) 0 white 7 (length eslist) + <> listCursorChooseBorderScale 0 1 (bc West) (curpos + 1) 0 white 7 (length eslist - (i + 1)) + <> listCursorChooseBorderScale 0 1 (bc West) (curpos - i) 0 white 7 i <> maybetopborder i curpos <> maybebottomborder i (length eslist) curpos ) <> translate 460 (-1) (ytext extrastr) where - maybetopborder 0 curpos = listCursorChooseBorderScale 0 1 [North] curpos 0 white 7 1 + bc x = BoundaryCursor [x] + maybetopborder 0 curpos = listCursorChooseBorderScale 0 1 (bc North) curpos 0 white 7 1 maybetopborder _ _ = mempty maybebottomborder a b curpos - | a == b - 1 = listCursorChooseBorderScale 0 1 [South] curpos 0 white 7 1 + | a == b - 1 = listCursorChooseBorderScale 0 1 (bc South) curpos 0 white 7 1 | otherwise = mempty otheritem j = fromMaybe "" $ do itm <- you w ^? crInv . ix j @@ -282,8 +297,12 @@ combineInventoryExtra sss msel cfig w = fromMaybe mempty $ do let idp = invDisplayParams w return $ translateScreenPos cfig (idp ^. ldpPos) $ - selSecDrawCursor 17 idp (CursorDisplay [North, South, East, West]) - sss' (Just (0, i)) + selSecDrawCursor + 17 + idp + (BoundaryCursor [North, South, East, West]) + sss' + (Just (0, i)) displayTerminal :: Int -> Configuration -> LWorld -> Picture displayTerminal tid cfig w = fromMaybe mempty $ do diff --git a/src/Dodge/Render/InfoBox.hs b/src/Dodge/Render/InfoBox.hs index af30362dc..6b48a89f8 100644 --- a/src/Dodge/Render/InfoBox.hs +++ b/src/Dodge/Render/InfoBox.hs @@ -1,22 +1,42 @@ -module Dodge.Render.InfoBox - ( renderInfoListAt - , renderInfoListsAt - ) where +module Dodge.Render.InfoBox ( + renderInfoListAt, + renderInfoListsAt, +) where -import Dodge.Data.CardinalPoint -- this should be imported implicitly +-- this should be imported implicitly import Dodge.Base import Dodge.Data.Camera +import Dodge.Data.CardinalPoint import Dodge.Data.Config +import Dodge.Data.SelectionList import Dodge.Render.Connectors import Dodge.Render.List import Geometry import Picture -renderInfoListAt :: Float -> Float -> Configuration -> Camera -> (Point2, [String]) -> Picture +renderInfoListAt :: + Float -> + Float -> + Configuration -> + Camera -> + (Point2, [String]) -> + Picture renderInfoListAt x y cfig cam (p, ss) = toTopLeft cfig (renderListAt x y (zip ss (repeat white))) <> color white (lConnect (V2 (x - hw) (hh -25 - y)) (worldPosToScreen cam p)) - <> toTopLeft cfig (translate x (-y) $ listCursorChooseBorderScale 0 1 [North,South] 0 0 white 19 (length ss)) + <> toTopLeft + cfig + ( translate x (- y) $ + listCursorChooseBorderScale + 0 + 1 + (BoundaryCursor [North, South]) + 0 + 0 + white + 19 + (length ss) + ) where hw = halfWidth cfig hh = halfHeight cfig diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index bf02a84cb..f9396ec9f 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE LambdaCase #-} module Dodge.Render.List ( renderListAt, drawList, @@ -13,14 +14,13 @@ module Dodge.Render.List ( selSecDrawCursorAt, ) where -import Dodge.SelectionSections import Data.Maybe import Dodge.Base.Window import Dodge.Data.CardinalPoint import Dodge.Data.Config import Dodge.Data.SelectionList import Dodge.ScreenPos -import Dodge.SelectionList +import Dodge.SelectionSections import Geometry import LensHelp import ListHelp @@ -28,38 +28,29 @@ import Picture drawSelectionList :: ListDisplayParams -> Configuration -> SelectionList a -> Picture drawSelectionList ldps cfig sl = - translateScreenPos - cfig - (ldps ^. ldpPos) - $ drawListYgapScaleYoff - (_ldpVerticalGap ldps) - (_ldpScale ldps) + translateScreenPos cfig (ldps ^. ldpPos) $ + drawListYgapScaleYoff + (ldps ^. ldpVerticalGap) + (ldps ^. ldpScale) 0 (makeSelectionListPictures sl) - <> drawSelectionCursor sl ldps (CursorDisplay [North,West,South]) - -drawSelectionCursor :: SelectionList a - -> ListDisplayParams - -> CursorDisplay - -> Picture -drawSelectionCursor sl = drawCursorAt (f $ sl ^. slSelPos) (getShownItems sl) - where - -- the following is quite hacky - f = case sl ^. slRegex of - _ | sl ^. slRegexInput -> const (Just 0) - "" | not (sl ^. slRegexInput) -> id - _ -> fmap (+ 1) + <> drawCursorAt + (sl ^. slSelPos) + (sl ^. slItems) + ldps + (BoundaryCursor [North, South]) makeSelectionListPictures :: SelectionList a -> [Picture] -makeSelectionListPictures = concatMap f . getShownItems +makeSelectionListPictures = concatMap f . _slItems where f si = map (color (_siColor si) . text) $ _siPictures si - --f si = map ((flip inverseText) ((_siColor si))) $ _siPictures si -drawCursorAt :: Maybe Int -> [SelectionItem a] - -> ListDisplayParams - -> CursorDisplay - -> Picture +drawCursorAt :: + Maybe Int -> + [SelectionItem a] -> + ListDisplayParams -> + CursorDisplay -> + Picture drawCursorAt mi lis ldps curs = fromMaybe mempty $ do i <- mi selit <- lis !? i @@ -67,7 +58,7 @@ drawCursorAt mi lis ldps curs = fromMaybe mempty $ do listCursorChooseBorderScale (_ldpVerticalGap ldps) (_ldpScale ldps) - (curs ^. cursSides) + curs (sum . map _siHeight $ take i lis) (_siOffX selit) (_siColor selit) @@ -76,8 +67,8 @@ drawCursorAt mi lis ldps curs = fromMaybe mempty $ do getLDPWidth :: ListDisplayParams -> Int getLDPWidth ldps = case _ldpWidth ldps of - FixedSelectionWidth x -> x - _ -> 1 + FixedSelectionWidth x -> x + _ -> 1 drawListYoff :: Int -> [Picture] -> Picture drawListYoff = drawListYgapScaleYoff 0 1 @@ -91,14 +82,14 @@ stackPicturesAt = stackPicturesAtOff 0 stackPicturesAtOff :: Int -> [Picture] -> Picture stackPicturesAtOff i = mconcat . zipWith (drawListElement 10 1 0) [i, i -1 ..] -selSecDrawCursorAt - :: (Int,Int) - -> Int - -> ListDisplayParams - -> CursorDisplay - -> SelectionSections a - -> Picture -selSecDrawCursorAt (i,j) xsize ldp curs sss = fromMaybe mempty $ do +selSecDrawCursorAt :: + Int -> + ListDisplayParams -> + CursorDisplay -> + SelectionSections 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 @@ -106,45 +97,48 @@ selSecDrawCursorAt (i,j) xsize ldp curs sss = fromMaybe mempty $ do listCursorChooseBorderScale (ldp ^. ldpVerticalGap) (ldp ^. ldpScale) - (curs ^. cursSides) + curs yint (xint + _siOffX si) (_siColor si) xsize (_siHeight si) -selSecDrawCursor :: Int -> ListDisplayParams - -> CursorDisplay - -> SelectionSections a -> - Maybe (Int,Int) -> Picture -selSecDrawCursor xsize ldp curs sss msel = maybe mempty - (\x -> selSecDrawCursorAt x xsize ldp curs sss) - msel +selSecDrawCursor :: + Int -> + ListDisplayParams -> + CursorDisplay -> + SelectionSections a -> + Maybe (Int, Int) -> + Picture +selSecDrawCursor xsize ldp curs = maybe mempty . selSecDrawCursorAt xsize ldp curs -- displays a cursor that should match up to list text pictures listCursorChooseBorderScale :: Float -> Float -> - [CardinalPoint] -> + CursorDisplay -> Int -> Int -> Color -> Int -> Int -> Picture -listCursorChooseBorderScale ygap s borders yint xint col cursxsize cursysize = +listCursorChooseBorderScale ygap s curs yint xint col cursxsize cursysize = translate ((10 * fromIntegral xint - 5) * s) - (- (ygap + (s * 20 + ygap) * fromIntegral yint )) + (- (ygap + (s * 20 + ygap) * fromIntegral yint)) . color col - $ chooseCursorBorders (s * wth) (s * hgt) borders + $ chooseCursorBorders (s * wth) (s * hgt) curs where wth = 10 * (fromIntegral cursxsize + 1) hgt = 20 * fromIntegral cursysize + ygap * (fromIntegral cursysize - 1) -- note we cannot simply scale lines because they are drawn as solid rectangles -chooseCursorBorders :: Float -> Float -> [CardinalPoint] -> Picture -chooseCursorBorders w h = foldMap (line . toLine) +chooseCursorBorders :: Float -> Float -> CursorDisplay -> Picture +chooseCursorBorders w h = \case + BoundaryCursor ps -> foldMap (line . toLine) ps + BackdropCursor -> polygon . reverse $ rectNSWE 0 h' 0 w where h' = negate h toLine North = [V2 0 0, V2 w 0] @@ -181,7 +175,7 @@ renderListAt :: Float -> Float -> [(String, Color)] -> Picture renderListAt tx ty = translate tx (- ty) . drawList . map (\(str, col) -> color col $ text str) --inverseText :: String -> Color -> Picture ---inverseText str col = +--inverseText str col = -- translate3 (V3 0 0 (0.5)) -- (color (V4 0 1 0 0.1) ( text str)) -- <> diff --git a/src/Dodge/SelectionList.hs b/src/Dodge/SelectionList.hs index 32a953aed..caa7332cc 100644 --- a/src/Dodge/SelectionList.hs +++ b/src/Dodge/SelectionList.hs @@ -1,5 +1,4 @@ module Dodge.SelectionList ( - getShownItems, getAvailableListLines, ) where @@ -17,8 +16,3 @@ getAvailableListLines ldps cfig = floor ((dToBot - vgap) / itmHeight) dToBot = winy / 2 + winy * (ldps ^. ldpPos . spScreenOff . _y) + (ldps ^. ldpPos . spPixelOff . _y) - -getShownItems :: SelectionList a -> [SelectionItem a] -getShownItems sl = case sl ^. slRegexList of - [] -> sl ^. slItems - xs -> fmap fst xs diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index facf1617f..60eb8f235 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -3,7 +3,7 @@ module Dodge.SelectionSections ( ssLookupDown, ssLookupGT, ssSetCursor, --- setFirstPosSelectionSections, + -- setFirstPosSelectionSections, selSecYint, selSecSelSize, inverseSelSecYint, @@ -23,13 +23,17 @@ import Dodge.Data.Config import Dodge.Data.SelectionList import Dodge.ScreenPos import Geometry.Data +import Data.Foldable -scrollSelectionSections :: Int -> SelectionSections a -> Maybe (Int,Int) - -> Maybe (Int,Int) +scrollSelectionSections :: + Int -> + SelectionSections a -> + Maybe (Int, Int) -> + Maybe (Int, Int) scrollSelectionSections yi sss msel | yi == 0 = msel - | yi > 0 = foldr ($) msel $ replicate yi (ssScrollUsing ssLookupUp sss) - | otherwise = foldr ($) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) + | yi > 0 = foldl' (&) msel $ replicate yi (ssScrollUsing ssLookupUp sss) + | otherwise = foldl' (&) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) --setFirstPosSelectionSections :: SelectionSections a -> SelectionSections a --setFirstPosSelectionSections sss = fromMaybe sss $ do @@ -39,21 +43,15 @@ scrollSelectionSections yi sss msel ssScrollUsing :: (Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> SelectionSections a -> - Maybe (Int,Int) -> - Maybe (Int,Int) -ssScrollUsing g sss msel = - ( ssScrollMinOnFail - g - (sss & sssSections %~ fmap (ssItems %~ IM.filter _siIsSelectable)) - msel - ) + Maybe (Int, Int) -> + Maybe (Int, Int) +ssScrollUsing g = + ssScrollMinOnFail + g + . (sssSections %~ fmap (ssItems %~ IM.filter _siIsSelectable)) ssScrollMinOnFail :: - ( Int -> - Int -> - SelectionSections a -> - Maybe (Int, Int, SelectionItem a) - ) -> + (Int -> Int -> SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> SelectionSections a -> Maybe (Int, Int) -> Maybe (Int, Int) @@ -66,8 +64,8 @@ ssScrollMinOnFail f sss msel = fmap (\(i, j, _) -> (i, j)) $ l <|> ssLookupMin s ssSetCursor :: (SelectionSections a -> Maybe (Int, Int, SelectionItem a)) -> SelectionSections a -> - Maybe (Int,Int) -> - Maybe (Int,Int) + Maybe (Int, Int) -> + Maybe (Int, Int) ssSetCursor f sss msel = fromMaybe msel $ do (i, j, _) <- f sss return $ Just (i, j) @@ -205,7 +203,7 @@ inverseSelBoundaryUp cfig ldp sss (V2 _ y) = do let mselup = inverseSelSecYint (posSelSecYint cfig ldp y - 1) sss if Just sel == mselup then return $ sel & _2 +~ 1 - else return $ sel + else return sel inverseSelBoundaryDown :: Configuration -> diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index e0ab2e9f5..1501f3b70 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -363,7 +363,7 @@ shiftInvItemsUp :: (Int, Int) -> Int -> World -> World shiftInvItemsUp (_, i) x w = foldl' f w [i .. i + x] where f w' i' = swapInvItems g i' w' - g i' m = fmap fst $ IM.lookupLT i' m + g i' m = fst <$> IM.lookupLT i' m shiftInvItemsDown :: (Int, Int) -> Int -> World -> World shiftInvItemsDown (_, i) x w = fromMaybe w $ do @@ -372,7 +372,7 @@ shiftInvItemsDown (_, i) x w = fromMaybe w $ do return $ foldl' f w $ reverse [i .. i + x] where f w' i' = swapInvItems g i' w' - g i' m = fmap fst $ IM.lookupGT i' m + g i' m = fst <$> IM.lookupGT i' m updateMouseOverInventory :: Configuration -> World -> World updateMouseOverInventory cfig w = fromMaybe w $ do diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 27e5a7d43..25eb287f9 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -2,6 +2,7 @@ module Dodge.Update.Input.InGame ( updateUseInputInGame, ) where +import Control.Applicative import qualified Data.IntMap.Strict as IM import Data.List (sort) import qualified Data.Map.Strict as M @@ -236,10 +237,7 @@ updateEnterRegex w = case w ^? hud . hudElement . subInventory of secfocus a b = fromMaybe False $ do i <- di ^? diSelection . _Just . _1 return $ i == a || i == b - enterregex x sss = - sss & sssExtra . sssFilters . ix x %~ f - f Nothing = Just "" - f x = x + enterregex x = sssExtra . sssFilters . ix x %~ (<|> Just "") pauseGame :: Universe -> Universe pauseGame u = u & uvScreenLayers .~ [pauseMenu u] diff --git a/src/IntMapHelp.hs b/src/IntMapHelp.hs index 080c8a1e9..5f360a279 100644 --- a/src/IntMapHelp.hs +++ b/src/IntMapHelp.hs @@ -15,10 +15,8 @@ module IntMapHelp unsafeSwapKeys, safeSwapKeys, findIndex, - cycleGT, cycleLT, - invertIntMap, ) where @@ -99,7 +97,7 @@ cycleLT :: Int -> IntMap a -> Maybe (Int, a) cycleLT i m = lookupLT i m <|> lookupMax m invertIntMap :: Ord a => IntMap a -> M.Map a [Int] -invertIntMap = foldrWithKey +invertIntMap = + foldrWithKey (\k xs -> M.insertWith (++) xs [k]) mempty - diff --git a/src/Regex.hs b/src/Regex.hs deleted file mode 100644 index bd689aa60..000000000 --- a/src/Regex.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Regex where -import Data.List - -regexIn :: String -> String -> Bool -regexIn = isInfixOf - -regexList :: String -> [String] -> Bool -regexList x = any (isInfixOf x) diff --git a/tags b/tags index 9ec7911e0..434c21201 100644 --- a/tags +++ b/tags @@ -128,6 +128,7 @@ BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 113;" C BULLETMOD src/Dodge/Data/Item/Combine.hs 24;" C BULLETSYNTHESIZER src/Dodge/Data/Item/Combine.hs 80;" C BURSTRIFLE src/Dodge/Data/Item/Combine.hs 142;" C +BackdropCursor src/Dodge/Data/SelectionList.hs 29;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 14;" C Ball src/Dodge/Tesla/Ball.hs 1;" m Bark src/Dodge/Data/ActionPlan.hs 40;" C @@ -196,6 +197,7 @@ BottomEscapeMenuOption src/Dodge/Data/Universe.hs 73;" C BounceBullet src/Dodge/Data/Bullet.hs 38;" C Bound src/Bound.hs 1;" m Bound_box_screen src/Dodge/Data/Config.hs 81;" C +BoundaryCursor src/Dodge/Data/SelectionList.hs 26;" C Bounds src/Dodge/Data/Bounds.hs 12;" t Bounds src/Dodge/Data/Bounds.hs 6;" m Branch src/Dodge/Room/Branch.hs 4;" m @@ -689,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 69;" C +FixedSelectionWidth src/Dodge/Data/SelectionList.hs 65;" 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 @@ -921,7 +923,7 @@ IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 105;" C InvInt src/Dodge/Data/Item/Location.hs 18;" t Inventory src/Dodge/Inventory.hs 2;" m InventoryChange src/Dodge/Data/World.hs 33;" C -InventoryColor src/Dodge/Item/InventoryColor.hs 2;" m +InventoryColor src/Dodge/Item/InventoryColor.hs 1;" m InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C Investigate src/Dodge/Data/ActionPlan.hs 184;" C Invisible src/Dodge/Data/CamouflageStatus.hs 13;" C @@ -971,7 +973,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 43;" C LBoost src/Dodge/Data/Item/HeldUse.hs 45;" C LDT src/Dodge/Data/DoubleTree.hs 39;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C -LDTComb src/Dodge/Item/Grammar.hs 124;" t +LDTComb src/Dodge/Item/Grammar.hs 125;" t LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C @@ -1635,7 +1637,7 @@ 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 47;" t +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 @@ -1649,7 +1651,7 @@ Scenario src/Dodge/Scenario.hs 1;" m ScodeToChar src/Dodge/ScodeToChar.hs 1;" m Scope src/Dodge/Data/Item/Scope.hs 13;" t Scope src/Dodge/Data/Item/Scope.hs 6;" m -Scope src/Dodge/Item/Scope.hs 2;" m +Scope src/Dodge/Item/Scope.hs 1;" m ScreenLayer src/Dodge/Data/Universe.hs 77;" t ScreenLayer src/Dodge/Update/Input/ScreenLayer.hs 1;" m ScreenPos src/Dodge/Data/ScreenPos.hs 9;" t @@ -1658,7 +1660,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 51;" t +SectionCursor src/Dodge/Data/SelectionList.hs 48;" 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 @@ -1666,17 +1668,17 @@ 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 82;" C -SelectionItem src/Dodge/Data/SelectionList.hs 73;" t -SelectionList src/Dodge/Data/SelectionList.hs 29;" t +SelectionInfo src/Dodge/Data/SelectionList.hs 78;" C +SelectionItem src/Dodge/Data/SelectionList.hs 69;" 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 57;" t -SelectionSections src/Dodge/Data/SelectionList.hs 39;" t +SelectionSection src/Dodge/Data/SelectionList.hs 54;" t +SelectionSections src/Dodge/Data/SelectionList.hs 36;" t SelectionSections src/Dodge/SelectionSections.hs 1;" m -SelectionWidth src/Dodge/Data/SelectionList.hs 68;" t +SelectionWidth src/Dodge/Data/SelectionList.hs 64;" 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 @@ -2018,7 +2020,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 71;" C +UseMaxSelectionItemWidth src/Dodge/Data/SelectionList.hs 67;" 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 @@ -2032,7 +2034,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 70;" C +VariableSelectionWidth src/Dodge/Data/SelectionList.hs 66;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2389,7 +2391,7 @@ _ctPos src/Dodge/Data/Creature.hs 85;" f _ctType src/Dodge/Data/Creature.hs 86;" f _currentArc src/Dodge/Data/Item/Params.hs 22;" f _currentFoot src/Dodge/Data/Creature/Stance.hs 23;" f -_cursSides src/Dodge/Data/SelectionList.hs 26;" f +_cursSides src/Dodge/Data/SelectionList.hs 27;" f _cwGen src/Dodge/Data/CWorld.hs 27;" f _cwTiles src/Dodge/Data/CWorld.hs 30;" f _cwgGameRooms src/Dodge/Data/CWorld.hs 38;" f @@ -2988,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 54;" f -_scurPos src/Dodge/Data/SelectionList.hs 52;" f -_scurSize src/Dodge/Data/SelectionList.hs 53;" 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 _seenLocations src/Dodge/Data/LWorld.hs 139;" f _seenWalls src/Dodge/Data/CWorld.hs 29;" f _selLocation src/Dodge/Data/LWorld.hs 140;" f @@ -3016,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 78;" f -_siColor src/Dodge/Data/SelectionList.hs 86;" f -_siHeight src/Dodge/Data/SelectionList.hs 76;" f -_siHeight src/Dodge/Data/SelectionList.hs 84;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 77;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 85;" f -_siOffX src/Dodge/Data/SelectionList.hs 79;" f -_siOffX src/Dodge/Data/SelectionList.hs 87;" f -_siPayload src/Dodge/Data/SelectionList.hs 80;" f -_siPictures src/Dodge/Data/SelectionList.hs 75;" f -_siPictures src/Dodge/Data/SelectionList.hs 83;" f +_siColor src/Dodge/Data/SelectionList.hs 74;" f +_siColor src/Dodge/Data/SelectionList.hs 82;" f +_siHeight src/Dodge/Data/SelectionList.hs 72;" f +_siHeight src/Dodge/Data/SelectionList.hs 80;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 73;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 81;" 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 +_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 @@ -3041,11 +3043,8 @@ _skWidth src/Dodge/Data/Spark.hs 20;" f _skinHead src/Dodge/Data/Creature/Misc.hs 66;" f _skinLower src/Dodge/Data/Creature/Misc.hs 68;" f _skinUpper src/Dodge/Data/Creature/Misc.hs 67;" f -_slItems src/Dodge/Data/SelectionList.hs 30;" f -_slRegex src/Dodge/Data/SelectionList.hs 32;" f -_slRegexInput src/Dodge/Data/SelectionList.hs 33;" f -_slRegexList src/Dodge/Data/SelectionList.hs 34;" f -_slSelPos src/Dodge/Data/SelectionList.hs 31;" f +_slItems src/Dodge/Data/SelectionList.hs 32;" f +_slSelPos src/Dodge/Data/SelectionList.hs 33;" f _smoothScrollAmount src/Dodge/Data/Input.hs 25;" f _soundAngDist src/Sound/Data.hs 53;" f _soundChannel src/Sound/Data.hs 52;" f @@ -3061,16 +3060,16 @@ _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 59;" f -_ssDescriptor src/Dodge/Data/SelectionList.hs 64;" f -_ssIndent src/Dodge/Data/SelectionList.hs 63;" f -_ssItems src/Dodge/Data/SelectionList.hs 58;" f -_ssMinSize src/Dodge/Data/SelectionList.hs 60;" f -_ssOffset src/Dodge/Data/SelectionList.hs 61;" f -_ssShownItems src/Dodge/Data/SelectionList.hs 62;" f -_sssExtra src/Dodge/Data/SelectionList.hs 41;" f -_sssFilters src/Dodge/Data/SelectionList.hs 48;" f -_sssSections src/Dodge/Data/SelectionList.hs 40;" 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 +_sssExtra src/Dodge/Data/SelectionList.hs 38;" f +_sssFilters src/Dodge/Data/SelectionList.hs 45;" f +_sssSections src/Dodge/Data/SelectionList.hs 37;" 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 @@ -3343,7 +3342,7 @@ airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f airlockSimple src/Dodge/Room/Airlock.hs 66;" f airlockZ src/Dodge/Room/Airlock.hs 91;" f allHotkeys src/Dodge/Creature/YourControl.hs 51;" f -allInvLocs src/Dodge/Item/Grammar.hs 213;" f +allInvLocs src/Dodge/Item/Grammar.hs 214;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f ammoMagSPic src/Dodge/Item/Draw/SPic.hs 45;" f @@ -3416,7 +3415,7 @@ attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attribSize src/Shader/Compile.hs 306;" f augInvDirectSelect src/Dodge/Inventory.hs 217;" f -augmentedHUD src/Dodge/Item/Scope.hs 49;" f +augmentedHUD src/Dodge/Item/Scope.hs 47;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 350;" f autoCrit src/Dodge/Creature/AutoCrit.hs 13;" f @@ -3526,10 +3525,10 @@ bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 80;" f bulletBeltPack src/Dodge/Item/Equipment.hs 72;" f bulletCombinations src/Dodge/Combine/Graph.hs 34;" f -bulletModule src/Dodge/Item/Scope.hs 37;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 46;" f +bulletModule src/Dodge/Item/Scope.hs 35;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 44;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 124;" f -bulletTargetingModule src/Dodge/Item/Scope.hs 43;" f +bulletTargetingModule src/Dodge/Item/Scope.hs 41;" f bulletWeapons src/Dodge/Combine/Combinations.hs 246;" f burstRifle src/Dodge/Item/Held/Cane.hs 74;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f @@ -3575,7 +3574,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 110;" f -chooseCursorBorders src/Dodge/Render/List.hs 146;" f +chooseCursorBorders src/Dodge/Render/List.hs 138;" f chooseEquipmentPosition src/Dodge/Inventory/RBList.hs 36;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 39;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 42;" f @@ -3605,16 +3604,16 @@ cleatOnward src/Dodge/Cleat.hs 24;" f cleatSide src/Dodge/Cleat.hs 27;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 414;" f clickDetector src/Dodge/Item/Held/Utility.hs 36;" f -clickGetCreature src/Dodge/Debug.hs 82;" f +clickGetCreature src/Dodge/Debug.hs 83;" f clipV src/Geometry/Vector.hs 47;" f clipZoom src/Dodge/Update/Camera.hs 215;" f clockCycle src/Dodge/Clock.hs 9;" f closeObjEq src/Dodge/Inventory/CloseObject.hs 15;" f closeObjPos src/Dodge/Inventory/CloseObject.hs 10;" f -closeObjectInfo src/Dodge/Render/HUD.hs 162;" f +closeObjectInfo src/Dodge/Render/HUD.hs 166;" f closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 69;" f -closestCreatureID src/Dodge/Debug.hs 91;" f +closestCreatureID src/Dodge/Debug.hs 92;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f closestPointOnLineParam src/Geometry/Intersect.hs 267;" f closestPointOnSeg src/Geometry/Intersect.hs 282;" f @@ -3637,7 +3636,7 @@ collideCircWalls src/Dodge/Base/Collide.hs 149;" f collidePoint src/Dodge/Base/Collide.hs 48;" f collidePointTestFilter src/Dodge/Base/Collide.hs 93;" f collidePointWallsFilter src/Dodge/Base/Collide.hs 107;" f -collisionDebugItem src/Dodge/Debug.hs 30;" f +collisionDebugItem src/Dodge/Debug.hs 31;" f color src/Picture/Base.hs 108;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 235;" f @@ -3647,7 +3646,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 41;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineFloors src/Dodge/Room/Procedural.hs 172;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 251;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 270;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f @@ -3778,7 +3777,7 @@ cylinderIndices src/Shader/Poke.hs 374;" f cylinderOnSeg src/Geometry.hs 125;" f cylinderPoly src/Shape.hs 86;" f cylinderRoundIndices src/Shader/Poke.hs 381;" f -dShadCol src/Dodge/Render/List.hs 201;" f +dShadCol src/Dodge/Render/List.hs 195;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damToExpBarrel src/Dodge/Barreloid.hs 57;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f @@ -3814,14 +3813,14 @@ deadUpperBody src/Dodge/Creature/Picture.hs 126;" f debrisSize src/Dodge/Block/Debris.hs 111;" f debugDraw src/Dodge/Debug/Picture.hs 124;" f debugDraw' src/Dodge/Debug/Picture.hs 135;" f -debugEvent src/Dodge/Debug.hs 24;" f -debugEvents src/Dodge/Debug.hs 17;" f -debugList src/Dodge/Debug.hs 78;" f +debugEvent src/Dodge/Debug.hs 25;" f +debugEvents src/Dodge/Debug.hs 18;" f +debugList src/Dodge/Debug.hs 79;" f debugMenu src/Dodge/Menu.hs 116;" f debugMenuOptions src/Dodge/Menu.hs 119;" f debugOn src/Dodge/Data/Config.hs 149;" f -debugSelectCreatureList src/Dodge/Debug.hs 61;" f -debugSelectCreatureMessage src/Dodge/Debug.hs 52;" f +debugSelectCreatureList src/Dodge/Debug.hs 62;" f +debugSelectCreatureMessage src/Dodge/Debug.hs 53;" f decTimMvVel src/Dodge/Projectile/Update.hs 142;" f decodedtmap src/Dodge/Terminal.hs 203;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f @@ -3898,7 +3897,7 @@ defaultLWorld src/Dodge/Default/World.hs 92;" f defaultLeftItem src/Dodge/Default/Item.hs 38;" f defaultLeftLoadable src/Dodge/Default/Item/Use/Consumption.hs 8;" f defaultLeftUse src/Dodge/Default/Item/Use.hs 14;" f -defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f +defaultListDisplayParams src/Dodge/ListDisplayParams.hs 19;" f defaultMachine src/Dodge/Default.hs 33;" f defaultMachineWall src/Dodge/Default/Wall.hs 48;" f defaultPP src/Dodge/Default.hs 66;" f @@ -3944,7 +3943,7 @@ detV src/Geometry/Vector.hs 93;" f detectorColor src/Dodge/Item/Draw/SPic.hs 391;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 190;" f -determineInvSelCursorWidth src/Dodge/ListDisplayParams.hs 58;" f +determineInvSelCursorWidth src/Dodge/ListDisplayParams.hs 56;" f determineProjectileTracking src/Dodge/HeldUse.hs 485;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f diffAngles src/Geometry.hs 196;" f @@ -3961,7 +3960,7 @@ displayConfig src/Dodge/Menu.hs 196;" f displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 33;" f displayFreeSlots src/Dodge/DisplayInventory.hs 148;" f -displayTerminal src/Dodge/Render/HUD.hs 283;" f +displayTerminal src/Dodge/Render/HUD.hs 307;" f displayTerminalLineString src/Dodge/Update.hs 422;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f @@ -4072,7 +4071,7 @@ drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCarte src/Dodge/Render/HUD/Carte.hs 14;" f drawCircFlare src/Dodge/Flare.hs 25;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f -drawCombineInventory src/Dodge/Render/HUD.hs 123;" f +drawCombineInventory src/Dodge/Render/HUD.hs 126;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 58;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 342;" f @@ -4080,16 +4079,16 @@ drawCreature src/Dodge/Render/ShapePicture.hs 82;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 165;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f -drawCursorAt src/Dodge/Render/List.hs 59;" f +drawCursorAt src/Dodge/Render/List.hs 47;" f drawDDATest src/Dodge/Debug/Picture.hs 256;" f -drawDIMouseOver src/Dodge/Render/HUD.hs 79;" f -drawDISelections src/Dodge/Render/HUD.hs 97;" f -drawDISelections' src/Dodge/Render/HUD.hs 106;" f +drawDIMouseOver src/Dodge/Render/HUD.hs 80;" f +drawDISelections src/Dodge/Render/HUD.hs 100;" f +drawDISelections' src/Dodge/Render/HUD.hs 109;" f drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f drawEquipment src/Dodge/Creature/Picture.hs 140;" f -drawExamineInventory src/Dodge/Render/HUD.hs 132;" f +drawExamineInventory src/Dodge/Render/HUD.hs 136;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 234;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f @@ -4108,10 +4107,10 @@ drawLampCover src/Dodge/Prop/Draw.hs 44;" f drawLaser src/Dodge/Laser/Draw.hs 6;" f drawLightSource src/Dodge/LightSource/Draw.hs 7;" f drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f -drawList src/Dodge/Render/List.hs 195;" f -drawListElement src/Dodge/Render/List.hs 175;" f -drawListYgapScaleYoff src/Dodge/Render/List.hs 85;" f -drawListYoff src/Dodge/Render/List.hs 82;" f +drawList src/Dodge/Render/List.hs 189;" f +drawListElement src/Dodge/Render/List.hs 169;" f +drawListYgapScaleYoff src/Dodge/Render/List.hs 75;" f +drawListYoff src/Dodge/Render/List.hs 72;" f drawMachine src/Dodge/Machine/Draw.hs 14;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 53;" f @@ -4130,12 +4129,11 @@ drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 15;" f drawProp' src/Dodge/Prop/Draw.hs 12;" f -drawRBOptions src/Dodge/Render/HUD.hs 180;" f +drawRBOptions src/Dodge/Render/HUD.hs 184;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 26;" f -drawSelectionCursor src/Dodge/Render/List.hs 41;" f -drawSelectionList src/Dodge/Render/List.hs 29;" f +drawSelectionList src/Dodge/Render/List.hs 28;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 13;" f drawSensor src/Dodge/Machine/Draw.hs 21;" f drawShader src/Shader.hs 27;" f @@ -4145,7 +4143,7 @@ drawShell src/Dodge/Projectile/Draw.hs 20;" f drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 6;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 14;" f -drawSubInventory src/Dodge/Render/HUD.hs 115;" f +drawSubInventory src/Dodge/Render/HUD.hs 118;" f drawSweep src/Dodge/Render/ShapePicture.hs 63;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f @@ -4197,7 +4195,7 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f enterCombineInv src/Dodge/DisplayInventory.hs 243;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f -equipAllocString src/Dodge/Render/HUD.hs 223;" f +equipAllocString src/Dodge/Render/HUD.hs 242;" f equipInfo src/Dodge/Item/Info.hs 103;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f equipPosition src/Dodge/Item/Draw.hs 29;" f @@ -4289,7 +4287,7 @@ flockPointTarget src/Dodge/Creature/Boid.hs 199;" f flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 167;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 171;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 165;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f @@ -4350,7 +4348,7 @@ geqConstr src/SameConstr.hs 21;" f getAmmoLinks src/Dodge/Item/Grammar.hs 73;" f getArguments src/Dodge/Update/Scroll.hs 154;" f getArguments' src/Dodge/Update/Scroll.hs 142;" f -getAvailableListLines src/Dodge/SelectionList.hs 11;" f +getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulletTrajectory src/Dodge/HeldUse.hs 347;" f getBulletType src/Dodge/HeldUse.hs 321;" f getCommands src/Dodge/Terminal.hs 115;" f @@ -4362,18 +4360,17 @@ getDamageCoding src/Dodge/Terminal.hs 175;" f getDistortions src/Dodge/Render.hs 382;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getItem src/Dodge/Item/Location.hs 15;" f -getLDPWidth src/Dodge/Render/List.hs 77;" f +getLDPWidth src/Dodge/Render/List.hs 67;" f getLaserColor src/Dodge/HeldUse.hs 196;" f getLaserDamage src/Dodge/HeldUse.hs 193;" f getLaserPhaseV src/Dodge/HeldUse.hs 190;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f -getMouseInvSel src/Dodge/Render/HUD.hs 86;" f -getMouseInvSel' src/Dodge/Render/HUD.hs 91;" f +getMouseInvSel src/Dodge/Render/HUD.hs 89;" f +getMouseInvSel' src/Dodge/Render/HUD.hs 94;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f getPrettyShort src/AesonHelp.hs 10;" f getSensor src/Dodge/Terminal.hs 187;" f -getShownItems src/Dodge/SelectionList.hs 21;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f getSplitString src/Dodge/Debug/Terminal.hs 123;" f getTiles src/Dodge/Layout.hs 208;" f @@ -4475,7 +4472,7 @@ hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 382;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f homingDrawType src/Dodge/Projectile/Create.hs 12;" f -homingModule src/Dodge/Item/Scope.hs 34;" f +homingModule src/Dodge/Item/Scope.hs 32;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 54;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 39;" f @@ -4554,29 +4551,29 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 315;" f interweave src/Justify.hs 17;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 181;" f -invCursorParams src/Dodge/ListDisplayParams.hs 40;" f +invAdj src/Dodge/Item/Grammar.hs 182;" f +invCursorParams src/Dodge/ListDisplayParams.hs 38;" f invDimColor src/Dodge/DisplayInventory.hs 142;" f -invDisplayParams src/Dodge/ListDisplayParams.hs 28;" f -invHead src/Dodge/Render/HUD.hs 319;" f -invLDT src/Dodge/Item/Grammar.hs 165;" f -invRootMap src/Dodge/Item/Grammar.hs 174;" f -invRootTrees src/Dodge/Item/Grammar.hs 206;" f +invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f +invHead src/Dodge/Render/HUD.hs 343;" f +invLDT src/Dodge/Item/Grammar.hs 166;" f +invRootMap src/Dodge/Item/Grammar.hs 175;" f +invRootTrees src/Dodge/Item/Grammar.hs 207;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 19;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 162;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f -invTrees src/Dodge/Item/Grammar.hs 194;" f -invTrees' src/Dodge/Item/Grammar.hs 198;" f -inventoryExtra src/Dodge/Render/HUD.hs 232;" f -inventoryExtraH src/Dodge/Render/HUD.hs 243;" f +invTrees src/Dodge/Item/Grammar.hs 195;" f +invTrees' src/Dodge/Item/Grammar.hs 199;" f +inventoryExtra src/Dodge/Render/HUD.hs 251;" f +inventoryExtraH src/Dodge/Render/HUD.hs 262;" f inventoryX src/Dodge/Creature.hs 115;" f -inverseSelBoundaryDown src/Dodge/SelectionSections.hs 210;" f -inverseSelBoundaryUp src/Dodge/SelectionSections.hs 197;" f -inverseSelNumPos src/Dodge/SelectionSections.hs 188;" f -inverseSelSecYint src/Dodge/SelectionSections.hs 158;" f -inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 169;" f +inverseSelBoundaryDown src/Dodge/SelectionSections.hs 211;" f +inverseSelBoundaryUp src/Dodge/SelectionSections.hs 198;" f +inverseSelNumPos src/Dodge/SelectionSections.hs 189;" f +inverseSelSecYint src/Dodge/SelectionSections.hs 159;" f +inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 170;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f invertIntMap src/IntMapHelp.hs 101;" f @@ -4645,7 +4642,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 17;" f itmUsageInfo src/Dodge/Item/Info.hs 196;" f jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 156;" f +joinItemsInList src/Dodge/Item/Grammar.hs 157;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f @@ -4698,10 +4695,10 @@ ldtToIndentList src/Dodge/DoubleTree.hs 146;" f ldtToLoc src/Dodge/DoubleTree.hs 187;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 93;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 126;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 127;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 97;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 140;" f +leftRightCombine src/Dodge/Item/Grammar.hs 141;" f legsSPic src/Dodge/Item/Draw/SPic.hs 415;" f liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f light src/Color.hs 104;" f @@ -4726,15 +4723,15 @@ linksAndPath' src/Dodge/Room/Path.hs 44;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 7;" f listConfig src/Dodge/Menu.hs 199;" f listControls src/Dodge/Menu.hs 212;" f -listCursorChooseBorderScale src/Dodge/Render/List.hs 125;" f +listCursorChooseBorderScale src/Dodge/Render/List.hs 117;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 235;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f llleft src/Dodge/Item/Grammar.hs 105;" f -llright src/Dodge/Item/Grammar.hs 108;" f +llright src/Dodge/Item/Grammar.hs 109;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 308;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 332;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f @@ -4824,7 +4821,7 @@ makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 26;" f makeRect src/Grid.hs 82;" f -makeSelectionListPictures src/Dodge/Render/List.hs 53;" f +makeSelectionListPictures src/Dodge/Render/List.hs 42;" f makeShaderEBO src/Shader/Compile.hs 53;" f makeShaderProgram src/Shader/Compile.hs 241;" f makeShaderUsingVAO src/Shader/Compile.hs 146;" f @@ -5036,7 +5033,7 @@ onRemoveWristShield src/Dodge/Euse.hs 92;" f onXY src/Geometry/Vector3D.hs 130;" f oneH src/Dodge/Creature/Test.hs 97;" f openCursorAt src/Dodge/Render/HUD/Carte.hs 54;" f -optionListDisplayParams src/Dodge/ListDisplayParams.hs 71;" f +optionListDisplayParams src/Dodge/ListDisplayParams.hs 69;" f optionMenu src/Dodge/Menu.hs 105;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 50;" f optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 39;" f @@ -5235,7 +5232,7 @@ polysToPic src/Polyhedra.hs 130;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posEventEffect src/Dodge/PosEvent.hs 16;" f posRms src/Dodge/Tree/Shift.hs 44;" f -posSelSecYint src/Dodge/SelectionSections.hs 139;" f +posSelSecYint src/Dodge/SelectionSections.hs 140;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f postGenerationProcessing src/Dodge/LevelGen.hs 33;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f @@ -5383,7 +5380,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 426;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteScreen src/Dodge/Item/Scope.hs 52;" f +remoteScreen src/Dodge/Item/Scope.hs 50;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f removeAmmoFromMag src/Dodge/HeldUse.hs 308;" f removeDot src/ShortShow.hs 30;" f @@ -5393,11 +5390,11 @@ removeShieldWall src/Dodge/Euse.hs 152;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f renderFlatLighting src/Render.hs 104;" f -renderInfoListAt src/Dodge/Render/InfoBox.hs 15;" f -renderInfoListsAt src/Dodge/Render/InfoBox.hs 24;" f +renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f +renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f -renderListAt src/Dodge/Render/List.hs 180;" f +renderListAt src/Dodge/Render/List.hs 174;" f renderShadows src/Render.hs 117;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f @@ -5429,7 +5426,7 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 51;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 133;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 134;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5530,7 +5527,7 @@ screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f scrollAugInvSel src/Dodge/Inventory.hs 225;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 137;" f scrollCommands src/Dodge/Update/Scroll.hs 134;" f -scrollDebugInfoInt src/Dodge/Debug.hs 46;" f +scrollDebugInfoInt src/Dodge/Debug.hs 47;" f scrollRBOption src/Dodge/Update/Scroll.hs 111;" f scrollSelectionSections src/Dodge/SelectionSections.hs 27;" f scrollTimeBack src/Dodge/Update.hs 200;" f @@ -5545,18 +5542,18 @@ seagullCryS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 418;" f seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 360;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 512;" f searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 203;" f -secondColumnParams src/Dodge/ListDisplayParams.hs 46;" f +secondColumnParams src/Dodge/ListDisplayParams.hs 45;" f seedStartMenu src/Dodge/Menu.hs 79;" f seedStartOptions src/Dodge/Menu.hs 82;" f segOnCirc src/Geometry.hs 116;" f -selNumPos src/Dodge/Render/HUD.hs 379;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 402;" f -selSecDrawCursor src/Dodge/Render/List.hs 116;" f -selSecDrawCursorAt src/Dodge/Render/List.hs 94;" f -selSecSelCol src/Dodge/Render/HUD.hs 425;" f -selSecSelSize src/Dodge/SelectionSections.hs 135;" f -selSecYint src/Dodge/SelectionSections.hs 144;" f -selectCreatureDebugItem src/Dodge/Debug.hs 38;" f +selNumPos src/Dodge/Render/HUD.hs 403;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 426;" f +selSecDrawCursor src/Dodge/Render/List.hs 106;" f +selSecDrawCursorAt src/Dodge/Render/List.hs 84;" f +selSecSelCol src/Dodge/Render/HUD.hs 449;" f +selSecSelSize src/Dodge/SelectionSections.hs 136;" f +selSecYint src/Dodge/SelectionSections.hs 145;" f +selectCreatureDebugItem src/Dodge/Debug.hs 39;" f selectUse src/Dodge/SelectUse.hs 11;" f selectedCloseObject src/Dodge/Inventory.hs 238;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f @@ -5780,22 +5777,22 @@ square src/Geometry/Polygon.hs 46;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 41;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 110;" f squashNormalizeV src/Geometry/Vector.hs 146;" f -ssLookupDown src/Dodge/SelectionSections.hs 85;" f -ssLookupGE' src/Dodge/SelectionSections.hs 128;" f -ssLookupGT src/Dodge/SelectionSections.hs 115;" f -ssLookupGT' src/Dodge/SelectionSections.hs 121;" f -ssLookupLE' src/Dodge/SelectionSections.hs 103;" f -ssLookupLT src/Dodge/SelectionSections.hs 90;" f -ssLookupLT' src/Dodge/SelectionSections.hs 96;" f -ssLookupMax src/Dodge/SelectionSections.hs 75;" f -ssLookupMin src/Dodge/SelectionSections.hs 110;" f -ssLookupUp src/Dodge/SelectionSections.hs 80;" f -ssScrollMinOnFail src/Dodge/SelectionSections.hs 51;" f -ssScrollUsing src/Dodge/SelectionSections.hs 39;" f -ssSetCursor src/Dodge/SelectionSections.hs 66;" f +ssLookupDown src/Dodge/SelectionSections.hs 86;" f +ssLookupGE' src/Dodge/SelectionSections.hs 129;" f +ssLookupGT src/Dodge/SelectionSections.hs 116;" f +ssLookupGT' src/Dodge/SelectionSections.hs 122;" f +ssLookupLE' src/Dodge/SelectionSections.hs 104;" f +ssLookupLT src/Dodge/SelectionSections.hs 91;" f +ssLookupLT' src/Dodge/SelectionSections.hs 97;" f +ssLookupMax src/Dodge/SelectionSections.hs 76;" f +ssLookupMin src/Dodge/SelectionSections.hs 111;" f +ssLookupUp src/Dodge/SelectionSections.hs 81;" f +ssScrollMinOnFail src/Dodge/SelectionSections.hs 52;" f +ssScrollUsing src/Dodge/SelectionSections.hs 42;" f +ssSetCursor src/Dodge/SelectionSections.hs 67;" f ssfold src/FoldableHelp.hs 105;" f -stackPicturesAt src/Dodge/Render/List.hs 88;" f -stackPicturesAtOff src/Dodge/Render/List.hs 91;" f +stackPicturesAt src/Dodge/Render/List.hs 78;" f +stackPicturesAtOff src/Dodge/Render/List.hs 81;" f stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 282;" f startCr src/Dodge/Creature.hs 91;" f @@ -5827,7 +5824,7 @@ strideRot src/Dodge/Item/HeldOffset.hs 64;" f stringToList src/Picture/Base.hs 313;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f -subInvX src/Dodge/ListDisplayParams.hs 52;" f +subInvX src/Dodge/ListDisplayParams.hs 50;" f subMap src/TreeHelp.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f swapInOutLinks src/Dodge/RoomLink.hs 80;" f @@ -5864,7 +5861,7 @@ targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 194;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f -targetingScope src/Dodge/Item/Scope.hs 23;" f +targetingScope src/Dodge/Item/Scope.hs 22;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 378;" f teleportModule src/Dodge/Item/Craftable.hs 30;" f @@ -5926,10 +5923,10 @@ toColor8 src/Color.hs 148;" f toCombNodeLabel src/Dodge/Combine/Graph.hs 81;" f toFloatVAs src/Shader/Compile.hs 211;" f toLabel src/Dodge/Cleat.hs 16;" f -toLasgunUpdate src/Dodge/Item/Grammar.hs 113;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 114;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f -toTopLeft src/Dodge/Render/List.hs 205;" f +toTopLeft src/Dodge/Render/List.hs 199;" f toV2 src/Geometry/Data.hs 36;" f toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f @@ -5943,7 +5940,7 @@ togglesToEffects src/Dodge/Terminal.hs 245;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 460;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 430;" f tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 320;" f -topInvW src/Dodge/ListDisplayParams.hs 55;" f +topInvW src/Dodge/ListDisplayParams.hs 53;" f topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f topTestPart src/Dodge/TestString.hs 39;" f @@ -6311,7 +6308,7 @@ yV2 src/Geometry/Vector.hs 203;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 18;" f youDropItem src/Dodge/Creature/Action.hs 184;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 174;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 178;" f yourControl src/Dodge/Creature/YourControl.hs 22;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f @@ -6352,5 +6349,5 @@ zoomFloatingCamera src/Dodge/Update/Camera.hs 64;" f zoomFromItem src/Dodge/Update/Camera.hs 211;" f zoomInLongGun src/Dodge/Update/Camera.hs 155;" f zoomOutLongGun src/Dodge/Update/Camera.hs 163;" f -zoomScope src/Dodge/Item/Scope.hs 18;" f +zoomScope src/Dodge/Item/Scope.hs 17;" f zoomSpeed src/Dodge/Update/Camera.hs 152;" f