diff --git a/ghcidOutput b/ghcidOutput index 430312a1b..8b77f4f16 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1,50 @@ -All good (614 modules, at 16:34:09) +/home/justin/Haskell/loop/src/Dodge/Render/List.hs:80:1-21: warning: [-Wunused-top-binds] + Defined but not used: ‘drawTreeYgapScaleYoff’ + | +80 | drawTreeYgapScaleYoff ygap s i = undefined + | ^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Render/List.hs:80:23-26: warning: [-Wunused-matches] + Defined but not used: ‘ygap’ + | +80 | drawTreeYgapScaleYoff ygap s i = undefined + | ^^^^ +/home/justin/Haskell/loop/src/Dodge/Render/List.hs:80:28: warning: [-Wunused-matches] + Defined but not used: ‘s’ + | +80 | drawTreeYgapScaleYoff ygap s i = undefined + | ^ +/home/justin/Haskell/loop/src/Dodge/Render/List.hs:80:30: warning: [-Wunused-matches] + Defined but not used: ‘i’ + | +80 | drawTreeYgapScaleYoff ygap s i = undefined + | ^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:12:1-28: warning: [-Wunused-imports] + The import of ‘Dodge.Data.DoubleTree’ is redundant + | +12 | import Dodge.Data.DoubleTree + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:15:1-48: warning: [-Wunused-imports] + The qualified import of ‘Data.IntMap.Merge.Strict’ is redundant + | +15 | import qualified Data.IntMap.Merge.Strict as MIM + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:27:1-25: warning: [-Wunused-imports] + The import of ‘Dodge.Item.Grammar’ is redundant + | +27 | import Dodge.Item.Grammar + | ^^^^^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:119:5-13: warning: [-Wunused-local-binds] + Defined but not used: ‘addindent’ + | +119 | addindent x y = y & siPictures %~ map (x ++) + | ^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:254:1-23: warning: [-Wunused-top-binds] + Defined but not used: ‘displaySelectionSection’ + | +254 | displaySelectionSection ss = undefined + | ^^^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/DisplayInventory.hs:254:25-26: warning: [-Wunused-matches] + Defined but not used: ‘ss’ + | +254 | displaySelectionSection ss = undefined + | ^^ diff --git a/src/Dodge/Data/DoubleTree.hs b/src/Dodge/Data/DoubleTree.hs index ec58c54a8..bf812a6c4 100644 --- a/src/Dodge/Data/DoubleTree.hs +++ b/src/Dodge/Data/DoubleTree.hs @@ -10,6 +10,12 @@ import Data.Aeson import Data.Aeson.TH import Data.Bifunctor +data DoubleTreeNodeType + = DTRootNode + | DTTopNode + | DTMidAboveNode + | DTMidBelowNode + | DTBottomNode data DoubleTree a = DT {_dtValue :: a,_dtLeft :: [DoubleTree a],_dtRight :: [DoubleTree a]} deriving (Eq,Ord,Show,Read) @@ -21,6 +27,9 @@ data LabelDoubleTree b a = LDT {_ldtValue :: a, _ldtLeft :: [(b,LabelDoubleTree instance Functor DoubleTree where fmap f (DT x l r) = DT (f x) (fmap (fmap f) l) (fmap (fmap f) r) +instance Foldable DoubleTree where + foldMap f (DT x l r) = foldMap (foldMap f) l <> f x <> foldMap (foldMap f) r + instance Functor (LabelDoubleTree b) where fmap f (LDT x l r) = LDT (f x) (fmap (second $ fmap f) l) (fmap (second $ fmap f) r) diff --git a/src/Dodge/Data/SelectionList.hs b/src/Dodge/Data/SelectionList.hs index ace638c2c..035472b42 100644 --- a/src/Dodge/Data/SelectionList.hs +++ b/src/Dodge/Data/SelectionList.hs @@ -5,7 +5,6 @@ module Dodge.Data.SelectionList where -import Dodge.Data.DoubleTree import Color import Control.Lens import Data.IntMap.Strict (IntMap) @@ -62,16 +61,6 @@ data SelectionSection a = SelectionSection , _ssIndent :: Int , _ssDescriptor :: String } - | - SelectionTreeSection - { _stsItems :: DoubleTree (SelectionItem a) - , _ssCursor :: Maybe SectionCursor - , _ssMinSize :: Int - , _ssOffset :: Int - , _ssShownItems :: [Picture] - , _ssIndent :: Int - , _ssDescriptor :: String - } data SelectionWidth diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index c15fe2fee..6f6765734 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -9,6 +9,7 @@ module Dodge.DisplayInventory ( updateCombinePositioning, ) where +import Dodge.Data.DoubleTree import Control.Monad import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Merge.Strict as MIM @@ -113,11 +114,12 @@ updateDisplaySections w cfig sss = coitems' = IM.fromDistinctAscList . zip [0 ..] $ map closeObjectToSelectionItem (w ^. hud . closeObjects) - invitems' = MIM.merge MIM.dropMissing MIM.dropMissing (MIM.zipWithMatched $ const addindent) indents $ IM.mapWithKey (invSelectionItem cr) inv + --invitems' = MIM.merge MIM.dropMissing MIM.dropMissing (MIM.zipWithMatched $ const addindent) indents $ IM.mapWithKey (invSelectionItem cr) inv + invitems' = IM.mapWithKey (invSelectionItem cr) inv addindent x y = y & siPictures %~ map (x ++) cr = you w inv = _crInv (you w) - indents = indentInv inv + --indents = indentInv inv --inv = indentInv $ _crInv (you w) nfreeslots = crNumFreeSlots cr filtpair i itms filtdescription = @@ -231,7 +233,6 @@ updateSection sis mcsel availablelines ss = length allstrings - availablelines _ -> oldoffset tweakfirst (x : xs) - -- -- a| offset > 0 = xtra "<<<" : map h xs | offset > 0 = translate 0 (-100) (color moreupcolor $ text (theindent ++ replicate 15 '^')) : map h xs @@ -241,38 +242,24 @@ updateSection sis mcsel availablelines ss = shownitems | length shownstrings > availablelines = tweakfirst (take (availablelines - 1) shownstrings) - -- ++ [xtra ">>>"] ++ [translate 0 100 . color moredowncolor . textVMirror $ theindent ++ replicate 15 '^'] | otherwise = tweakfirst shownstrings moredowncolor = fromMaybe white $ allstrings ^? ix (offset + availablelines - 1) . _1 - allstrings :: [(Color, Picture)] --- allstrings = IM.elems $ overlapSelectionItems $ IM.elems sis allstrings = listSelectionColorPicture sis shownstrings = drop offset allstrings h (_, str) = translate (fromIntegral (_ssIndent ss) * 100) 0 str theindent = replicate (_ssIndent ss) ' ' - --xtra str = color white . text $ theindent ++ str ++ " MORE " ++ _ssDescriptor ss + +displaySelectionSection :: SelectionSection a -> Picture +displaySelectionSection ss = undefined listSelectionColorPicture :: Foldable t => t (SelectionItem a) -> [(Color,Picture)] listSelectionColorPicture = foldMap f where f si = map g (_siPictures si) where - g str = (_siColor si,color (_siColor si) $ text str) - ---overlapSelectionItems :: [SelectionItem a] -> IM.IntMap (Color, Picture) ---overlapSelectionItems = go 0 --- where --- go _ [] = mempty --- go i (si : xs) = doinsert $ go (i + _siHeight si) xs --- where --- thecol = _siColor si --- doinsert m = --- ifoldr --- (\j str -> IM.insertWith ihelp (i + j) (thecol,color thecol (text str))) --- m --- (_siPictures si) --- ihelp (_,x) (col,y) = ( col, x<>y) + indent = 100 * fromIntegral (_siOffX si) + g str = (_siColor si,translate indent 0 . color (_siColor si) $ text str) enterCombineInv :: Configuration -> World -> World enterCombineInv cfig w = diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index f8eec2977..20e380f0a 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -12,6 +12,7 @@ import Dodge.Data.ComposedItem --import TreeHelp import qualified Data.IntMap.Strict as IM import Control.Lens +import Dodge.DoubleTree type PCI = (ComposedItem, [ComposedItem], [ComposedItem]) @@ -107,15 +108,6 @@ joinItemsInList f xs = snd $ h (xs,[]) Nothing -> h (ys, (y:z:zs)) Just w -> h ((w:ys),zs) -headMap :: (a -> a) -> (a -> a) -> [a] -> [a] -headMap f g (x:xs) = f x : map g xs -headMap _ _ [] = [] - -lastMap :: (a -> a) -> (a -> a) -> [a] -> [a] -lastMap _ _ [] = [] -lastMap f _ (x:[]) = [f x] -lastMap f g (x:xs) = g x : lastMap f g xs - indentDoubleTreeWith :: (a -> a) -> (a -> a) -> (a -> a) -> DoubleTree a -> DoubleTree a indentDoubleTreeWith f g h (DT x l r) = DT x (headMap (iDTL f g h) (iDTboth f g h) l) @@ -151,10 +143,10 @@ invTree :: IM.IntMap Item -> [String] invTree = concatMap (prettyDT (\(itm,_,_,_) -> show (_itType itm))) . joinItemsInList joinItems . IM.elems . fmap (singleDT . baseCI) -indentInv :: IM.IntMap Item -> IM.IntMap String -indentInv = IM.fromList . zip [0..] . - reverse . concatMap (flattenDT .indentDoubleTreeWith (' ':) ('|':) ('+':) . fmap (const "")) . - joinItemsInList joinItems . IM.elems . fmap (singleDT . baseCI) +--indentInv :: IM.IntMap Item -> IM.IntMap String +--indentInv = IM.fromList . zip [0..] . +-- reverse . concatMap (flattenDT .indentDoubleTreeWith (' ':) ('|':) ('+':) . fmap (const "")) . +-- joinItemsInList joinItems . IM.elems . fmap (singleDT . baseCI) --invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType PCI''] invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType PCI''] diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index 53cdff76e..280f198f5 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -12,6 +12,7 @@ module Dodge.Render.List ( listCursorChooseBorderScale, ) where +import Dodge.Data.DoubleTree import Dodge.SelectionSections import Data.Maybe import Dodge.Base.Window @@ -75,6 +76,9 @@ getLDPWidth ldps = case _ldpWidth ldps of drawListYoff :: Int -> [Picture] -> Picture drawListYoff = drawListYgapScaleYoff 0 1 +drawTreeYgapScaleYoff :: Float -> Float -> Int -> DoubleTree [Picture] -> Picture +drawTreeYgapScaleYoff ygap s i = undefined + drawListYgapScaleYoff :: Float -> Float -> Int -> [Picture] -> Picture drawListYgapScaleYoff ygap s i = mconcat . zipWith (drawListElement ygap s 0) [i ..] @@ -96,7 +100,7 @@ selSecDrawCursor xsize ldp sss = fromMaybe mempty $ do (ldp ^. ldpScale) (ldp ^. ldpCursorSides) yint - xint + (xint + _siOffX si) (_siColor si) xsize (_siHeight si) diff --git a/src/Picture/Base.hs b/src/Picture/Base.hs index 49e4f1e92..56745cf31 100644 --- a/src/Picture/Base.hs +++ b/src/Picture/Base.hs @@ -189,6 +189,7 @@ stackText :: [String] -> Picture {-# INLINE stackText #-} stackText = mconcat . zipWith (\y s -> translate 0 y $ centerText s) [0, 100 ..] +-- character size 100 x 200, no gaps between text :: String -> Picture {-# INLINE text #-} text = drawText 0 diff --git a/tags b/tags index 2d6122a8e..a54ed5491 100644 --- a/tags +++ b/tags @@ -273,7 +273,7 @@ Booster src/Dodge/Item/Equipment/Booster.hs 1;" m Booster src/Dodge/Item/Weapon/Booster.hs 1;" m Boosting src/Dodge/Creature/Stance/Data.hs 28;" C Boosting src/Dodge/Data/Creature/Stance.hs 28;" C -BorderCursor src/Dodge/Data/SelectionList.hs 84;" C +BorderCursor src/Dodge/Data/SelectionList.hs 73;" C Boss src/Dodge/Room/Boss.hs 2;" m BossAno src/Dodge/Layout/Tree/Annotate.hs 24;" C BottomEscapeMenuOption src/Dodge/Data/Universe.hs 73;" C @@ -338,7 +338,7 @@ CAN src/Dodge/Data/Item/Combine.hs 36;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 34;" C CHARTREUSE src/Color/Data.hs 25;" C CHeal src/Dodge/Data/Item/HeldUse.hs 35;" C -CIL src/Dodge/Item/Grammar.hs 22;" t +CIL src/Dodge/Item/Grammar.hs 23;" t CIRCLE src/Dodge/Data/GenParams.hs 20;" C CONCUSBUL src/Dodge/Combine/Data.hs 206;" C CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C @@ -579,7 +579,7 @@ Cull_more_lights src/Dodge/Data/Config.hs 78;" C CurseStatus src/Dodge/Data/Item/CurseStatus.hs 11;" t CurseStatus src/Dodge/Item/Data.hs 7;" t CurseStatus src/Dodge/Data/Item/CurseStatus.hs 6;" m -CursorType src/Dodge/Data/SelectionList.hs 82;" t +CursorType src/Dodge/Data/SelectionList.hs 71;" t Cuse src/Dodge/Data/Item/HeldUse.hs 33;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C @@ -590,7 +590,12 @@ DRUM src/Dodge/Combine/Data.hs 34;" C DRUMMAG src/Dodge/Combine/Data.hs 199;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 112;" C DS src/DoubleStack.hs 3;" t -DT src/Dodge/Data/DoubleTree.hs 14;" C +DT src/Dodge/Data/DoubleTree.hs 20;" C +DTBottomNode src/Dodge/Data/DoubleTree.hs 18;" C +DTMidAboveNode src/Dodge/Data/DoubleTree.hs 16;" C +DTMidBelowNode src/Dodge/Data/DoubleTree.hs 17;" C +DTRootNode src/Dodge/Data/DoubleTree.hs 14;" C +DTTopNode src/Dodge/Data/DoubleTree.hs 15;" C DUALBEAM src/Dodge/Combine/Data.hs 171;" C DUALBEAM src/Dodge/Data/Item/Combine.hs 191;" C DUCTTAPE src/Dodge/Combine/Data.hs 31;" C @@ -729,8 +734,10 @@ DoorPart src/Dodge/Data/Wall.hs 50;" C DoorStatus src/Dodge/Data/Door.hs 23;" t DoubleRes src/Dodge/Data/Config.hs 95;" C DoubleStack src/DoubleStack.hs 1;" m -DoubleTree src/Dodge/Data/DoubleTree.hs 14;" t +DoubleTree src/Dodge/Data/DoubleTree.hs 20;" t DoubleTree src/Dodge/Data/DoubleTree.hs 5;" m +DoubleTree src/Dodge/DoubleTree.hs 1;" m +DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 13;" t DownscaleSize src/Dodge/DownscaleSize.hs 1;" m DrWdId src/Dodge/Data/WorldEffect.hs 65;" C DrWdMakeDoorDebris src/Dodge/Data/WorldEffect.hs 66;" C @@ -932,7 +939,7 @@ FixedCoordLayer src/Picture/Data.hs 28;" C FixedRate src/Dodge/Data/Item/HeldDelay.hs 14;" C FixedRate src/Dodge/Data/Item/Use/Delay.hs 12;" C FixedRate src/Dodge/Data/Item/UseDelay.hs 12;" C -FixedSelectionWidth src/Dodge/Data/SelectionList.hs 78;" C +FixedSelectionWidth src/Dodge/Data/SelectionList.hs 67;" C FlIt src/Dodge/Data/FloorItem.hs 14;" C FlItLayer src/Dodge/Picture/Layer/Data.hs 10;" C Flag src/Dodge/Debug/Flag.hs 1;" m @@ -1344,10 +1351,10 @@ LAUNCHHOME src/Dodge/Data/Item/Combine.hs 218;" C LBlink src/Dodge/Data/Item/HeldUse.hs 63;" C LBoost src/Dodge/Data/Item/HeldUse.hs 65;" C LBranches src/TreeExtra.hs 24;" C -LDT src/Dodge/Data/DoubleTree.hs 17;" C -LDTComb src/Dodge/Item/Grammar.hs 60;" t -LDTCombine src/Dodge/Item/Grammar.hs 58;" t -LDTTest src/Dodge/Item/Grammar.hs 57;" t +LDT src/Dodge/Data/DoubleTree.hs 23;" C +LDTComb src/Dodge/Item/Grammar.hs 61;" t +LDTCombine src/Dodge/Item/Grammar.hs 59;" t +LDTTest src/Dodge/Item/Grammar.hs 58;" t LDoNothing src/Dodge/Data/Item/HeldUse.hs 58;" C LED src/Dodge/Combine/Data.hs 51;" C LED src/Dodge/Data/Item/Combine.hs 57;" C @@ -1376,7 +1383,7 @@ Label src/Dodge/Render/Label.hs 1;" m LabelAction src/Dodge/Data/ActionPlan.hs 79;" C LabelCluster src/Dodge/Data/RoomCluster.hs 14;" C LabelCluster src/Dodge/RoomCluster/Data.hs 12;" C -LabelDoubleTree src/Dodge/Data/DoubleTree.hs 17;" t +LabelDoubleTree src/Dodge/Data/DoubleTree.hs 23;" t LabelLayer src/Dodge/Picture/Layer/Data.hs 11;" C Laboratory src/Dodge/Data/Scenario.hs 61;" C Lamp src/Dodge/Creature/Lamp.hs 1;" m @@ -1447,7 +1454,7 @@ Link src/Dodge/Room/Link.hs 6;" m LinkDecoration src/Dodge/Debug/LinkDecoration.hs 1;" m List src/Dodge/Combine/List.hs 1;" m List src/Dodge/Render/List.hs 1;" m -ListDisplayParams src/Dodge/Data/SelectionList.hs 19;" t +ListDisplayParams src/Dodge/Data/SelectionList.hs 18;" t ListDisplayParams src/Dodge/ListDisplayParams.hs 1;" m ListHelp src/ListHelp.hs 1;" m Listed src/Dodge/Room/Listed.hs 1;" m @@ -1691,7 +1698,7 @@ NoConsumption src/Dodge/Data/Item/Consumption.hs 33;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 24;" C NoCrWdImp src/Dodge/Data/CreatureEffect.hs 14;" C NoCreatureEffect src/Dodge/Data/CreatureEffect.hs 11;" C -NoCursor src/Dodge/Data/SelectionList.hs 83;" C +NoCursor src/Dodge/Data/SelectionList.hs 72;" C NoDamageEffect src/Dodge/Data/Damage.hs 29;" C NoDamageEffect src/Dodge/Data/DamageType.hs 35;" C NoDebugInfo src/Dodge/Data/Universe.hs 54;" C @@ -1849,9 +1856,9 @@ P2Ac src/Dodge/Data/CreatureEffect.hs 53;" t P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C -PCI src/Dodge/Item/Grammar.hs 16;" t -PCI' src/Dodge/Item/Grammar.hs 18;" t -PCI'' src/Dodge/Item/Grammar.hs 20;" t +PCI src/Dodge/Item/Grammar.hs 17;" t +PCI' src/Dodge/Item/Grammar.hs 19;" t +PCI'' src/Dodge/Item/Grammar.hs 21;" t PENBUL src/Dodge/Combine/Data.hs 204;" C PENMODULE src/Dodge/Combine/Data.hs 70;" C PIERCING src/Dodge/Data/Damage/Type.hs 12;" C @@ -2252,7 +2259,7 @@ SPRING src/Dodge/Data/Item/Combine.hs 33;" C SPic src/ShapePicture/Data.hs 4;" t SPic src/Dodge/Item/Draw/SPic.hs 1;" m SQUARE src/Dodge/Data/GenParams.hs 20;" C -SSSExtra src/Dodge/Data/SelectionList.hs 45;" t +SSSExtra src/Dodge/Data/SelectionList.hs 44;" t ST src/Dodge/Tree/Compose/Data.hs 12;" C STATICBUL src/Dodge/Combine/Data.hs 205;" C STATICLAS src/Dodge/Combine/Data.hs 215;" C @@ -2285,26 +2292,25 @@ ScrollAttachParams src/Dodge/Data/Item/Use.hs 78;" C ScrollAttachType src/Dodge/Data/Item/Combine.hs 105;" t ScrollValue src/Dodge/ScrollValue.hs 1;" m SecretCabal src/Dodge/Data/Scenario.hs 44;" C -SectionCursor src/Dodge/Data/SelectionList.hs 50;" t +SectionCursor src/Dodge/Data/SelectionList.hs 49;" 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 28;" C SelItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" C SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" C Select_creature src/Dodge/Data/Config.hs 92;" C -SelectionInfo src/Dodge/Data/SelectionList.hs 95;" C +SelectionInfo src/Dodge/Data/SelectionList.hs 84;" C SelectionIntMap src/SelectionIntMap.hs 1;" m -SelectionItem src/Dodge/Data/SelectionList.hs 86;" t -SelectionList src/Dodge/Data/SelectionList.hs 27;" t +SelectionItem src/Dodge/Data/SelectionList.hs 75;" t +SelectionList src/Dodge/Data/SelectionList.hs 26;" t SelectionList src/Dodge/Data/SelectionList.hs 6;" m SelectionList src/Dodge/Default/SelectionList.hs 1;" m SelectionList src/Dodge/Inventory/SelectionList.hs 1;" m SelectionList src/Dodge/SelectionList.hs 1;" m -SelectionSection src/Dodge/Data/SelectionList.hs 56;" t -SelectionSections src/Dodge/Data/SelectionList.hs 37;" t +SelectionSection src/Dodge/Data/SelectionList.hs 55;" t +SelectionSections src/Dodge/Data/SelectionList.hs 36;" t SelectionSections src/Dodge/SelectionSections.hs 1;" m -SelectionTreeSection src/Dodge/Data/SelectionList.hs 66;" C -SelectionWidth src/Dodge/Data/SelectionList.hs 77;" t +SelectionWidth src/Dodge/Data/SelectionList.hs 66;" t SelfTree src/Dodge/Tree/Compose/Data.hs 12;" t Sensor src/Dodge/Data/Machine/Sensor.hs 16;" t Sensor src/Dodge/Data/Sensor.hs 12;" t @@ -2768,7 +2774,7 @@ UseItem src/Dodge/Data/ActionPlan.hs 37;" C UseItem src/Dodge/Creature/Action/UseItem.hs 1;" m UseItem src/Dodge/Creature/Impulse/UseItem.hs 1;" m UseLabel src/Dodge/Layout/Tree/Annotate.hs 27;" C -UseMaxSelectionItemWidth src/Dodge/Data/SelectionList.hs 80;" C +UseMaxSelectionItemWidth src/Dodge/Data/SelectionList.hs 69;" C UseMvTargetPos src/Dodge/Data/ActionPlan.hs 163;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C @@ -2786,7 +2792,7 @@ VOLLEYGUN src/Dodge/Data/Item/Combine.hs 170;" C VariableRate src/Dodge/Data/Item/HeldDelay.hs 18;" C VariableRate src/Dodge/Data/Item/Use/Delay.hs 16;" C VariableRate src/Dodge/Data/Item/UseDelay.hs 16;" C -VariableSelectionWidth src/Dodge/Data/SelectionList.hs 79;" C +VariableSelectionWidth src/Dodge/Data/SelectionList.hs 68;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m Vert src/PolyPic.hs 11;" t @@ -3311,9 +3317,9 @@ _drSpeed src/Dodge/Data/Door.hs 45;" f _drStatus src/Dodge/Data/Door.hs 37;" f _drTrigger src/Dodge/Data/Door.hs 38;" f _drWallIDs src/Dodge/Data/Door.hs 36;" f -_dtLeft src/Dodge/Data/DoubleTree.hs 14;" f -_dtRight src/Dodge/Data/DoubleTree.hs 14;" f -_dtValue src/Dodge/Data/DoubleTree.hs 14;" f +_dtLeft src/Dodge/Data/DoubleTree.hs 20;" f +_dtRight src/Dodge/Data/DoubleTree.hs 20;" f +_dtValue src/Dodge/Data/DoubleTree.hs 20;" f _ebColor src/Dodge/Data/EnergyBall.hs 17;" f _ebEff src/Dodge/Data/EnergyBall.hs 21;" f _ebPos src/Dodge/Data/EnergyBall.hs 18;" f @@ -3559,14 +3565,14 @@ _lasDamage src/Dodge/Data/Item/Params.hs 41;" f _laserTypeDamage src/Dodge/Data/Laser.hs 15;" f _lasers src/Dodge/Data/LWorld.hs 118;" f _lasersToDraw src/Dodge/Data/LWorld.hs 119;" f -_ldpCursorSides src/Dodge/Data/SelectionList.hs 23;" f -_ldpPos src/Dodge/Data/SelectionList.hs 20;" f -_ldpScale src/Dodge/Data/SelectionList.hs 21;" f -_ldpVerticalGap src/Dodge/Data/SelectionList.hs 22;" f -_ldpWidth src/Dodge/Data/SelectionList.hs 24;" f -_ldtLeft src/Dodge/Data/DoubleTree.hs 17;" f -_ldtRight src/Dodge/Data/DoubleTree.hs 18;" f -_ldtValue src/Dodge/Data/DoubleTree.hs 17;" f +_ldpCursorSides src/Dodge/Data/SelectionList.hs 22;" f +_ldpPos src/Dodge/Data/SelectionList.hs 19;" f +_ldpScale src/Dodge/Data/SelectionList.hs 20;" f +_ldpVerticalGap src/Dodge/Data/SelectionList.hs 21;" f +_ldpWidth src/Dodge/Data/SelectionList.hs 23;" f +_ldtLeft src/Dodge/Data/DoubleTree.hs 23;" f +_ldtRight src/Dodge/Data/DoubleTree.hs 24;" f +_ldtValue src/Dodge/Data/DoubleTree.hs 23;" f _leadTargetBy src/Dodge/Data/ActionPlan.hs 150;" f _leftConsumption src/Dodge/Data/Item/Use.hs 44;" f _leftDelay src/Dodge/Data/Item/Use.hs 41;" f @@ -3970,9 +3976,9 @@ _scrollSmoothing src/Dodge/Data/World.hs 62;" f _scrollSmoothing src/Dodge/Data/World.hs 68;" f _scrollTestFloat src/Dodge/Data/Input.hs 31;" f _scrollTestInt src/Dodge/Data/Input.hs 32;" f -_scurColor src/Dodge/Data/SelectionList.hs 53;" f -_scurPos src/Dodge/Data/SelectionList.hs 51;" f -_scurSize src/Dodge/Data/SelectionList.hs 52;" f +_scurColor src/Dodge/Data/SelectionList.hs 52;" f +_scurPos src/Dodge/Data/SelectionList.hs 50;" f +_scurSize src/Dodge/Data/SelectionList.hs 51;" f _seenLocations src/Dodge/Data/LWorld.hs 142;" f _seenWalls src/Dodge/Data/CWorld.hs 29;" f _selLocation src/Dodge/Data/LWorld.hs 143;" f @@ -4005,17 +4011,17 @@ _shellSpinDrag src/Dodge/Data/Item/Params.hs 25;" f _shellThrustDelay src/Dodge/Data/Item/Params.hs 27;" f _shockwaves src/Dodge/Data/LWorld.hs 117;" f _shrinkGunStatus src/Dodge/Data/Item/Params.hs 21;" f -_siColor src/Dodge/Data/SelectionList.hs 91;" f -_siColor src/Dodge/Data/SelectionList.hs 99;" f -_siHeight src/Dodge/Data/SelectionList.hs 89;" f -_siHeight src/Dodge/Data/SelectionList.hs 97;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 90;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 98;" f -_siOffX src/Dodge/Data/SelectionList.hs 92;" f -_siOffX src/Dodge/Data/SelectionList.hs 100;" f -_siPayload src/Dodge/Data/SelectionList.hs 93;" f -_siPictures src/Dodge/Data/SelectionList.hs 88;" f -_siPictures src/Dodge/Data/SelectionList.hs 96;" f +_siColor src/Dodge/Data/SelectionList.hs 80;" f +_siColor src/Dodge/Data/SelectionList.hs 88;" f +_siHeight src/Dodge/Data/SelectionList.hs 78;" f +_siHeight src/Dodge/Data/SelectionList.hs 86;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 79;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 87;" f +_siOffX src/Dodge/Data/SelectionList.hs 81;" f +_siOffX src/Dodge/Data/SelectionList.hs 89;" f +_siPayload src/Dodge/Data/SelectionList.hs 82;" f +_siPictures src/Dodge/Data/SelectionList.hs 77;" f +_siPictures src/Dodge/Data/SelectionList.hs 85;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f @@ -4028,11 +4034,11 @@ _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 28;" f -_slRegex src/Dodge/Data/SelectionList.hs 30;" f -_slRegexInput src/Dodge/Data/SelectionList.hs 31;" f -_slRegexList src/Dodge/Data/SelectionList.hs 32;" f -_slSelPos src/Dodge/Data/SelectionList.hs 29;" f +_slItems src/Dodge/Data/SelectionList.hs 27;" f +_slRegex src/Dodge/Data/SelectionList.hs 29;" f +_slRegexInput src/Dodge/Data/SelectionList.hs 30;" f +_slRegexList src/Dodge/Data/SelectionList.hs 31;" f +_slSelPos src/Dodge/Data/SelectionList.hs 28;" f _smoothScrollAmount src/Dodge/Data/Input.hs 25;" f _soundAngDist src/Sound/Data.hs 53;" f _soundChannel src/Sound/Data.hs 52;" f @@ -4050,29 +4056,22 @@ _spScreenOff src/Dodge/Data/ScreenPos.hs 10;" f _sparks src/Dodge/Data/LWorld.hs 111;" f _spawnEBT src/Dodge/Data/Bullet.hs 43;" f _sprayNozzles src/Dodge/Data/Item/Params.hs 47;" f -_ssCursor src/Dodge/Data/SelectionList.hs 58;" f -_ssCursor src/Dodge/Data/SelectionList.hs 68;" f -_ssDescriptor src/Dodge/Data/SelectionList.hs 63;" f -_ssDescriptor src/Dodge/Data/SelectionList.hs 73;" f -_ssIndent src/Dodge/Data/SelectionList.hs 62;" f -_ssIndent src/Dodge/Data/SelectionList.hs 72;" f -_ssItems src/Dodge/Data/SelectionList.hs 57;" f -_ssMinSize src/Dodge/Data/SelectionList.hs 59;" f -_ssMinSize src/Dodge/Data/SelectionList.hs 69;" f -_ssOffset src/Dodge/Data/SelectionList.hs 60;" f -_ssOffset src/Dodge/Data/SelectionList.hs 70;" f -_ssShownItems src/Dodge/Data/SelectionList.hs 61;" f -_ssShownItems src/Dodge/Data/SelectionList.hs 71;" f -_sssExtra src/Dodge/Data/SelectionList.hs 39;" f -_sssFilters src/Dodge/Data/SelectionList.hs 47;" f -_sssSections src/Dodge/Data/SelectionList.hs 38;" f -_sssSelPos src/Dodge/Data/SelectionList.hs 46;" f +_ssCursor src/Dodge/Data/SelectionList.hs 57;" f +_ssDescriptor src/Dodge/Data/SelectionList.hs 62;" f +_ssIndent src/Dodge/Data/SelectionList.hs 61;" f +_ssItems src/Dodge/Data/SelectionList.hs 56;" f +_ssMinSize src/Dodge/Data/SelectionList.hs 58;" f +_ssOffset src/Dodge/Data/SelectionList.hs 59;" f +_ssShownItems src/Dodge/Data/SelectionList.hs 60;" f +_sssExtra src/Dodge/Data/SelectionList.hs 38;" f +_sssFilters src/Dodge/Data/SelectionList.hs 46;" f +_sssSections src/Dodge/Data/SelectionList.hs 37;" f +_sssSelPos src/Dodge/Data/SelectionList.hs 45;" f _strength src/Dodge/Data/Creature/Misc.hs 21;" f _strideAmount src/Dodge/Creature/Stance/Data.hs 22;" f _strideAmount src/Dodge/Data/Creature/Stance.hs 22;" f _strideLength src/Dodge/Creature/Stance/Data.hs 14;" f _strideLength src/Dodge/Data/Creature/Stance.hs 16;" f -_stsItems src/Dodge/Data/SelectionList.hs 67;" f _subInvMSel src/Dodge/Data/HUD.hs 25;" f _subInventory src/Dodge/Data/HUD.hs 18;" f _subParams src/Dodge/Data/Item/Params.hs 43;" f @@ -4408,7 +4407,7 @@ amr src/Dodge/Item/Weapon/BulletGun/Rod.hs 56;" f anItemFindPulse src/Dodge/Item/Weapon/UseEffect.hs 25;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 75;" f -andOrRegex src/Dodge/DisplayInventory.hs 79;" f +andOrRegex src/Dodge/DisplayInventory.hs 80;" f angleBetween src/Geometry.hs 145;" f angleVV src/Geometry/Vector.hs 57;" f angleVV3 src/Geometry/Vector3D.hs 122;" f @@ -4523,13 +4522,13 @@ baseAMRShape src/Dodge/Item/Draw/SPic.hs 445;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseBlockPane src/Dodge/Placements/Wall.hs 63;" f baseBlockPane src/Dodge/Room/Placement.hs 93;" f -baseCI src/Dodge/Item/Grammar.hs 50;" f +baseCI src/Dodge/Item/Grammar.hs 51;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 251;" f -baseComposedItem src/Dodge/Item/Grammar.hs 30;" f -baseComposedItem' src/Dodge/Item/Grammar.hs 38;" f +baseComposedItem src/Dodge/Item/Grammar.hs 31;" f +baseComposedItem' src/Dodge/Item/Grammar.hs 39;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f -basePCI src/Dodge/Item/Grammar.hs 46;" f +basePCI src/Dodge/Item/Grammar.hs 47;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 254;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 442;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 413;" f @@ -4695,7 +4694,7 @@ checkTermDist src/Dodge/Update.hs 281;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f -chooseCursorBorders src/Dodge/Render/List.hs 126;" f +chooseCursorBorders src/Dodge/Render/List.hs 130;" 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 @@ -4786,7 +4785,7 @@ combineItemListYouX src/Dodge/Combine.hs 70;" f combineList src/Dodge/Combine.hs 78;" f combineList' src/Dodge/Combine.hs 83;" f combineListInfo src/Dodge/Combine.hs 96;" f -combineMaybe src/Dodge/Item/Grammar.hs 54;" f +combineMaybe src/Dodge/Item/Grammar.hs 55;" f combineModuleMaps src/Dodge/Combine.hs 107;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 344;" f @@ -4945,7 +4944,7 @@ cylinderIndices src/Shader/Poke.hs 374;" f cylinderOnSeg src/Geometry.hs 125;" f cylinderPoly src/Shape.hs 85;" f cylinderRoundIndices src/Shader/Poke.hs 381;" f -dShadCol src/Dodge/Render/List.hs 181;" f +dShadCol src/Dodge/Render/List.hs 185;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damToExpBarrel src/Dodge/Barreloid.hs 57;" f damageBlockWith src/Dodge/WorldEvent/DamageBlock.hs 16;" f @@ -5157,7 +5156,8 @@ displayConfig src/Dodge/Menu.hs 196;" f displayControls src/Dodge/Menu.hs 206;" f displayEnergyBallType src/Dodge/Module/Info.hs 19;" f displayFrameTicks src/Dodge/Render/Picture.hs 27;" f -displayFreeSlots src/Dodge/DisplayInventory.hs 159;" f +displayFreeSlots src/Dodge/DisplayInventory.hs 160;" f +displaySelectionSection src/Dodge/DisplayInventory.hs 252;" f displayTerminal src/Dodge/Render/HUD.hs 210;" f displayTerminalLineString src/Dodge/Update.hs 325;" f dist src/Geometry/Vector.hs 179;" f @@ -5265,6 +5265,7 @@ doubleLampCover src/Dodge/LightSources/Lamp.hs 89;" f doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f doublePair src/Geometry.hs 149;" f doublePairSet src/Geometry.hs 153;" f +doubleTreeToIndentList src/Dodge/DoubleTree.hs 5;" f doubleV2 src/Geometry.hs 156;" f downSize src/Dodge/DownscaleSize.hs 3;" f drawAllShadows src/Dodge/Shadows.hs 5;" f @@ -5291,7 +5292,7 @@ drawCreature src/Dodge/Render/ShapePicture.hs 77;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 163;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f -drawCursorAt src/Dodge/Render/List.hs 55;" f +drawCursorAt src/Dodge/Render/List.hs 56;" f drawDDATest src/Dodge/Debug/Picture.hs 254;" f drawDoorPaths src/Dodge/Debug/Picture.hs 215;" f drawDoubleLampCover src/Dodge/LightSources/Lamp.hs 139;" f @@ -5318,10 +5319,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 175;" f -drawListElement src/Dodge/Render/List.hs 155;" f -drawListYgapScaleYoff src/Dodge/Render/List.hs 78;" f -drawListYoff src/Dodge/Render/List.hs 75;" f +drawList src/Dodge/Render/List.hs 179;" f +drawListElement src/Dodge/Render/List.hs 159;" f +drawListYgapScaleYoff src/Dodge/Render/List.hs 82;" f +drawListYoff src/Dodge/Render/List.hs 76;" f drawMachine src/Dodge/Machine/Draw.hs 12;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 47;" f @@ -5342,8 +5343,8 @@ drawProp' src/Dodge/Prop/Draw.hs 12;" f drawRBOptions src/Dodge/Render/HUD.hs 123;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 27;" f -drawSelectionCursor src/Dodge/Render/List.hs 40;" f -drawSelectionList src/Dodge/Render/List.hs 28;" f +drawSelectionCursor src/Dodge/Render/List.hs 41;" f +drawSelectionList src/Dodge/Render/List.hs 29;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 10;" f drawSensor src/Dodge/Machine/Draw.hs 19;" f drawShader src/Shader.hs 27;" f @@ -5363,6 +5364,7 @@ drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawText src/Picture/Base.hs 219;" f drawTitle src/Dodge/Render/MenuScreen.hs 48;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f +drawTreeYgapScaleYoff src/Dodge/Render/List.hs 79;" f drawTurret src/Dodge/Machine/Draw.hs 58;" f drawTurret src/Dodge/Placements/Turret.hs 82;" f drawVerticalLampCover src/Dodge/LightSources/Lamp.hs 154;" f @@ -5408,7 +5410,7 @@ encircleCloseP src/Dodge/Creature/Boid.hs 35;" f encircleDistP src/Dodge/Creature/Boid.hs 21;" f encircleP src/Dodge/Creature/Boid.hs 27;" f energyBallCraft src/Dodge/Item/Craftable.hs 18;" f -enterCombineInv src/Dodge/DisplayInventory.hs 275;" f +enterCombineInv src/Dodge/DisplayInventory.hs 262;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f equipAimSpeed src/Dodge/Creature/Action/Movement.hs 109;" f @@ -5509,7 +5511,7 @@ flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 489;" f flatV2 src/Picture/Data.hs 65;" f flatV3 src/Picture/Data.hs 68;" f flatV4 src/Picture/Data.hs 71;" f -flattenDT src/Dodge/Item/Grammar.hs 139;" f +flattenDT src/Dodge/Item/Grammar.hs 131;" f flattenIMIMIM src/Dodge/Base/Zone.hs 246;" f fleeFrom src/Dodge/CreatureEffect.hs 119;" f fleeFromTarget src/Dodge/CreatureEffect.hs 65;" f @@ -5608,7 +5610,7 @@ getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getItem src/Dodge/Item/Location.hs 12;" f getIthPos src/SelectionIntMap.hs 55;" f getIthYOffset src/SelectionIntMap.hs 58;" f -getLDPWidth src/Dodge/Render/List.hs 70;" f +getLDPWidth src/Dodge/Render/List.hs 71;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f @@ -5697,7 +5699,7 @@ hatCombinations src/Dodge/Combine/Combinations.hs 33;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 118;" f headLampShape src/Dodge/Item/Draw/SPic.hs 495;" f -headMap src/Dodge/Item/Grammar.hs 110;" f +headMap src/Dodge/DoubleTree.hs 18;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f @@ -5735,9 +5737,9 @@ hvBulDams src/Dodge/Particle/Damage.hs 13;" f hvBulHitCr src/Dodge/Particle/Bullet/HitEffect.hs 17;" f hvBulHitWall src/Dodge/Particle/Bullet/HitEffect.hs 54;" f hvBulletAmmo src/Dodge/Item/Weapon/Bullet.hs 31;" f -iDTL src/Dodge/Item/Grammar.hs 124;" f -iDTR src/Dodge/Item/Grammar.hs 129;" f -iDTboth src/Dodge/Item/Grammar.hs 134;" f +iDTL src/Dodge/Item/Grammar.hs 116;" f +iDTR src/Dodge/Item/Grammar.hs 121;" f +iDTboth src/Dodge/Item/Grammar.hs 126;" f iShape src/Dodge/Placement/Instance/LightSource.hs 74;" f iShape src/Dodge/Placements/LightSource.hs 32;" f icosahedronPoints src/Polyhedra/Geodesic.hs 11;" f @@ -5757,8 +5759,8 @@ incBallAt src/Dodge/EnergyBall.hs 54;" f incendiaryModule src/Dodge/Item/Craftable.hs 21;" f incidenceToFunction src/Dodge/Graph.hs 26;" f indefiniteExceptions src/StringHelp.hs 29;" f -indentDoubleTreeWith src/Dodge/Item/Grammar.hs 119;" f -indentInv src/Dodge/Item/Grammar.hs 154;" f +indentDoubleTreeWith src/Dodge/Item/Grammar.hs 111;" f +indentInv src/Dodge/Item/Grammar.hs 146;" f initCrItemLocation src/Dodge/Item/Location/Initialize.hs 39;" f initCrItemLocations src/Dodge/Item/Location/Initialize.hs 34;" f initCrsItemLocations src/Dodge/Item/Location/Initialize.hs 14;" f @@ -5825,16 +5827,16 @@ 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 -invDimColor src/Dodge/DisplayInventory.hs 140;" f +invDimColor src/Dodge/DisplayInventory.hs 141;" f invDimColor src/Dodge/Inventory/Color.hs 4;" f invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f invHead src/Dodge/Render/HUD.hs 275;" f -invLDT src/Dodge/Item/Grammar.hs 160;" f +invLDT src/Dodge/Item/Grammar.hs 152;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 16;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 232;" f invSize src/Dodge/Inventory/CheckSlots.hs 40;" f -invTree src/Dodge/Item/Grammar.hs 150;" f +invTree src/Dodge/Item/Grammar.hs 142;" f inventoryX src/Dodge/Creature.hs 115;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f @@ -5912,8 +5914,8 @@ jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jShape src/Dodge/Placements/LightSource.hs 43;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f jetPack src/Dodge/Item/Equipment.hs 92;" f -joinItems src/Dodge/Item/Grammar.hs 88;" f -joinItemsInList src/Dodge/Item/Grammar.hs 101;" f +joinItems src/Dodge/Item/Grammar.hs 89;" f +joinItemsInList src/Dodge/Item/Grammar.hs 102;" f jps0' src/Dodge/LevelGen/Data.hs 60;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/Data.hs 63;" f @@ -5963,7 +5965,7 @@ lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f lasTurret src/Dodge/Placements/Turret.hs 29;" f lasWide src/Dodge/Item/Held/BatteryGuns.hs 97;" f lasWideRate src/Dodge/HeldUse.hs 353;" f -lastMap src/Dodge/Item/Grammar.hs 114;" f +lastMap src/Dodge/DoubleTree.hs 22;" f latchkey src/Dodge/Item/Held/Utility.hs 23;" f latchkey src/Dodge/Item/PassKey.hs 14;" f launcher src/Dodge/Item/Held/Launcher.hs 10;" f @@ -5976,10 +5978,10 @@ layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 110;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 63;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 64;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 72;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 77;" f +leftRightCombine src/Dodge/Item/Grammar.hs 78;" f legsSPic src/Dodge/Item/Draw/SPic.hs 529;" f liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f liShape src/Dodge/Placements/LightSource.hs 55;" f @@ -6009,9 +6011,9 @@ 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 105;" f +listCursorChooseBorderScale src/Dodge/Render/List.hs 109;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f -listSelectionItems src/Dodge/DisplayInventory.hs 256;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 255;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 120;" f @@ -6116,7 +6118,7 @@ makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 31;" f makeRect src/Grid.hs 82;" f -makeSelectionListPictures src/Dodge/Render/List.hs 49;" f +makeSelectionListPictures src/Dodge/Render/List.hs 50;" f makeShaderEBO src/Shader/Compile.hs 59;" f makeShaderProgram src/Shader/Compile.hs 287;" f makeShaderUsingVAO src/Shader/Compile.hs 155;" f @@ -6393,7 +6395,7 @@ optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 39;" f optionValueOffset src/Dodge/Menu/Option.hs 106;" f optionsOptions src/Dodge/Menu.hs 108;" f optionsToSelections src/Dodge/Menu/Option.hs 59;" f -orRegex src/Dodge/DisplayInventory.hs 82;" f +orRegex src/Dodge/DisplayInventory.hs 83;" f orange src/Color.hs 25;" f orderAround3 src/Geometry/Vector3D.hs 105;" f orderAroundFirst src/Geometry/Polygon.hs 74;" f @@ -6423,7 +6425,6 @@ overlapCircWalls src/Dodge/Base/Collide.hs 137;" f overlapCircWallsClosest src/Dodge/Base/Collide.hs 168;" f overlapSegCrs src/Dodge/Base/Collide.hs 58;" f overlapSegWalls src/Dodge/Base/Collide.hs 119;" f -overlapSelectionItems src/Dodge/DisplayInventory.hs 261;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 172;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 33;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f @@ -6517,7 +6518,7 @@ placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 78;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 59;" f placeString src/Dodge/Render/MenuScreen.hs 54;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 154;" f -plainRegex src/Dodge/DisplayInventory.hs 156;" f +plainRegex src/Dodge/DisplayInventory.hs 157;" f plainShellCollisionCheck src/Dodge/Projectile/Update.hs 45;" f plateCraft src/Dodge/Item/Craftable.hs 47;" f playIfFree src/Sound.hs 136;" f @@ -6631,8 +6632,8 @@ prependTwo src/Geometry.hs 165;" f pressedMBEffects src/Dodge/Update/UsingInput.hs 27;" f pressedMBEffectsNoInventory src/Dodge/Update/UsingInput.hs 40;" f pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 206;" f -prettyDT src/Dodge/Item/Grammar.hs 142;" f -prettyLDT src/Dodge/Item/Grammar.hs 146;" f +prettyDT src/Dodge/Item/Grammar.hs 134;" f +prettyLDT src/Dodge/Item/Grammar.hs 138;" f primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f printColumnTitles src/Dodge/Tree/Shift.hs 142;" f printColumns src/Dodge/Tree/Shift.hs 132;" f @@ -6804,7 +6805,7 @@ reflectInParam src/Geometry.hs 233;" f 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 69;" f +regexCombs src/Dodge/DisplayInventory.hs 70;" f regexFocus src/Dodge/InputFocus.hs 46;" f regexIn src/Regex.hs 4;" f regexList src/Regex.hs 7;" f @@ -6831,7 +6832,7 @@ renderInfoListAt src/Dodge/Render/InfoBox.hs 15;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 24;" f renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f -renderListAt src/Dodge/Render/List.hs 160;" f +renderListAt src/Dodge/Render/List.hs 164;" f renderShadows src/Render.hs 117;" f repeatOnFrames src/Dodge/Item/Weapon/TriggerType.hs 650;" f repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 94;" f @@ -6877,7 +6878,7 @@ rhombus src/Polyhedra.hs 71;" f rifle src/Dodge/Item/Held/Cane.hs 61;" f rifle src/Dodge/Item/Weapon/BulletGun/Cane.hs 77;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 70;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 71;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -7006,7 +7007,7 @@ 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 339;" f -selSecDrawCursor src/Dodge/Render/List.hs 87;" f +selSecDrawCursor src/Dodge/Render/List.hs 91;" f selSecSelCol src/Dodge/Render/HUD.hs 356;" f selSecSelSize src/Dodge/SelectionSections.hs 124;" f selSecYint src/Dodge/SelectionSections.hs 127;" f @@ -7204,8 +7205,8 @@ singleBarrel src/Dodge/Item/Held/SingleBarrel.hs 6;" f singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f singleBlock src/Dodge/Placements/Wall.hs 11;" f singleBlock src/Dodge/Room/Placement.hs 23;" f -singleDT src/Dodge/Item/Grammar.hs 24;" f -singleLDT src/Dodge/Item/Grammar.hs 27;" f +singleDT src/Dodge/Item/Grammar.hs 25;" f +singleLDT src/Dodge/Item/Grammar.hs 28;" f singleton src/DoubleStack.hs 11;" f singletonTrie src/SimpleTrie.hs 14;" f sizeFBOs src/Framebuffer/Update.hs 22;" f @@ -7313,8 +7314,8 @@ ssScrollUsing src/Dodge/SelectionSections.hs 28;" f ssScrollUsing' src/Dodge/SelectionSections.hs 38;" f ssSetCursor src/Dodge/SelectionSections.hs 52;" f ssfold src/FoldableHelp.hs 104;" f -stackPicturesAt src/Dodge/Render/List.hs 81;" f -stackPicturesAtOff src/Dodge/Render/List.hs 84;" f +stackPicturesAt src/Dodge/Render/List.hs 85;" f +stackPicturesAtOff src/Dodge/Render/List.hs 88;" f stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 269;" f startCr src/Dodge/Creature.hs 91;" f @@ -7484,11 +7485,11 @@ toLabel src/Dodge/UseAll.hs 16;" f toMultiset src/Multiset.hs 58;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toShadNum src/Picture/Data.hs 50;" f -toTopLeft src/Dodge/Render/List.hs 185;" f +toTopLeft src/Dodge/Render/List.hs 189;" f toV2 src/Geometry/Data.hs 36;" f toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f -toggleCombineInv src/Dodge/DisplayInventory.hs 32;" f +toggleCombineInv src/Dodge/DisplayInventory.hs 33;" f toggleCommand src/Dodge/Terminal.hs 194;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 59;" f toggleJust src/MaybeHelp.hs 41;" f @@ -7657,14 +7658,14 @@ updateCamera src/Dodge/Update/Camera.hs 32;" f updateCloseObjects src/Dodge/Inventory.hs 166;" f updateCloud src/Dodge/Update.hs 605;" f updateClouds src/Dodge/Update.hs 454;" f -updateCombinePositioning src/Dodge/DisplayInventory.hs 37;" f -updateCombineSections src/Dodge/DisplayInventory.hs 42;" f +updateCombinePositioning src/Dodge/DisplayInventory.hs 38;" f +updateCombineSections src/Dodge/DisplayInventory.hs 43;" f updateCreature src/Dodge/Creature/Update.hs 10;" f updateCreatureGroups src/Dodge/Update.hs 391;" f updateCreatureSoundPositions src/Dodge/Update.hs 371;" f updateDebugMessageOffset src/Dodge/Update.hs 91;" f updateDelayedEvents src/Dodge/Update.hs 668;" f -updateDisplaySections src/Dodge/DisplayInventory.hs 92;" f +updateDisplaySections src/Dodge/DisplayInventory.hs 93;" f updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 412;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f @@ -7687,8 +7688,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 71;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 107;" f updateInstantBullets src/Dodge/Update.hs 531;" f updateInv src/Dodge/Creature/State.hs 224;" f -updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f -updateInventorySectionItems src/Dodge/DisplayInventory.hs 144;" f +updateInventoryPositioning src/Dodge/DisplayInventory.hs 88;" f +updateInventorySectionItems src/Dodge/DisplayInventory.hs 145;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 101;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 90;" f updateLampoid src/Dodge/Lampoid.hs 13;" f @@ -7724,8 +7725,8 @@ updateRenderSplit appDodge/Main.hs 105;" f updateScopeZoom src/Dodge/Update/Camera.hs 131;" f updateScopeZoom' src/Dodge/Update/Camera.hs 136;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f -updateSection src/Dodge/DisplayInventory.hs 186;" f -updateSectionsPositioning src/Dodge/DisplayInventory.hs 165;" f +updateSection src/Dodge/DisplayInventory.hs 187;" f +updateSectionsPositioning src/Dodge/DisplayInventory.hs 166;" f updateSeenWalls src/Dodge/Update.hs 562;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f updateShockwaves src/Dodge/Update.hs 436;" f