diff --git a/ghcidOutput b/ghcidOutput index 3daa4bdb4..3c0914f78 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (594 modules, at 15:02:57) +All good (594 modules, at 14:23:55) diff --git a/src/Dodge/DoubleTree.hs b/src/Dodge/DoubleTree.hs index 6a8daa1c4..e1f127e21 100644 --- a/src/Dodge/DoubleTree.hs +++ b/src/Dodge/DoubleTree.hs @@ -195,6 +195,16 @@ locUp (LocLDT c@LeftwardLDT{} t) = Just $ LocLDT (_cldtUp c) locUp (LocLDT c@RightwardLDT{} t) = Just $ LocLDT (_cldtUp c) (LDT (_cldtParent c) (_cldtFarLeft c) (_cldtCloseLeft c ++ ((_cldtLink c,t):_cldtCloseRight c))) +locToTop :: LocationLDT b a -> LocationLDT b a +locToTop loc = maybe loc locToTop $ locUp loc +--locToTop = fix $ \x -> fromMaybe x $ locUp x + +locLeftmost :: LocationLDT b a -> LocationLDT b a +locLeftmost loc = maybe loc locLeftmost $ alaf Last foldMap Just $ locGoLeft loc + +locRightmost :: LocationLDT b a -> LocationLDT b a +locRightmost loc = maybe loc locRightmost $ alaf First foldMap Just $ locGoRight loc + -- should probably do tests for these locGoLeft :: LocationLDT b a -> [LocationLDT b a] locGoLeft (LocLDT c (LDT v l r)) = diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index fc7ddb7cc..6f70f15b2 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -48,7 +48,7 @@ itemToBreakLists :: ComposedItem -> ([(ItemStructuralFunction, ComposeLinkType)], [(ItemStructuralFunction, ComposeLinkType)]) itemToBreakLists ci = case (itm ^. itType, ci ^. cItemFunction) of - (HELD TORCH,_) -> (getAmmoLinks itm,[]) + (HELD TORCH, _) -> (getAmmoLinks itm, []) (_, WeaponPlatformSF) -> ( getAmmoLinks itm , [(WeaponTargetingSF, WeaponTargetingLink), (WeaponScopeSF, WeaponScopeLink)] @@ -103,8 +103,11 @@ laserLinkTest :: Item -> LinkTest laserLinkTest itm = LTest (llleft itm) (llright itm) llleft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate -llleft itm = _tryLeftLink - . uncurry useBreakL . itemToBreakLists $ CItem itm WeaponTargetingSF +llleft itm = + _tryLeftLink + . uncurry useBreakL + . itemToBreakLists + $ CItem itm WeaponTargetingSF llright :: Item -> PartiallyComposedItem -> Maybe LinkUpdate llright itm pci = case pci ^. _1 . itType of @@ -179,8 +182,9 @@ invRootMap = foldMap (dtToIntMapWithRoot (^?! itLocation . ilInvID) . fmap (^. _ -- location ids -- consider explicitly reseting the inventory ids (but this probably really -- should be done upstream anyway in the actually creature inventory) +-- The first Int in the maybe is the root, the second the parent invAdj :: IM.IntMap Item -> IM.IntMap (Maybe (Int, Int), [Int], [Int]) -invAdj im = IM.unions . map g $ invLDT im +invAdj = IM.unions . map g . invLDT where g = dtToLRAdj getid . ldtToDT getid (itm, _, _) = diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 06b2d0728..7ebf4415f 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -6,6 +6,10 @@ module Dodge.Render.HUD ( selNumPosCardinal, -- this shoud probably be pushed back here ) where +import Dodge.Creature.Test +import Dodge.DoubleTree +import Dodge.Data.DoubleTree +import Dodge.Data.ComposedItem import Control.Lens import Control.Monad import qualified Data.Map.Strict as M @@ -59,6 +63,7 @@ drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Configuration -> Pi drawInventory sss w cfig = drawSelectionSections sss ldp cfig <> drawSSCursor sss (w ^? hud . hudElement . diSelection . _Just) ldp curs cfig + <> drawRootCursor w sss (w ^? hud . hudElement . diSelection . _Just) ldp cfig -- <> drawSSMultiCursor sss (w ^? hud . hudElement . diSelection . _Just) -- (w ^? hud . hudElement . diSelectionExtra) -- ldp curs cfig @@ -72,8 +77,33 @@ drawInventory sss w cfig = curs = invCursorParams w iextra = fromMaybe mempty $ do inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv - let x = invAdj inv - return $ inventoryExtra sss cfig w x + return . inventoryExtra sss cfig w $ invAdj inv + +drawRootCursor :: World + -> IM.IntMap (SelectionSection ()) + -> Maybe (Int,Int) + -> ListDisplayParams + -> Configuration + -> Picture +drawRootCursor w sss msel ldp cfig = fromMaybe mempty $ do + cr <- w ^? cWorld . lWorld . creatures . ix 0 + guard $ crIsAiming cr + (i,j) <- msel + guard $ i == 0 + inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv + (x,y) <- getRootItemBounds j $ inv + return $ drawSSMultiCursor sss (Just (0,x)) (Just (y- x)) ldp + (BoundaryCursor [minBound .. maxBound]) cfig + +getRootItemBounds :: Int -> IM.IntMap Item -> Maybe (Int,Int) +getRootItemBounds i inv = do + let ia = allInvLocs inv + itm <- ia ^? ix i . _2 + let root = locToTop itm + x <- locRightmost root ^? locLDT . ldtValue . cItem . itLocation . ilInvID + y <- locLeftmost root ^? locLDT . ldtValue . cItem . itLocation . ilInvID + return (x,y) + drawDIMouseOver :: World -> Picture drawDIMouseOver w = fromMaybe mempty $ do diff --git a/src/Dodge/SelectionSections/Draw.hs b/src/Dodge/SelectionSections/Draw.hs index be29db020..34523fbe8 100644 --- a/src/Dodge/SelectionSections/Draw.hs +++ b/src/Dodge/SelectionSections/Draw.hs @@ -58,7 +58,8 @@ drawSSMultiCursor sss msel mextra ldp curs cfig = translateScreenPos cfig (ldp ^ ysize = sum . fmap _siHeight $ selitms maxoff = maximum . fmap _siOffX $ selitms minoff = minimum . fmap _siOffX $ selitms - col <- fmap (_siColor . fst) $ IM.minView selitms + let col = white +-- col <- fmap (_siColor . fst) $ IM.minView selitms return $ listCursorChooseBorderScale (ldp ^. ldpVerticalGap) diff --git a/tags b/tags index f78b242ce..88b609cdd 100644 --- a/tags +++ b/tags @@ -974,7 +974,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 125;" t +LDTComb src/Dodge/Item/Grammar.hs 128;" 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 @@ -3339,7 +3339,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 214;" f +allInvLocs src/Dodge/Item/Grammar.hs 215;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f ammoMagSPic src/Dodge/Item/Draw/SPic.hs 45;" f @@ -3591,7 +3591,7 @@ clClSpringVel src/Dodge/Update.hs 737;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 166;" f -cldtPropagateFold src/Dodge/DoubleTree.hs 220;" f +cldtPropagateFold src/Dodge/DoubleTree.hs 232;" f cleanUpPreload src/Preload.hs 11;" f cleanUpRenderPreload src/Preload/Render.hs 216;" f cleanUpSoundPreload src/Preload.hs 16;" f @@ -3607,7 +3607,7 @@ 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 171;" f +closeObjectInfo src/Dodge/Render/HUD.hs 180;" f closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 68;" f closestCreatureID src/Dodge/Debug.hs 92;" f @@ -3643,7 +3643,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 281;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 290;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f @@ -3707,8 +3707,8 @@ crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f crSpring src/Dodge/Update.hs 750;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f crUpdate src/Dodge/Creature/State.hs 62;" f -crUpdateInvidLocations src/Dodge/Inventory/Location.hs 49;" f -crUpdateItemLocations src/Dodge/Inventory/Location.hs 43;" f +crUpdateInvidLocations src/Dodge/Inventory/Location.hs 47;" f +crUpdateItemLocations src/Dodge/Inventory/Location.hs 41;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f craftInfo src/Dodge/Item/Info.hs 135;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f @@ -3955,7 +3955,7 @@ displayConfig src/Dodge/Menu.hs 196;" f displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 169;" f -displayTerminal src/Dodge/Render/HUD.hs 318;" f +displayTerminal src/Dodge/Render/HUD.hs 327;" f displayTerminalLineString src/Dodge/Update.hs 426;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f @@ -4051,7 +4051,7 @@ doubleCorridorBarrels src/Dodge/Room/Room.hs 265;" 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 72;" f +doubleTreeToIndentList src/Dodge/DoubleTree.hs 74;" f doubleV2 src/Geometry.hs 156;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawAugmentedHUD src/Dodge/Creature/State.hs 210;" f @@ -4066,7 +4066,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 127;" f +drawCombineInventory src/Dodge/Render/HUD.hs 136;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 62;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 342;" f @@ -4076,14 +4076,13 @@ drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 49;" f drawDDATest src/Dodge/Debug/Picture.hs 256;" f -drawDIMouseOver src/Dodge/Render/HUD.hs 82;" f -drawDISelections src/Dodge/Render/HUD.hs 102;" f -drawDISelections' src/Dodge/Render/HUD.hs 110;" f +drawDIMouseOver src/Dodge/Render/HUD.hs 102;" f +drawDISelections src/Dodge/Render/HUD.hs 120;" 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 141;" f +drawExamineInventory src/Dodge/Render/HUD.hs 150;" 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 @@ -4091,12 +4090,12 @@ drawFlare src/Dodge/Flare.hs 12;" f drawFooterText src/Dodge/Render/MenuScreen.hs 65;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f drawGib src/Dodge/Prop/Draw.hs 28;" f -drawHP src/Dodge/Render/HUD.hs 50;" f -drawHUD src/Dodge/Render/HUD.hs 42;" f +drawHP src/Dodge/Render/HUD.hs 49;" f +drawHUD src/Dodge/Render/HUD.hs 41;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 18;" f drawInspectWall src/Dodge/Debug/Picture.hs 209;" f drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f -drawInventory src/Dodge/Render/HUD.hs 59;" f +drawInventory src/Dodge/Render/HUD.hs 58;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLampCover src/Dodge/Prop/Draw.hs 44;" f drawLaser src/Dodge/Laser/Draw.hs 6;" f @@ -4124,9 +4123,10 @@ 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 189;" f +drawRBOptions src/Dodge/Render/HUD.hs 198;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f +drawRootCursor src/Dodge/Render/HUD.hs 78;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 30;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 41;" f drawSelectionList src/Dodge/Render/List.hs 30;" f @@ -4139,7 +4139,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 119;" f +drawSubInventory src/Dodge/Render/HUD.hs 128;" f drawSweep src/Dodge/Render/Picture.hs 101;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f @@ -4165,15 +4165,15 @@ dropByState src/Dodge/Creature/State.hs 118;" f dropExcept src/Dodge/Creature/Action.hs 172;" f dropItem src/Dodge/Creature/Action.hs 177;" f drumMag src/Dodge/Item/Ammo.hs 48;" f -dtIL src/Dodge/DoubleTree.hs 75;" f -dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f -dtToAdjRootParentEither src/Dodge/DoubleTree.hs 132;" f -dtToAdjacency src/Dodge/DoubleTree.hs 82;" f -dtToIntMapWithRoot src/Dodge/DoubleTree.hs 88;" f -dtToLRAdj src/Dodge/DoubleTree.hs 104;" f -dtToLRAdjEither src/Dodge/DoubleTree.hs 114;" f -dtToRootIntMap' src/Dodge/DoubleTree.hs 92;" f -dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f +dtIL src/Dodge/DoubleTree.hs 77;" f +dtToAdjRootParent src/Dodge/DoubleTree.hs 128;" f +dtToAdjRootParentEither src/Dodge/DoubleTree.hs 134;" f +dtToAdjacency src/Dodge/DoubleTree.hs 84;" f +dtToIntMapWithRoot src/Dodge/DoubleTree.hs 90;" f +dtToLRAdj src/Dodge/DoubleTree.hs 106;" f +dtToLRAdjEither src/Dodge/DoubleTree.hs 116;" f +dtToRootIntMap' src/Dodge/DoubleTree.hs 94;" f +dtToUpDownAdj src/Dodge/DoubleTree.hs 98;" f dummyMenuOption src/Dodge/Menu/Option.hs 81;" f ebFlicker src/Dodge/EnergyBall.hs 94;" f edgeFormatting src/Dodge/Combine/Graph.hs 118;" f @@ -4191,7 +4191,7 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f enterCombineInv src/Dodge/DisplayInventory.hs 269;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f -equipAllocString src/Dodge/Render/HUD.hs 247;" f +equipAllocString src/Dodge/Render/HUD.hs 256;" 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 @@ -4284,7 +4284,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 176;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 185;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 119;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f @@ -4362,11 +4362,11 @@ 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 91;" f -getMouseInvSel' src/Dodge/Render/HUD.hs 96;" f +getMouseInvSel src/Dodge/Render/HUD.hs 111;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f getPrettyShort src/AesonHelp.hs 10;" f +getRootItemBounds src/Dodge/Render/HUD.hs 92;" f getSensor src/Dodge/Terminal.hs 187;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f getSplitString src/Dodge/Debug/Terminal.hs 123;" f @@ -4441,7 +4441,7 @@ hat src/Dodge/Item/Equipment.hs 94;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 100;" f headLampShape src/Dodge/Item/Draw/SPic.hs 381;" f -headMap src/Dodge/DoubleTree.hs 170;" f +headMap src/Dodge/DoubleTree.hs 172;" 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 @@ -4479,7 +4479,7 @@ iShape src/Dodge/Placement/Instance/LightSource.hs 74;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f ifConfigWallRotate src/Dodge/Update/Camera.hs 171;" f -ildtPropagate src/Dodge/DoubleTree.hs 57;" f +ildtPropagate src/Dodge/DoubleTree.hs 59;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f inCloseRegex src/Dodge/InputFocus.hs 94;" f inInputFocus src/Dodge/InputFocus.hs 59;" f @@ -4548,23 +4548,23 @@ 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 182;" f +invAdj src/Dodge/Item/Grammar.hs 186;" f invCursorParams src/Dodge/ListDisplayParams.hs 38;" f invDimColor src/Dodge/DisplayInventory.hs 163;" f invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f -invHead src/Dodge/Render/HUD.hs 354;" 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 +invHead src/Dodge/Render/HUD.hs 363;" f +invLDT src/Dodge/Item/Grammar.hs 169;" f +invRootMap src/Dodge/Item/Grammar.hs 178;" f +invRootTrees src/Dodge/Item/Grammar.hs 208;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 23;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 20;" 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 195;" f -invTrees' src/Dodge/Item/Grammar.hs 199;" f -inventoryExtra src/Dodge/Render/HUD.hs 256;" f -inventoryExtraH src/Dodge/Render/HUD.hs 267;" f +invTrees src/Dodge/Item/Grammar.hs 196;" f +invTrees' src/Dodge/Item/Grammar.hs 200;" f +inventoryExtra src/Dodge/Render/HUD.hs 265;" f +inventoryExtraH src/Dodge/Render/HUD.hs 276;" f inventoryX src/Dodge/Creature.hs 115;" f inverseSelBoundaryDown src/Dodge/SelectionSections.hs 227;" f inverseSelBoundaryUp src/Dodge/SelectionSections.hs 214;" f @@ -4639,7 +4639,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 157;" f +joinItemsInList src/Dodge/Item/Grammar.hs 160;" 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 @@ -4673,7 +4673,7 @@ lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f laser src/Dodge/Item/Held/BatteryGuns.hs 40;" f laserLinkTest src/Dodge/Item/Grammar.hs 102;" f -lastMap src/Dodge/DoubleTree.hs 174;" f +lastMap src/Dodge/DoubleTree.hs 176;" f latchkey src/Dodge/Item/Held/Utility.hs 23;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f @@ -4681,21 +4681,21 @@ launcherPic src/Dodge/Item/Draw/SPic.hs 331;" f launcherX src/Dodge/Item/Held/Launcher.hs 32;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f -ldtIL src/Dodge/DoubleTree.hs 149;" f -ldtPropagate src/Dodge/DoubleTree.hs 20;" f -ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f -ldtPropagateFoldTree src/Dodge/DoubleTree.hs 45;" f -ldtPropagateIndices src/Dodge/DoubleTree.hs 64;" f -ldtToDT src/Dodge/DoubleTree.hs 15;" f -ldtToIM src/Dodge/DoubleTree.hs 143;" f -ldtToIndentList src/Dodge/DoubleTree.hs 146;" f -ldtToLoc src/Dodge/DoubleTree.hs 187;" f +ldtIL src/Dodge/DoubleTree.hs 151;" f +ldtPropagate src/Dodge/DoubleTree.hs 22;" f +ldtPropagateFold src/Dodge/DoubleTree.hs 31;" f +ldtPropagateFoldTree src/Dodge/DoubleTree.hs 47;" f +ldtPropagateIndices src/Dodge/DoubleTree.hs 66;" f +ldtToDT src/Dodge/DoubleTree.hs 17;" f +ldtToIM src/Dodge/DoubleTree.hs 145;" f +ldtToIndentList src/Dodge/DoubleTree.hs 148;" f +ldtToLoc src/Dodge/DoubleTree.hs 189;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 93;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 127;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 130;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 97;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 141;" f +leftRightCombine src/Dodge/Item/Grammar.hs 144;" 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 @@ -4725,10 +4725,10 @@ listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 261;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f llleft src/Dodge/Item/Grammar.hs 105;" f -llright src/Dodge/Item/Grammar.hs 109;" f +llright src/Dodge/Item/Grammar.hs 112;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 343;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 352;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f @@ -4739,10 +4739,13 @@ loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f loadSounds src/Dodge/SoundLogic/LoadSound.hs 16;" f loadingScreen src/Dodge/Menu/Loading.hs 7;" f loadme src/Dodge/Debug/Terminal.hs 136;" f -locGoHelp src/Dodge/DoubleTree.hs 210;" f -locGoLeft src/Dodge/DoubleTree.hs 199;" f -locGoRight src/Dodge/DoubleTree.hs 204;" f -locUp src/Dodge/DoubleTree.hs 191;" f +locGoHelp src/Dodge/DoubleTree.hs 222;" f +locGoLeft src/Dodge/DoubleTree.hs 211;" f +locGoRight src/Dodge/DoubleTree.hs 216;" f +locLeftmost src/Dodge/DoubleTree.hs 204;" f +locRightmost src/Dodge/DoubleTree.hs 207;" f +locToTop src/Dodge/DoubleTree.hs 200;" f +locUp src/Dodge/DoubleTree.hs 193;" f lockInv src/Dodge/Inventory/Lock.hs 6;" f lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 50;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 26;" f @@ -5248,8 +5251,8 @@ preloadRender src/Preload/Render.hs 30;" f premapMaybe src/FoldlHelp.hs 24;" f prependTwo src/Geometry.hs 165;" f pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 163;" f -prettyDT src/Dodge/DoubleTree.hs 179;" f -prettyLDT src/Dodge/DoubleTree.hs 183;" f +prettyDT src/Dodge/DoubleTree.hs 181;" f +prettyLDT src/Dodge/DoubleTree.hs 185;" 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 @@ -5421,7 +5424,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 134;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 137;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5541,11 +5544,11 @@ 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 414;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 437;" f +selNumPos src/Dodge/Render/HUD.hs 423;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 446;" f selSecDrawCursor src/Dodge/Render/List.hs 108;" f selSecDrawCursorAt src/Dodge/Render/List.hs 86;" f -selSecSelCol src/Dodge/Render/HUD.hs 460;" f +selSecSelCol src/Dodge/Render/HUD.hs 469;" f selSecSelSize src/Dodge/SelectionSections.hs 152;" f selSecYint src/Dodge/SelectionSections.hs 161;" f selectCreatureDebugItem src/Dodge/Debug.hs 39;" f @@ -5573,7 +5576,7 @@ setHotkey src/Dodge/Hotkey.hs 38;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f -setInvPosFromSS src/Dodge/Inventory/Location.hs 68;" f +setInvPosFromSS src/Dodge/Inventory/Location.hs 66;" f setItemCharge src/Dodge/ItEffect.hs 39;" f setLayer src/Picture/Base.hs 139;" f setLinkType src/Dodge/RoomLink.hs 60;" f @@ -5695,8 +5698,8 @@ sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f singleAmmo src/Dodge/Default/Item.hs 44;" f singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f -singleDT src/Dodge/DoubleTree.hs 9;" f -singleLDT src/Dodge/DoubleTree.hs 12;" f +singleDT src/Dodge/DoubleTree.hs 11;" f +singleLDT src/Dodge/DoubleTree.hs 14;" f singleton src/DoubleStack.hs 11;" f singletonTrie src/SimpleTrie.hs 19;" f sizeFBOs src/Framebuffer/Update.hs 22;" f @@ -5916,7 +5919,7 @@ 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 114;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 117;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 200;" f @@ -6119,7 +6122,7 @@ updateRadarSweep src/Dodge/RadarSweep.hs 25;" f updateRadarSweeps src/Dodge/Update.hs 547;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 106;" f -updateRootItemID src/Dodge/Inventory/Location.hs 36;" f +updateRootItemID src/Dodge/Inventory/Location.hs 34;" f updateScopeZoom src/Dodge/Update/Camera.hs 127;" f updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f @@ -6301,7 +6304,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 183;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 192;" 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