diff --git a/ghcidOutput b/ghcidOutput index 4f9af1d42..8d39dd275 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1,5 @@ -All good (595 modules, at 12:18:32) +/home/justin/Haskell/loop/src/Dodge/Menu/Option.hs:53:35-41: warning: [-Wunused-matches] + Defined but not used: ‘mselpos’ + | +53 | makeOptionsSelectionList maxlines mselpos u mos pmo = + | ^^^^^^^ diff --git a/src/Dodge/Data/SelectionList.hs b/src/Dodge/Data/SelectionList.hs index 22a0824b6..d3a4cc905 100644 --- a/src/Dodge/Data/SelectionList.hs +++ b/src/Dodge/Data/SelectionList.hs @@ -23,7 +23,7 @@ data CursorDisplay data SelectionList a = SelectionList { _slItems :: [SelectionItem a] - , _slSelPos :: Maybe Int +-- , _slSelPos :: Maybe Int } data SectionCursor = SectionCursor diff --git a/src/Dodge/Default/SelectionList.hs b/src/Dodge/Default/SelectionList.hs index 16eed808a..53f1aa42b 100644 --- a/src/Dodge/Default/SelectionList.hs +++ b/src/Dodge/Default/SelectionList.hs @@ -5,5 +5,4 @@ import Dodge.Data.SelectionList defaultSelectionList :: SelectionList a defaultSelectionList = SelectionList {_slItems = mempty - , _slSelPos = Nothing } diff --git a/src/Dodge/Menu/Option.hs b/src/Dodge/Menu/Option.hs index 57ab3ca57..952194fd5 100644 --- a/src/Dodge/Menu/Option.hs +++ b/src/Dodge/Menu/Option.hs @@ -53,7 +53,7 @@ makeOptionsSelectionList :: makeOptionsSelectionList maxlines mselpos u mos pmo = defaultSelectionList { _slItems = optionsToSelections maxlines u mos pmo - , _slSelPos = mselpos +-- , _slSelPos = mselpos } optionsToSelections :: diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index d4753557b..df42d48f6 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -14,6 +14,7 @@ module Dodge.Render.List ( listCursorChooseBorderScale, selSecDrawCursorAt, drawTitleBackground, -- should be renamed, made sensible + drawCursorAt, ) where import Dodge.ListDisplayParams @@ -38,11 +39,11 @@ drawSelectionList ldps cfig sl = (ldps ^. ldpScale) 0 (makeSelectionListPictures sl) - <> drawCursorAt - (sl ^. slSelPos) - (sl ^. slItems) - ldps - (BoundaryCursor [North, South]) +-- <> drawCursorAt +-- (sl ^. slSelPos) +-- (sl ^. slItems) +-- ldps +-- (BoundaryCursor [North, South]) drawTitleBackground :: Configuration -> Picture drawTitleBackground cfig = diff --git a/src/Dodge/Render/MenuScreen.hs b/src/Dodge/Render/MenuScreen.hs index 91210eb3e..077d3721f 100644 --- a/src/Dodge/Render/MenuScreen.hs +++ b/src/Dodge/Render/MenuScreen.hs @@ -3,16 +3,19 @@ module Dodge.Render.MenuScreen ( drawMenuScreen, ) where +import Dodge.ScreenPos +import Dodge.Data.CardinalPoint +import Control.Lens +import Dodge.Render.List import Dodge.Base.Window import Dodge.Data.SelectionList import Dodge.Data.Universe -import Dodge.Render.List import Picture -drawMenuScreen :: Configuration -> ScreenLayer -> Picture -drawMenuScreen cfig screen = case screen of - OptionScreen{_scTitle = titf, _scSelectionList = selpos, _scListDisplayParams = ldps} -> - drawOptions ldps cfig titf selpos +drawMenuScreen :: Configuration -> Maybe Int -> ScreenLayer -> Picture +drawMenuScreen cfig spos screen = case screen of + OptionScreen{_scTitle = titf, _scSelectionList = slist, _scListDisplayParams = ldps} -> + drawOptions ldps cfig titf spos slist InputScreen inputstr help -> drawInputMenu cfig ('>' : inputstr) help drawInputMenu :: @@ -34,13 +37,19 @@ drawOptions :: Configuration -> -- | Title String -> - -- | Select position + Maybe Int -> SelectionList a -> Picture -drawOptions ldps cfig title sl = +drawOptions ldps cfig title msel sl = darkenBackground cfig <> drawTitle cfig title <> drawSelectionList ldps cfig sl + <> translateScreenPos cfig (ldps ^. ldpPos) (drawCursorAt + msel + (sl ^. slItems) + ldps + (BoundaryCursor [North, South]) + ) darkenBackground :: Configuration -> Picture darkenBackground = color (withAlpha 0.5 black) . polygon . reverse . screenBox diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index f59de3ef2..ebaa01bd5 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -57,7 +57,7 @@ fpsText x = color col . text $ "ms/frame " ++ show x drawMenuOrHUD :: Configuration -> Universe -> Picture drawMenuOrHUD cfig u = case u ^. uvScreenLayers of [] -> drawHUD (u ^. uvConfig) (u ^. uvWorld) - (lay : _) -> drawMenuScreen cfig lay + (lay : _) -> drawMenuScreen cfig (u ^? uvWorld . input . mouseContext . mcoMenuClick) lay drawConcurrentMessage :: Universe -> Picture drawConcurrentMessage u = diff --git a/src/Dodge/Update/Input/ScreenLayer.hs b/src/Dodge/Update/Input/ScreenLayer.hs index cb2c3c1f2..22cc74287 100644 --- a/src/Dodge/Update/Input/ScreenLayer.hs +++ b/src/Dodge/Update/Input/ScreenLayer.hs @@ -41,10 +41,10 @@ optionScreenUpdate :: Universe -> Universe optionScreenUpdate u = (uvScreenLayers . ix 0 . scDisplayTime +~ 1) . refreshOptionsSelectionList - . mouseOverSelectionList +-- . mouseOverSelectionList . optionScreenDefaultEffect . mouseClickOptionsList - . menuWheelEvents +-- . menuWheelEvents . over (uvScreenLayers . _head) (setSelectionListRestriction (u ^. uvConfig)) $ u @@ -61,32 +61,32 @@ mouseClickOptionsList u = fromMaybe u $ do sl <- u ^? uvScreenLayers . ix 0 . scSelectionList Just $ case u ^. uvWorld . input . mouseButtons . at ButtonLeft of Just 0 -> fromMaybe u $ do - i <- sl ^. slSelPos + i <- u ^? uvWorld . input . mouseContext . mcoMenuClick f <- sl ^? slItems . ix i . siPayload . _1 return $ f u _ -> case u ^. uvWorld . input . mouseButtons . at ButtonRight of Just 0 -> fromMaybe u $ do - i <- sl ^. slSelPos + i <- u ^? uvWorld . input . mouseContext . mcoMenuClick f <- sl ^? slItems . ix i . siPayload . _2 return $ f u _ -> u -mouseOverSelectionList :: Universe -> Universe -mouseOverSelectionList u = fromMaybe u $ do - screen <- u ^? uvScreenLayers . ix 0 - ldps <- screen ^? scListDisplayParams - let ymax = maybe 0 length $ screen ^? scSelectionList . slItems - yi <- ldpVerticalSelection (u ^. uvConfig) ldps (u ^. uvWorld . input . mousePos) - guard $ mmoving || (_scDisplayTime screen <= 1) - let myi = do - guard (yi >= 0 && yi < ymax && isselectable yi) - return yi - return $ u & uvScreenLayers . _head . scSelectionList . slSelPos .~ myi - where - isselectable yi = - fromMaybe False $ - u ^? uvScreenLayers . _head . scSelectionList . slItems . ix yi . siIsSelectable - mmoving = u ^. uvWorld . input . mouseMoving +--mouseOverSelectionList :: Universe -> Universe +--mouseOverSelectionList u = fromMaybe u $ do +-- screen <- u ^? uvScreenLayers . ix 0 +-- ldps <- screen ^? scListDisplayParams +-- let ymax = maybe 0 length $ screen ^? scSelectionList . slItems +-- yi <- ldpVerticalSelection (u ^. uvConfig) ldps (u ^. uvWorld . input . mousePos) +-- guard $ mmoving || (_scDisplayTime screen <= 1) +-- let myi = do +-- guard (yi >= 0 && yi < ymax && isselectable yi) +-- return yi +-- return $ u & uvScreenLayers . _head . scSelectionList . slSelPos .~ myi +-- where +-- isselectable yi = +-- fromMaybe False $ +-- u ^? uvScreenLayers . _head . scSelectionList . slItems . ix yi . siIsSelectable +-- mmoving = u ^. uvWorld . input . mouseMoving ldpVerticalSelection :: Configuration -> ListDisplayParams -> Point2 -> Maybe Int ldpVerticalSelection cfig ldp (V2 _ y) @@ -101,23 +101,23 @@ ldpVerticalSelection cfig ldp (V2 _ y) yupper = floor $ (top - (y + ygap)) / yoff ylower = ceiling ((top - y) / yoff) - 1 -menuWheelEvents :: Universe -> Universe -menuWheelEvents u = foldr ($) u (replicate (abs y) (menuWheelStep (signum y))) - where - y = u ^. uvWorld . input . scrollAmount +--menuWheelEvents :: Universe -> Universe +--menuWheelEvents u = foldr ($) u (replicate (abs y) (menuWheelStep (signum y))) +-- where +-- y = u ^. uvWorld . input . scrollAmount --- you probably want i to be 1 or -1 -menuWheelStep :: Int -> Universe -> Universe -menuWheelStep i u = fromMaybe u $ do - sl <- u ^? uvScreenLayers . _head . scSelectionList - selpos <- sl ^? slSelPos . _Just - ymax <- fmap length (sl ^? slItems) - let newpos = (selpos - i) `mod` ymax - itm <- sl ^? slItems . ix newpos - let newu = u & uvScreenLayers . _head . scSelectionList . slSelPos . _Just %~ const newpos - if _siIsSelectable itm - then Just newu - else Just $ menuWheelStep i newu +---- you probably want i to be 1 or -1 +--menuWheelStep :: Int -> Universe -> Universe +--menuWheelStep i u = fromMaybe u $ do +-- sl <- u ^? uvScreenLayers . _head . scSelectionList +-- selpos <- sl ^? slSelPos . _Just +-- ymax <- fmap length (sl ^? slItems) +-- let newpos = (selpos - i) `mod` ymax +-- itm <- sl ^? slItems . ix newpos +-- let newu = u & uvScreenLayers . _head . scSelectionList . slSelPos . _Just %~ const newpos +-- if _siIsSelectable itm +-- then Just newu +-- else Just $ menuWheelStep i newu setSelectionListRestriction :: Configuration -> ScreenLayer -> ScreenLayer setSelectionListRestriction cfig screen = fromMaybe screen $ do diff --git a/tags b/tags index 13a517af5..b8621b842 100644 --- a/tags +++ b/tags @@ -1199,8 +1199,8 @@ MouseInvDrag src/Dodge/Data/HUD.hs 30;" C MouseInvNothing src/Dodge/Data/HUD.hs 31;" C MouseInvSelect src/Dodge/Data/HUD.hs 28;" C MouseInventorySelection src/Dodge/Data/HUD.hs 27;" t -MouseMenu src/Dodge/Data/Input.hs 24;" C MouseMenuClick src/Dodge/Data/Input.hs 23;" C +MouseMenuCursor src/Dodge/Data/Input.hs 24;" C Mouse_position src/Dodge/Data/Config.hs 73;" C Move src/Dodge/Data/ActionPlan.hs 28;" C Move src/Dodge/Wall/Move.hs 3;" m @@ -3071,7 +3071,6 @@ _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 25;" f -_slSelPos src/Dodge/Data/SelectionList.hs 26;" f _smoothScrollAmount src/Dodge/Data/Input.hs 42;" f _soundAngDist src/Sound/Data.hs 53;" f _soundChannel src/Sound/Data.hs 52;" f @@ -3346,7 +3345,7 @@ addToTrunk src/TreeHelp.hs 156;" f addWarningTerminal src/Dodge/Room/Warning.hs 37;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 77;" f -advanceScrollAmount src/Dodge/Update.hs 457;" f +advanceScrollAmount src/Dodge/Update.hs 469;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f aimDelaySweep src/Dodge/Render/Picture.hs 181;" f @@ -3591,7 +3590,7 @@ chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 99;" f checkConnection src/Dodge/Inventory.hs 233;" f checkDeath src/Dodge/Creature/State.hs 75;" f -checkEndGame src/Dodge/Update.hs 744;" f +checkEndGame src/Dodge/Update.hs 756;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f @@ -3602,7 +3601,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 156;" f +chooseCursorBorders src/Dodge/Render/List.hs 157;" 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 @@ -3618,7 +3617,7 @@ circle src/Picture/Base.hs 180;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f -clClSpringVel src/Dodge/Update.hs 797;" f +clClSpringVel src/Dodge/Update.hs 809;" 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 @@ -3645,7 +3644,7 @@ 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 -cloudEffect src/Dodge/Update.hs 767;" f +cloudEffect src/Dodge/Update.hs 779;" f cloudPoisonDamage src/Dodge/Update/Cloud.hs 9;" f clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f @@ -3716,7 +3715,7 @@ crAdd src/Dodge/Room/RezBox.hs 104;" f crAwayFromPost src/Dodge/Creature/Test.hs 77;" f crBlips src/Dodge/RadarSweep.hs 69;" f crCanSeeCr src/Dodge/Creature/Test.hs 48;" f -crCrSpring src/Dodge/Update.hs 815;" f +crCrSpring src/Dodge/Update.hs 827;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 28;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 37;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 51;" f @@ -3737,7 +3736,7 @@ crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 35;" f crOnWall src/Dodge/WallCreatureCollisions.hs 84;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f crSetRoots src/Dodge/Inventory/Location.hs 48;" f -crSpring src/Dodge/Update.hs 810;" f +crSpring src/Dodge/Update.hs 822;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f crUpdate src/Dodge/Creature/State.hs 62;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f @@ -3806,7 +3805,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 213;" f +dShadCol src/Dodge/Render/List.hs 214;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damToExpBarrel src/Dodge/Barreloid.hs 57;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f @@ -3828,7 +3827,7 @@ damageWlCircle src/Dodge/DamageCircle.hs 26;" f dampField src/Dodge/Magnet.hs 8;" f damsToExpBarrel src/Dodge/Barreloid.hs 50;" f dark src/Color.hs 108;" f -darkenBackground src/Dodge/Render/MenuScreen.hs 45;" f +darkenBackground src/Dodge/Render/MenuScreen.hs 53;" f dbArg src/Dodge/Base.hs 143;" f dbArgChain src/Dodge/Base.hs 148;" f deZoneIX src/Dodge/Zoning/Base.hs 86;" f @@ -3988,7 +3987,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 197;" f -displayTerminalLineString src/Dodge/Update.hs 486;" f +displayTerminalLineString src/Dodge/Update.hs 498;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f @@ -4024,7 +4023,7 @@ doFloatFloat src/Dodge/FloatFunction.hs 5;" f doGenFloat src/Dodge/HeldUse.hs 441;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f -doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 25;" f +doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f doIntImp src/Dodge/CreatureEffect.hs 24;" f doInvEffect src/Dodge/ItEffect.hs 10;" f doItCrWdWd src/Dodge/WorldEffect.hs 49;" f @@ -4072,7 +4071,7 @@ doWdCrCr src/Dodge/CreatureEffect.hs 12;" f doWdP2f src/Dodge/WdP2f.hs 12;" f doWdWd src/Dodge/WorldEffect.hs 26;" f doWeaponRepetitions src/Dodge/HeldUse.hs 56;" f -doWorldEvents src/Dodge/Update.hs 468;" f +doWorldEvents src/Dodge/Update.hs 480;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f doorBetween src/Dodge/Placement/Instance/Door.hs 39;" f @@ -4109,7 +4108,7 @@ drawCreature src/Dodge/Render/ShapePicture.hs 41;" 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 66;" f +drawCursorAt src/Dodge/Render/List.hs 67;" f drawDDATest src/Dodge/Debug/Picture.hs 256;" f drawDISelections src/Dodge/Render/HUD.hs 146;" f drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f @@ -4122,13 +4121,13 @@ drawFarWallDetect src/Dodge/Debug/Picture.hs 234;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f drawFlare src/Dodge/Flare.hs 12;" f -drawFooterText src/Dodge/Render/MenuScreen.hs 65;" f +drawFooterText src/Dodge/Render/MenuScreen.hs 73;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f drawGapPlus src/Dodge/Render/Picture.hs 172;" f drawGib src/Dodge/Prop/Draw.hs 28;" f drawHP src/Dodge/Render/HUD.hs 56;" f drawHUD src/Dodge/Render/HUD.hs 48;" f -drawInputMenu src/Dodge/Render/MenuScreen.hs 18;" f +drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f drawInspectWall src/Dodge/Debug/Picture.hs 209;" f drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f drawInventory src/Dodge/Render/HUD.hs 65;" f @@ -4137,23 +4136,23 @@ 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 207;" f -drawListElement src/Dodge/Render/List.hs 187;" f -drawListYgapScaleYoff src/Dodge/Render/List.hs 94;" f -drawListYoff src/Dodge/Render/List.hs 91;" f +drawList src/Dodge/Render/List.hs 208;" f +drawListElement src/Dodge/Render/List.hs 188;" f +drawListYgapScaleYoff src/Dodge/Render/List.hs 95;" f +drawListYoff src/Dodge/Render/List.hs 92;" f drawMachine src/Dodge/Machine/Draw.hs 17;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f drawMenuClick src/Dodge/Render/Picture.hs 122;" f drawMenuCursor src/Dodge/Render/Picture.hs 135;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f -drawMenuScreen src/Dodge/Render/MenuScreen.hs 12;" f +drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f drawMouseCursor src/Dodge/Render/Picture.hs 73;" f drawMouseOver src/Dodge/Render/HUD.hs 116;" f drawMousePosition src/Dodge/Debug/Picture.hs 319;" f drawMovingShape src/Dodge/Prop/Draw.hs 67;" f drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f drawMuzFlare src/Dodge/Flare.hs 17;" f -drawOptions src/Dodge/Render/MenuScreen.hs 32;" f +drawOptions src/Dodge/Render/MenuScreen.hs 35;" f drawPathBetween src/Dodge/Debug/Picture.hs 168;" f drawPathEdge src/Dodge/Debug/Picture.hs 222;" f drawPathing src/Dodge/Debug/Picture.hs 384;" f @@ -4170,8 +4169,8 @@ drawRootCursor src/Dodge/Render/HUD.hs 84;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 30;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 41;" f drawSelect src/Dodge/Render/Picture.hs 151;" f -drawSelectionList src/Dodge/Render/List.hs 33;" f -drawSelectionListBackground src/Dodge/Render/List.hs 52;" f +drawSelectionList src/Dodge/Render/List.hs 34;" f +drawSelectionListBackground src/Dodge/Render/List.hs 53;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 17;" f drawSensor src/Dodge/Machine/Draw.hs 24;" f drawShader src/Shader.hs 27;" f @@ -4190,8 +4189,8 @@ drawTargeting src/Dodge/Targeting/Draw.hs 13;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawText src/Picture/Base.hs 220;" f -drawTitle src/Dodge/Render/MenuScreen.hs 48;" f -drawTitleBackground src/Dodge/Render/List.hs 47;" f +drawTitle src/Dodge/Render/MenuScreen.hs 56;" f +drawTitleBackground src/Dodge/Render/List.hs 48;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f drawTurret src/Dodge/Machine/Draw.hs 65;" f drawVerticalLampCover src/Dodge/Prop/Draw.hs 59;" f @@ -4401,7 +4400,7 @@ getDamageCoding src/Dodge/Terminal.hs 178;" 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 86;" f +getLDPWidth src/Dodge/Render/List.hs 87;" f getLaserColor src/Dodge/HeldUse.hs 196;" f getLaserDamage src/Dodge/HeldUse.hs 193;" f getLaserPhaseV src/Dodge/HeldUse.hs 190;" f @@ -4639,7 +4638,7 @@ isLeftOfA src/Geometry.hs 181;" f isNothing' src/MaybeHelp.hs 33;" f isOnSeg src/Geometry.hs 240;" f isOutLnk src/Dodge/PlacementSpot.hs 164;" f -isOverTerminalScreen src/Dodge/Update.hs 435;" f +isOverTerminalScreen src/Dodge/Update.hs 447;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f @@ -4728,7 +4727,7 @@ launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f 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 +ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 91;" f ldtIL src/Dodge/DoubleTree.hs 149;" f ldtPropagate src/Dodge/DoubleTree.hs 20;" f ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f @@ -4768,7 +4767,7 @@ 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 135;" f +listCursorChooseBorderScale src/Dodge/Render/List.hs 136;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 273;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f @@ -4871,7 +4870,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 61;" f +makeSelectionListPictures src/Dodge/Render/List.hs 62;" f makeShaderEBO src/Shader/Compile.hs 53;" f makeShaderProgram src/Shader/Compile.hs 241;" f makeShaderUsingVAO src/Shader/Compile.hs 146;" f @@ -4897,7 +4896,7 @@ makeTlsTimeRadColPos src/Dodge/LightSource.hs 88;" f makeTypeCraft src/Dodge/Item/Craftable.hs 13;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 7;" f mapOverlay src/Dodge/Render/HUD/Carte.hs 24;" f -markWallSeen src/Dodge/Update.hs 729;" f +markWallSeen src/Dodge/Update.hs 741;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 43;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f @@ -4940,8 +4939,8 @@ memoTopPrismEdgeIndices src/Shader/Poke.hs 321;" f memoTopPrismIndices src/Shader/Poke.hs 309;" f menuOptionToSelectionItem src/Dodge/Menu/Option.hs 111;" f menuOptionToString src/Dodge/Menu/Option.hs 138;" f -menuWheelEvents src/Dodge/Update/Input/ScreenLayer.hs 103;" f -menuWheelStep src/Dodge/Update/Input/ScreenLayer.hs 109;" f +menuWheelEvents src/Dodge/Update/Input/ScreenLayer.hs 104;" f +menuWheelStep src/Dodge/Update/Input/ScreenLayer.hs 110;" f merge src/ListHelp.hs 83;" f mergeBy src/ListHelp.hs 86;" f mergeOn src/ListHelp.hs 93;" f @@ -4994,9 +4993,8 @@ mntLight src/Dodge/Placement/Instance/LightSource.hs 154;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 159;" f modTo src/Geometry/Zone.hs 10;" f mouseActionsCr src/Dodge/Creature/YourControl.hs 153;" f -mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 58;" f +mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 59;" f mouseCursorType src/Dodge/Render/Picture.hs 79;" f -mouseOverSelectionList src/Dodge/Update/Input/ScreenLayer.hs 73;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f moveBullet src/Dodge/Bullet.hs 193;" f moveCombineSel src/Dodge/Update/Scroll.hs 58;" f @@ -5028,7 +5026,7 @@ mvBullet src/Dodge/Bullet.hs 33;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f -mvGust src/Dodge/Update.hs 758;" f +mvGust src/Dodge/Update.hs 770;" f mvLS src/Dodge/Placement/PlaceSpot.hs 217;" f mvP src/Dodge/Wall/Move.hs 54;" f mvPP src/Dodge/Placement/PlaceSpot.hs 183;" f @@ -5086,8 +5084,8 @@ oneH src/Dodge/Creature/Test.hs 95;" f openCursorAt src/Dodge/Render/HUD/Carte.hs 54;" 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 +optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 51;" f +optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 40;" f optionValueOffset src/Dodge/Menu/Option.hs 106;" f optionsOptions src/Dodge/Menu.hs 108;" f optionsToSelections src/Dodge/Menu/Option.hs 59;" f @@ -5192,7 +5190,7 @@ placeSpotID src/Dodge/Placement/PlaceSpot.hs 100;" f placeSpotID' src/Dodge/Placement/PlaceSpot.hs 106;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f -placeString src/Dodge/Render/MenuScreen.hs 54;" f +placeString src/Dodge/Render/MenuScreen.hs 62;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 162;" f plainRegex src/Dodge/DisplayInventory.hs 194;" f plateCraft src/Dodge/Item/Craftable.hs 45;" f @@ -5296,7 +5294,7 @@ powlistUpToN src/Multiset.hs 23;" f powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f ppDraw src/Dodge/Render/ShapePicture.hs 116;" f -ppEvents src/Dodge/Update.hs 721;" f +ppEvents src/Dodge/Update.hs 733;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 82;" f preloadRender src/Preload/Render.hs 30;" f @@ -5444,7 +5442,7 @@ 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 192;" f +renderListAt src/Dodge/Render/List.hs 193;" f renderShadows src/Render.hs 117;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f @@ -5600,8 +5598,8 @@ seedStartOptions src/Dodge/Menu.hs 82;" f segOnCirc src/Geometry.hs 116;" f selNumPos src/Dodge/Render/HUD.hs 448;" f selNumPosCardinal src/Dodge/Render/HUD.hs 471;" f -selSecDrawCursor src/Dodge/Render/List.hs 125;" f -selSecDrawCursorAt src/Dodge/Render/List.hs 103;" f +selSecDrawCursor src/Dodge/Render/List.hs 126;" f +selSecDrawCursorAt src/Dodge/Render/List.hs 104;" f selSecSelCol src/Dodge/Render/HUD.hs 494;" f selSecSelSize src/Dodge/SelectionSections.hs 182;" f selSecYint src/Dodge/SelectionSections.hs 191;" f @@ -5638,12 +5636,12 @@ setLinkTypePD src/Dodge/RoomLink.hs 67;" f setMinInvSize src/Dodge/Creature/Action.hs 150;" f setMusicVolume src/Sound.hs 161;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 51;" f -setOldPos src/Dodge/Update.hs 510;" f +setOldPos src/Dodge/Update.hs 522;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 292;" f -setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f +setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 122;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f setSoundVolume src/Sound.hs 156;" f @@ -5745,7 +5743,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 129;" f -simpleCrSprings src/Dodge/Update.hs 806;" f +simpleCrSprings src/Dodge/Update.hs 818;" f simpleDamFL src/Dodge/Flame.hs 41;" f simpleTermMessage src/Dodge/Terminal.hs 253;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f @@ -5845,8 +5843,8 @@ ssScrollUsing src/Dodge/SelectionSections.hs 51;" f ssSetCursor src/Dodge/SelectionSections.hs 72;" f ssTryLookup src/Dodge/SelectionSections.hs 81;" f ssfold src/FoldableHelp.hs 105;" f -stackPicturesAt src/Dodge/Render/List.hs 97;" f -stackPicturesAtOff src/Dodge/Render/List.hs 100;" f +stackPicturesAt src/Dodge/Render/List.hs 98;" f +stackPicturesAtOff src/Dodge/Render/List.hs 101;" f stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 281;" f startCr src/Dodge/Creature.hs 91;" f @@ -5973,7 +5971,7 @@ titleOptionsMenu src/Dodge/Menu.hs 99;" f titleOptionsNoWrite src/Dodge/Menu.hs 102;" f tlsTimeRadColPos src/Dodge/LightSource.hs 69;" f tlsTimeRadFunPos src/Dodge/LightSource.hs 26;" f -tmUpdate src/Dodge/Update.hs 490;" f +tmUpdate src/Dodge/Update.hs 502;" f toBothLnk src/Dodge/RoomLink.hs 121;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f @@ -5983,7 +5981,7 @@ toLabel src/Dodge/Cleat.hs 16;" f toLasgunUpdate src/Dodge/Item/Grammar.hs 119;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f -toTopLeft src/Dodge/Render/List.hs 217;" f +toTopLeft src/Dodge/Render/List.hs 218;" f toV2 src/Geometry/Data.hs 36;" f toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f @@ -6115,42 +6113,42 @@ updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBounds src/Dodge/Update/Camera.hs 245;" f updateBulVel src/Dodge/Bullet.hs 50;" f updateBullet src/Dodge/Bullet.hs 28;" f -updateBullets src/Dodge/Update.hs 587;" f +updateBullets src/Dodge/Update.hs 599;" f updateCamera src/Dodge/Update/Camera.hs 31;" f updateCloseObjects src/Dodge/Inventory.hs 124;" f -updateCloud src/Dodge/Update.hs 772;" f -updateClouds src/Dodge/Update.hs 616;" f +updateCloud src/Dodge/Update.hs 784;" f +updateClouds src/Dodge/Update.hs 628;" f updateCombineInvClick src/Dodge/Update/Input/InGame.hs 102;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 38;" f updateCombineSections src/Dodge/DisplayInventory.hs 44;" f updateCreature src/Dodge/Creature/Update.hs 10;" f -updateCreatureGroups src/Dodge/Update.hs 556;" f -updateCreatureSoundPositions src/Dodge/Update.hs 532;" f +updateCreatureGroups src/Dodge/Update.hs 568;" f +updateCreatureSoundPositions src/Dodge/Update.hs 544;" f updateDebugMessageOffset src/Dodge/Update.hs 92;" f -updateDelayedEvents src/Dodge/Update.hs 835;" f +updateDelayedEvents src/Dodge/Update.hs 847;" f updateDisplaySections src/Dodge/DisplayInventory.hs 112;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 577;" f +updateDistortions src/Dodge/Update.hs 589;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f -updateEnergyBalls src/Dodge/Update.hs 604;" f +updateEnergyBalls src/Dodge/Update.hs 616;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 283;" f updateExpBarrel src/Dodge/Barreloid.hs 19;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFlame src/Dodge/Flame.hs 71;" f -updateFlames src/Dodge/Update.hs 601;" f +updateFlames src/Dodge/Update.hs 613;" f updateFlare src/Dodge/Flare.hs 7;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 92;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 88;" f -updateGusts src/Dodge/Update.hs 755;" f +updateGusts src/Dodge/Update.hs 767;" f updateHeldRootItem src/Dodge/Creature/State.hs 167;" f updateHumanoid src/Dodge/Humanoid.hs 12;" f -updateIMl src/Dodge/Update.hs 546;" f -updateIMl' src/Dodge/Update.hs 551;" f +updateIMl src/Dodge/Update.hs 558;" f +updateIMl' src/Dodge/Update.hs 563;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 186;" f -updateInstantBullets src/Dodge/Update.hs 693;" f +updateInstantBullets src/Dodge/Update.hs 705;" f updateInv src/Dodge/Creature/State.hs 152;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 85;" f updateItemTargeting src/Dodge/Creature/State.hs 268;" f @@ -6159,21 +6157,21 @@ updateKeyInGame src/Dodge/Update/Input/InGame.hs 180;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 169;" f updateLampoid src/Dodge/Lampoid.hs 12;" f updateLaser src/Dodge/Laser/Update.hs 13;" f -updateLasers src/Dodge/Update.hs 475;" f -updateLightSources src/Dodge/Update.hs 580;" f +updateLasers src/Dodge/Update.hs 487;" f +updateLightSources src/Dodge/Update.hs 592;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 201;" f -updateMIM src/Dodge/Update.hs 706;" f +updateMIM src/Dodge/Update.hs 718;" f updateMachine src/Dodge/Machine/Update.hs 19;" f updateMouseContext src/Dodge/Update.hs 391;" f updateMouseInventorySelection src/Dodge/Update.hs 309;" f updateMouseInventorySelection' src/Dodge/Update.hs 314;" f updateMovement src/Dodge/Creature/State.hs 331;" f -updateObjCatMaybes src/Dodge/Update.hs 568;" f -updateObjMapMaybe src/Dodge/Update.hs 561;" f -updatePastWorlds src/Dodge/Update.hs 463;" f +updateObjCatMaybes src/Dodge/Update.hs 580;" f +updateObjMapMaybe src/Dodge/Update.hs 573;" f +updatePastWorlds src/Dodge/Update.hs 475;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f -updatePosEvents src/Dodge/Update.hs 613;" f +updatePosEvents src/Dodge/Update.hs 625;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 144;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 147;" f @@ -6181,9 +6179,9 @@ updateProjectile src/Dodge/Projectile/Update.hs 23;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f updateRadarBlip src/Dodge/RadarBlip.hs 8;" f -updateRadarBlips src/Dodge/Update.hs 583;" f +updateRadarBlips src/Dodge/Update.hs 595;" f updateRadarSweep src/Dodge/RadarSweep.hs 25;" f -updateRadarSweeps src/Dodge/Update.hs 607;" f +updateRadarSweeps src/Dodge/Update.hs 619;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 106;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f @@ -6192,30 +6190,30 @@ updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 224;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 203;" f -updateSeenWalls src/Dodge/Update.hs 724;" f +updateSeenWalls src/Dodge/Update.hs 736;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f -updateShockwaves src/Dodge/Update.hs 598;" f +updateShockwaves src/Dodge/Update.hs 610;" f updateSingleNodes src/TreeHelp.hs 97;" f updateSound src/Sound.hs 71;" f updateSounds src/Sound.hs 66;" f updateSpark src/Dodge/Spark.hs 19;" f -updateSparks src/Dodge/Update.hs 610;" f +updateSparks src/Dodge/Update.hs 622;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 29;" f -updateTeslaArcs src/Dodge/Update.hs 592;" f +updateTeslaArcs src/Dodge/Update.hs 604;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 595;" f +updateTractorBeams src/Dodge/Update.hs 607;" f updateTurret src/Dodge/Machine/Update.hs 47;" f updateUniverse src/Dodge/Update.hs 71;" f updateUniverseFirst src/Dodge/Update.hs 83;" f updateUniverseLast src/Dodge/Update.hs 133;" f updateUniverseMid src/Dodge/Update.hs 154;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 34;" f -updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 20;" f +updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 21;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 12;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f updateWheelEvent src/Dodge/Update/Scroll.hs 19;" f -updateWheelEvents src/Dodge/Update.hs 450;" f +updateWheelEvents src/Dodge/Update.hs 462;" f updateWorldEventFlag src/Dodge/Update.hs 117;" f updateWorldEventFlags src/Dodge/Update.hs 105;" f upperBody src/Dodge/Creature/Picture.hs 133;" f @@ -6387,9 +6385,9 @@ zipCount src/Dodge/Tree/Shift.hs 129;" f zipCountDown src/Dodge/Room/Procedural.hs 118;" f zipWithDefaults src/Dodge/Item/Display.hs 21;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f -zoneClouds src/Dodge/Update.hs 483;" f +zoneClouds src/Dodge/Update.hs 495;" f zoneCreature src/Dodge/Zoning/Creature.hs 52;" f -zoneCreatures src/Dodge/Update.hs 527;" f +zoneCreatures src/Dodge/Update.hs 539;" f zoneExtract src/Dodge/Zoning/Base.hs 50;" f zoneMonoid src/Dodge/Zoning/Base.hs 80;" f zoneOfCirc src/Dodge/Zoning/Base.hs 22;" f