From 8b6f5529ff7221e76f89ac30704f8d5674f6adfb Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 18 Oct 2024 12:39:46 +0100 Subject: [PATCH] Add 8-way cardinal/intercardinal datatype --- ghcidOutput | 6 +- src/Dodge/Base/CardinalPoint.hs | 11 ++ src/Dodge/Data/CardinalPoint.hs | 13 +- src/Dodge/Data/HUD.hs | 9 +- src/Dodge/Default/World.hs | 5 +- src/Dodge/DisplayInventory.hs | 2 +- src/Dodge/Render/HUD.hs | 41 ++++- src/Dodge/SelectionSections.hs | 35 +++-- src/Dodge/Terminal.hs | 2 +- src/Dodge/Update.hs | 31 +++- src/Dodge/Update/Input/InGame.hs | 10 +- tags | 259 +++++++++++++++++-------------- 12 files changed, 267 insertions(+), 157 deletions(-) diff --git a/ghcidOutput b/ghcidOutput index 72c1114ca..d980aa1d2 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,5 +1 @@ -/home/justin/Haskell/loop/src/Dodge/Render/HUD.hs:33:1-30: warning: [-Wunused-imports] - The import of ‘Dodge.SelectionSections’ is redundant - | -33 | import Dodge.SelectionSections - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +All good (597 modules, at 12:38:41) diff --git a/src/Dodge/Base/CardinalPoint.hs b/src/Dodge/Base/CardinalPoint.hs index 8f6d4e6b2..9acbd1f21 100644 --- a/src/Dodge/Base/CardinalPoint.hs +++ b/src/Dodge/Base/CardinalPoint.hs @@ -12,3 +12,14 @@ cardVec cp = case cp of South -> V2 0 (-1) East -> V2 1 0 West -> V2 (-1) 0 + +cardEightVec :: CardinalEightPoint -> Point2 +cardEightVec cp = case cp of + North8 -> V2 0 1 + NorthEast8 -> V2 1 1 + East8 -> V2 1 0 + SouthEast8 -> V2 1 (-1) + South8 -> V2 0 (-1) + SouthWest8 -> V2 (-1) (-1) + West8 -> V2 (-1) 0 + NorthWest8 -> V2 (-1) 1 diff --git a/src/Dodge/Data/CardinalPoint.hs b/src/Dodge/Data/CardinalPoint.hs index 09883d912..cfdd12bf7 100644 --- a/src/Dodge/Data/CardinalPoint.hs +++ b/src/Dodge/Data/CardinalPoint.hs @@ -5,7 +5,18 @@ data CardinalPoint | East | South | West - deriving (Eq, Ord, Show) + deriving (Eq, Ord, Show, Bounded, Enum) + +data CardinalEightPoint + = North8 + | NorthEast8 + | East8 + | SouthEast8 + | South8 + | SouthWest8 + | West8 + | NorthWest8 + deriving (Eq, Ord, Show, Bounded, Enum) data CardinalCover = NSEW diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index 2b89aa7f8..0d68b9ce3 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -19,9 +19,15 @@ data HUDElement } | DisplayCarte +data MouseInventorySelection = NoMouseSel + | MouseInvSelect + {_misSelStart :: (Int,Int), _misMaybeEnd :: Maybe (Int,Int)} + | MouseInvChosen + {_misChosenStart :: (Int,Int), _misChosenEnd :: (Int,Int)} + data SubInventory = NoSubInventory - { _nsSelected :: Maybe (Int,Int) + { _nsSelected :: MouseInventorySelection , _nsMouseOver :: Maybe (Int,Int) } | ExamineInventory @@ -44,3 +50,4 @@ data HUD = HUD makeLenses ''HUD makeLenses ''HUDElement makeLenses ''SubInventory +makeLenses ''MouseInventorySelection diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index a5a34d2c2..ddb708228 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -161,7 +161,10 @@ defaultHUD = defaultDisplayInventory :: HUDElement defaultDisplayInventory = DisplayInventory - { _subInventory = NoSubInventory {_nsSelected = Just (0,2), _nsMouseOver = Just (0,3)} + { _subInventory = NoSubInventory + {_nsSelected = MouseInvChosen (0,0) (0,2) + , _nsMouseOver = Just (0,3) + } , _diSections = defaultInvSections } diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index a88971964..79180bc9d 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -31,7 +31,7 @@ import Regex toggleCombineInv :: Universe -> Universe toggleCombineInv uv = case uv ^? uvWorld . hud . hudElement . subInventory of Just CombineInventory{} -> uv & uvWorld . hud . hudElement . subInventory - .~ NoSubInventory Nothing Nothing + .~ NoSubInventory NoMouseSel Nothing _ -> uv & uvWorld %~ enterCombineInv (uv ^. uvConfig) updateCombinePositioning :: Universe -> Universe diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index de3d32e19..abf4c586d 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -3,6 +3,7 @@ module Dodge.Render.HUD ( drawHUD, selNumPos, -- this shoud probably be pushed back here + selNumPosCardinal, -- this shoud probably be pushed back here ) where import Dodge.SelectionSections @@ -30,7 +31,6 @@ import Dodge.Render.Connectors import Dodge.Render.HUD.Carte import Dodge.Render.List import Dodge.ScreenPos -import Dodge.SelectionSections import Dodge.SelectionSections.Draw import Geometry import qualified IntMapHelp as IM @@ -80,13 +80,19 @@ drawDIMouseOver w = fromMaybe mempty $ do let idp = invDisplayParams w return . color (withAlpha 0.5 white) $ selSecDrawCursorAt (0,i) 10 idp sss +getMouseInvSel :: World -> Maybe ((Int,Int),(Int,Int)) +getMouseInvSel w = case w ^? hud . hudElement . subInventory . nsSelected of + Just (MouseInvSelect s (Just e)) -> Just (s,e) + Just (MouseInvChosen s e) -> Just (s,e) + _ -> Nothing + drawDISelections :: World -> Configuration -> Picture drawDISelections w cfig = fromMaybe mempty $ do - (i,j) <- w ^? hud . hudElement . subInventory . nsSelected . _Just + ((i,j),(a,b)) <- getMouseInvSel w sss <- w ^? hud . hudElement . diSections let idp = invDisplayParams w - tp <- selNumPos cfig idp sss 0 i - bp <- selNumPos cfig idp sss 0 j + tp <- selNumPosCardinal NorthWest8 cfig idp sss i j + bp <- selNumPosCardinal SouthWest8 cfig idp sss a b return . color red $ line [tp,bp] @@ -353,12 +359,37 @@ selNumPos :: Int -> Int -> Maybe Point2 -selNumPos cfig ldp sss i j = do +selNumPos = selNumPosCardinal West8 +--selNumPos cfig ldp sss i j = do +-- ipos <- selSecYint i j sss +-- size <- selSecSelSize i j sss +-- indent <- sss ^? sssSections . ix i . ssItems . ix j . siOffX +-- return $ +-- screenPosAbs cfig (ldp ^. ldpPos) +-- + V2 +-- (10 * s * fromIntegral indent) +-- (negate (20 * s + ygap) * (fromIntegral ipos + fromIntegral size * 0.5)) +-- where +-- s = _ldpScale ldp +-- ygap = _ldpVerticalGap ldp + +-- need to be able to determine a selection item's width for this +selNumPosCardinal :: + CardinalEightPoint -> + Configuration -> + ListDisplayParams -> + SelectionSections a -> + Int -> + Int -> + Maybe Point2 +selNumPosCardinal card cfig ldp sss i j = do ipos <- selSecYint i j sss size <- selSecSelSize i j sss indent <- sss ^? sssSections . ix i . ssItems . ix j . siOffX + let offset = cardEightVec card * V2 0 (fromIntegral size * 0.5 * 20 * s) return $ screenPosAbs cfig (ldp ^. ldpPos) + + offset + V2 (10 * s * fromIntegral indent) (negate (20 * s + ygap) * (fromIntegral ipos + fromIntegral size * 0.5)) diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 4115bbe6f..b254269b1 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -6,9 +6,12 @@ module Dodge.SelectionSections ( setFirstPosSelectionSections, selSecYint, selSecSelSize, + inverseSelSecYint, + posSelSecYint, inverseSelNumPos, ) where +import Control.Monad import qualified Control.Foldl as L import Dodge.ScreenPos import Geometry.Data @@ -130,8 +133,8 @@ selSecSelSize :: Int -> Int -> SelectionSections a -> Maybe Int selSecSelSize i j sss = fmap length $ sss ^? sssSections . ix i . ssItems . ix j . siPictures -- need to check that the vertical gap is correctly put in here -posSelSecYint :: Configuration -> ListDisplayParams -> Point2 -> Int -posSelSecYint cfig ldp (V2 _ y) = floor $ (y0 - y) / (20 / ldp ^. ldpScale + ldp ^. ldpVerticalGap) +posSelSecYint :: Configuration -> ListDisplayParams -> Float -> Int +posSelSecYint cfig ldp y = floor $ (y0 - y) / (20 / ldp ^. ldpScale + ldp ^. ldpVerticalGap) where V2 _ y0 = screenPosAbs cfig (ldp ^. ldpPos) @@ -159,16 +162,20 @@ inverseSelSecYint yint sss = do let ls = L.postscan (L.premap _siHeight L.sum) (_ssItems ss) j <- L.fold (L.findIndex (\x -> x - _ssOffset ss > yint)) ls return (i,j) --- --- ss <- sss ^? sssSections . ix i --- return . (secpos +) --- . subtract (ss ^. ssOffset) --- . sum --- . fmap _siHeight --- . fst --- $ IM.split j (ss ^. ssItems) --- where --- secpos = sum . fmap (length . _ssShownItems) . fst $ IM.split i $ sss ^. sssSections + +inverseSelSecYintXPosCheck :: Configuration -> ListDisplayParams + -> Float -> Int -> SelectionSections a -> Maybe (Int,Int) +inverseSelSecYintXPosCheck cfig ldp x yint sss = do + ((i,ss),othersss) <- IM.minViewWithKey (_sssSections sss) + let l = length $ _ssShownItems ss + V2 x0 _ = screenPosAbs cfig (ldp ^. ldpPos) + guard (x - x0 < 150) -- HACK, should determine selection item width and offset below + if l <= yint + then inverseSelSecYint (yint - l) (sss & sssSections .~ othersss) + else do + let ls = L.postscan (L.premap _siHeight L.sum) (_ssItems ss) + j <- L.fold (L.findIndex (\val -> val - _ssOffset ss > yint)) ls + return (i,j) inverseSelNumPos :: Configuration -> @@ -176,8 +183,8 @@ inverseSelNumPos :: SelectionSections a -> Point2 -> Maybe (Int,Int) -inverseSelNumPos cfig ldp sss pos = --Just (0,posSelSecYint cfig ldp pos) - inverseSelSecYint (posSelSecYint cfig ldp pos) sss +inverseSelNumPos cfig ldp sss (V2 x y) = + inverseSelSecYintXPosCheck cfig ldp x (posSelSecYint cfig ldp y) sss --getIthPos :: Int -> IM.IntMap (SelectionItem a) -> Int --getIthPos i sm = sum . fmap _siHeight . fst $ IM.split i sm diff --git a/src/Dodge/Terminal.hs b/src/Dodge/Terminal.hs index d55f7e071..8dbefe42d 100644 --- a/src/Dodge/Terminal.hs +++ b/src/Dodge/Terminal.hs @@ -222,7 +222,7 @@ disconnectTerminal tm = exitTerminalSubInv :: World -> World exitTerminalSubInv w = case w ^? hud . hudElement . subInventory . termID of - Just _ -> w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing + Just _ -> w & hud . hudElement . subInventory .~ NoSubInventory NoMouseSel Nothing _ -> w damageCodeCommand :: TerminalCommand diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index de6eff8a8..b8b21ae38 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -278,6 +278,7 @@ functionalUpdate u = . over uvWorld updateRBList . over uvWorld updateCloseObjects . over uvWorld updateWheelEvents + . over uvWorld (updateMouseInventorySelection (u ^. uvConfig)) . over uvWorld (updateMouseOverInventory (u ^. uvConfig)) . over uvWorld zoneClouds . over uvWorld zoneCreatures @@ -291,14 +292,36 @@ checkTermDist w = fromMaybe w $ do btid <- w ^? cWorld . lWorld . terminals . ix tmid . tmButtonID btpos <- w ^? cWorld . lWorld . buttons . ix btid . btPos guard $ dist btpos (_crPos $ you w) > 40 - return (w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing) + return (w & hud . hudElement . subInventory .~ NoSubInventory NoMouseSel Nothing) + +updateMouseInventorySelection :: Configuration -> World -> World +updateMouseInventorySelection cfig w + | leftclickstart = case msel of + Nothing -> fromMaybe w $ do + ysel <- mysel + return $ w & hud . hudElement . subInventory . nsSelected .~ MouseInvSelect ysel Nothing + Just (i,j) -> w & hud . hudElement . subInventory . nsSelected .~ + MouseInvChosen (i,j) (i,j) + | leftclickheld = w + | otherwise = w + where + leftclickstart = w ^? input . mouseButtons . ix ButtonLeft == Just 0 + leftclickheld = ButtonLeft `M.member` (w ^. input . mouseButtons) + mpos = w ^. input . mousePos + ldp = invDisplayParams w + msel = do + sss <- msss + inverseSelNumPos cfig ldp sss (w ^. input . mousePos) + mysel = do + sss <- msss + inverseSelSecYint (posSelSecYint cfig ldp (mpos ^. _y)) sss + msss = w ^? hud . hudElement . diSections updateMouseOverInventory :: Configuration -> World -> World updateMouseOverInventory cfig w = fromMaybe w $ do sss <- w ^? hud . hudElement . diSections - guard $ w ^. input . mouseMoving - let x = inverseSelNumPos cfig ldp sss (w ^. input . mousePos) - return $ w & hud . hudElement . subInventory . nsMouseOver .~ x + return $ w & hud . hudElement . subInventory . nsMouseOver .~ + inverseSelNumPos cfig ldp sss (w ^. input . mousePos) where ldp = invDisplayParams w diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index c521c9d8e..637da41dd 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -226,9 +226,9 @@ spaceAction w = case w ^. hud . hudElement of & worldEventFlags . at InventoryChange ?~ () _ -> w DisplayInventory{_subInventory = DisplayTerminal{}} -> - w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing + w & hud . hudElement . subInventory .~ NoSubInventory NoMouseSel Nothing & worldEventFlags . at InventoryChange ?~ () - _ -> w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing + _ -> w & hud . hudElement . subInventory .~ NoSubInventory NoMouseSel Nothing where theLoc = doWorldPos @@ -240,14 +240,14 @@ toggleMap u = case u ^. uvWorld . hud . hudElement of DisplayCarte -> u & uvWorld . hud . hudElement .~ DisplayInventory - { _subInventory = NoSubInventory Nothing Nothing + { _subInventory = NoSubInventory NoMouseSel Nothing , _diSections = defaultInvSections } _ -> u & uvWorld . hud . hudElement .~ DisplayCarte toggleTweakInv :: World -> World toggleTweakInv w = case w ^? hud . hudElement . subInventory of - Just ExamineInventory{} -> w & thepointer .~ NoSubInventory Nothing Nothing + Just ExamineInventory{} -> w & thepointer .~ NoSubInventory NoMouseSel Nothing _ -> w & thepointer .~ ExamineInventory -- mi where thepointer = hud . hudElement . subInventory @@ -265,4 +265,4 @@ tryCombine sss w = fromMaybe w $ do maybeExitCombine :: Universe -> Universe maybeExitCombine u | ButtonRight `M.member` (u ^. uvWorld . input . mouseButtons) = u - | otherwise = u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing + | otherwise = u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory NoMouseSel Nothing diff --git a/tags b/tags index ecd7431a5..3f7c8a583 100644 --- a/tags +++ b/tags @@ -273,7 +273,8 @@ CameraScrollTimeFlow src/Dodge/Data/World.hs 68;" C CamouflageStatus src/Dodge/Data/CamouflageStatus.hs 11;" t CamouflageStatus src/Dodge/Data/CamouflageStatus.hs 6;" m Cane src/Dodge/Item/Held/Cane.hs 1;" m -CardinalCover src/Dodge/Data/CardinalPoint.hs 10;" t +CardinalCover src/Dodge/Data/CardinalPoint.hs 21;" t +CardinalEightPoint src/Dodge/Data/CardinalPoint.hs 10;" t CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m CardinalPoint src/Dodge/Data/CardinalPoint.hs 1;" m Carriage src/Dodge/Data/Creature/Stance.hs 20;" t @@ -332,7 +333,7 @@ Combinations src/Dodge/Combine/Combinations.hs 3;" m Combine src/Dodge/Combine.hs 2;" m Combine src/Dodge/Data/Combine.hs 2;" m Combine src/Dodge/Data/Item/Combine.hs 6;" m -CombineInventory src/Dodge/Data/HUD.hs 28;" C +CombineInventory src/Dodge/Data/HUD.hs 34;" C CombineInventoryChange src/Dodge/Data/World.hs 34;" C Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m @@ -512,7 +513,7 @@ Display src/Dodge/Item/Display.hs 1;" m DisplayCarte src/Dodge/Data/HUD.hs 20;" C DisplayInventory src/Dodge/Data/HUD.hs 16;" C DisplayInventory src/Dodge/DisplayInventory.hs 5;" m -DisplayTerminal src/Dodge/Data/HUD.hs 30;" C +DisplayTerminal src/Dodge/Data/HUD.hs 36;" C Distortion src/Dodge/Data/Distortion.hs 12;" t Distortion src/Dodge/Data/Distortion.hs 6;" m Distortion src/Dodge/Distortion.hs 1;" m @@ -613,6 +614,7 @@ EXPLOSIVE src/Dodge/Data/Damage/Type.hs 21;" C EXPLOSIVES src/Dodge/Data/Item/Combine.hs 97;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C +East8 src/Dodge/Data/CardinalPoint.hs 13;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t Effect src/Dodge/Data/Item/Effect.hs 6;" m Effect src/Dodge/Default/Item/Effect.hs 1;" m @@ -656,7 +658,7 @@ Euse src/Dodge/Data/Item/HeldUse.hs 20;" t Euse src/Dodge/Euse.hs 1;" m Event src/Dodge/Button/Event.hs 1;" m Event src/Dodge/Event.hs 14;" m -ExamineInventory src/Dodge/Data/HUD.hs 27;" C +ExamineInventory src/Dodge/Data/HUD.hs 33;" C Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 36;" C Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m @@ -814,7 +816,7 @@ HELD src/Dodge/Data/Item/Combine.hs 16;" C HELDDETECTOR src/Dodge/Data/Item/Combine.hs 162;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 82;" C HOSE src/Dodge/Data/Item/Combine.hs 32;" C -HUD src/Dodge/Data/HUD.hs 34;" t +HUD src/Dodge/Data/HUD.hs 40;" t HUD src/Dodge/Data/HUD.hs 6;" m HUD src/Dodge/Render/HUD.hs 3;" m HUDElement src/Dodge/Data/HUD.hs 15;" t @@ -1070,7 +1072,7 @@ Location src/Dodge/Item/Location.hs 1;" m LocationLDT src/Dodge/Data/DoubleTree.hs 62;" t Lock src/Dodge/Inventory/Lock.hs 1;" m LockAndKey src/Dodge/LockAndKey.hs 1;" m -LockedInventory src/Dodge/Data/HUD.hs 29;" C +LockedInventory src/Dodge/Data/HUD.hs 35;" C LoneWolf src/Dodge/Data/Creature/State.hs 46;" C LongAI src/Dodge/Data/Creature/Misc.hs 60;" C LongDoor src/Dodge/Room/LongDoor.hs 2;" m @@ -1182,6 +1184,9 @@ MountedLS src/Dodge/Data/MountedObject.hs 12;" C MountedObject src/Dodge/Data/MountedObject.hs 11;" t MountedObject src/Dodge/Data/MountedObject.hs 6;" m MountedProp src/Dodge/Data/MountedObject.hs 13;" C +MouseInvChosen src/Dodge/Data/HUD.hs 25;" C +MouseInvSelect src/Dodge/Data/HUD.hs 23;" C +MouseInventorySelection src/Dodge/Data/HUD.hs 22;" t 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 @@ -1212,10 +1217,10 @@ MvWalking src/Dodge/Data/Creature/Misc.hs 39;" C NAILBOX src/Dodge/Data/Item/Combine.hs 56;" C NInt src/NewInt.hs 15;" C NIntMap src/NewInt.hs 18;" C -NS src/Dodge/Data/CardinalPoint.hs 14;" C -NSE src/Dodge/Data/CardinalPoint.hs 12;" C -NSEW src/Dodge/Data/CardinalPoint.hs 11;" C -NSW src/Dodge/Data/CardinalPoint.hs 13;" C +NS src/Dodge/Data/CardinalPoint.hs 25;" C +NSE src/Dodge/Data/CardinalPoint.hs 23;" C +NSEW src/Dodge/Data/CardinalPoint.hs 22;" C +NSW src/Dodge/Data/CardinalPoint.hs 24;" C NearCosmicRays src/Dodge/Data/Scenario.hs 84;" C NearDustBelt src/Dodge/Data/Scenario.hs 85;" C NearGravityFlux src/Dodge/Data/Scenario.hs 83;" C @@ -1248,6 +1253,7 @@ NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoInvEffect src/Dodge/Data/Item/Effect.hs 20;" C NoItTargeting src/Dodge/Data/Item.hs 44;" C NoLighting src/Dodge/Data/Config.hs 102;" C +NoMouseSel src/Dodge/Data/HUD.hs 22;" C NoMvType src/Dodge/Data/Creature/Misc.hs 38;" C NoNeedWeapon src/Dodge/Room/NoNeedWeapon.hs 2;" m NoObjShads src/Dodge/Data/Config.hs 100;" C @@ -1258,7 +1264,7 @@ NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C NoRoomClipBoundaries src/Dodge/Data/Config.hs 105;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 101;" C -NoSubInventory src/Dodge/Data/HUD.hs 23;" C +NoSubInventory src/Dodge/Data/HUD.hs 29;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 24;" C Noclip src/Dodge/Data/Config.hs 70;" C NodeMTree src/Dodge/Tree/Compose/Data.hs 9;" C @@ -1267,6 +1273,9 @@ NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 73;" C NormalOptions src/Dodge/Data/Universe.hs 68;" C NormalTimeFlow src/Dodge/Data/World.hs 61;" C North src/Dodge/Data/CardinalPoint.hs 4;" C +North8 src/Dodge/Data/CardinalPoint.hs 11;" C +NorthEast8 src/Dodge/Data/CardinalPoint.hs 12;" C +NorthWest8 src/Dodge/Data/CardinalPoint.hs 18;" C NotClose src/Dodge/Data/Machine/Sensor.hs 39;" C NotLink src/Dodge/Data/Room.hs 66;" C NotPushed src/Dodge/Data/Door.hs 30;" C @@ -1756,6 +1765,9 @@ SoundOrigin src/Dodge/Data/SoundOrigin.hs 6;" m SoundStart src/Dodge/Data/WorldEffect.hs 30;" C SoundStatus src/Sound/Data.hs 17;" t South src/Dodge/Data/CardinalPoint.hs 6;" C +South8 src/Dodge/Data/CardinalPoint.hs 15;" C +SouthEast8 src/Dodge/Data/CardinalPoint.hs 14;" C +SouthWest8 src/Dodge/Data/CardinalPoint.hs 16;" C SpaceCity src/Dodge/Data/Scenario.hs 60;" C SpaceColoniser src/Dodge/Data/Scenario.hs 59;" C SpacePort src/Dodge/Data/Scenario.hs 58;" C @@ -1797,7 +1809,7 @@ Strategy src/Dodge/Creature/Strategy.hs 1;" m StrategyActions src/Dodge/Data/ActionPlan.hs 188;" C StrictHelp src/StrictHelp.hs 1;" m StringHelp src/StringHelp.hs 1;" m -SubInventory src/Dodge/Data/HUD.hs 22;" t +SubInventory src/Dodge/Data/HUD.hs 28;" t Superfluous src/Shape/Data.hs 38;" C Surface src/Shape/Data.hs 41;" t Survive src/Dodge/Data/Scenario.hs 5;" C @@ -2105,6 +2117,7 @@ WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 23;" C WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 32;" C Weapons src/Dodge/Item/Held/Weapons.hs 1;" m West src/Dodge/Data/CardinalPoint.hs 7;" C +West8 src/Dodge/Data/CardinalPoint.hs 17;" C Window src/Dodge/Base/Window.hs 2;" m WindowSize src/Dodge/WindowSize.hs 1;" m Wire src/Dodge/Wire.hs 1;" m @@ -2261,15 +2274,15 @@ _camViewDistance src/Dodge/Data/Camera.hs 30;" f _camViewFrom src/Dodge/Data/Camera.hs 29;" f _camZoom src/Dodge/Data/Camera.hs 26;" f _carriage src/Dodge/Data/Creature/Stance.hs 14;" f -_carteCenter src/Dodge/Data/HUD.hs 36;" f -_carteRot src/Dodge/Data/HUD.hs 38;" f -_carteZoom src/Dodge/Data/HUD.hs 37;" f +_carteCenter src/Dodge/Data/HUD.hs 42;" f +_carteRot src/Dodge/Data/HUD.hs 44;" f +_carteZoom src/Dodge/Data/HUD.hs 43;" f _ceSideEffect src/Dodge/Data/Universe.hs 62;" f _ceString src/Dodge/Data/Universe.hs 63;" f _ciInfo src/Dodge/Data/Combine.hs 8;" f _ciInvIDs src/Dodge/Data/Combine.hs 6;" f _ciItem src/Dodge/Data/Combine.hs 7;" f -_ciSections src/Dodge/Data/HUD.hs 28;" f +_ciSections src/Dodge/Data/HUD.hs 34;" f _cigType src/Dodge/Data/Camera.hs 19;" f _clAlt src/Dodge/Data/Cloud.hs 23;" f _clPict src/Dodge/Data/Cloud.hs 21;" f @@ -2293,7 +2306,7 @@ _cldtUp src/Dodge/Data/DoubleTree.hs 46;" f _cldtUp src/Dodge/Data/DoubleTree.hs 54;" f _clickPos src/Dodge/Data/Input.hs 26;" f _clickWorldPos src/Dodge/Data/Input.hs 28;" f -_closeObjects src/Dodge/Data/HUD.hs 39;" f +_closeObjects src/Dodge/Data/HUD.hs 45;" f _cloudEBO src/Data/Preload/Render.hs 49;" f _cloudShader src/Data/Preload/Render.hs 48;" f _cloudVBO src/Data/Preload/Render.hs 47;" f @@ -2572,7 +2585,7 @@ _heldPos src/Dodge/Data/Input.hs 27;" f _heldTriggerType src/Dodge/Data/Item/Use.hs 42;" f _heldWorldPos src/Dodge/Data/Input.hs 29;" f _hud src/Dodge/Data/World.hs 47;" f -_hudElement src/Dodge/Data/HUD.hs 35;" f +_hudElement src/Dodge/Data/HUD.hs 41;" f _humanoidAI src/Dodge/Data/Creature/Misc.hs 69;" f _iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 22;" f _iaMax src/Dodge/Data/Item/Use/Consumption.hs 21;" f @@ -2726,6 +2739,10 @@ _mgField src/Dodge/Data/Magnet.hs 25;" f _mgID src/Dodge/Data/Magnet.hs 22;" f _mgPos src/Dodge/Data/Magnet.hs 24;" f _mgUpdate src/Dodge/Data/Magnet.hs 23;" f +_misChosenEnd src/Dodge/Data/HUD.hs 26;" f +_misChosenStart src/Dodge/Data/HUD.hs 26;" f +_misMaybeEnd src/Dodge/Data/HUD.hs 24;" f +_misSelStart src/Dodge/Data/HUD.hs 24;" f _moEff src/Dodge/Data/Universe.hs 101;" f _moEff1 src/Dodge/Data/Universe.hs 105;" f _moEff2 src/Dodge/Data/Universe.hs 106;" f @@ -2757,8 +2774,8 @@ _newArcStep src/Dodge/Data/Item/Params.hs 25;" f _nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f _nodeTree src/Dodge/Tree/Compose/Data.hs 9;" f _nodesSearched src/Dodge/Data/Creature/Memory.hs 15;" f -_nsMouseOver src/Dodge/Data/HUD.hs 25;" f -_nsSelected src/Dodge/Data/HUD.hs 24;" f +_nsMouseOver src/Dodge/Data/HUD.hs 31;" f +_nsSelected src/Dodge/Data/HUD.hs 30;" f _numLinkEW src/Dodge/Data/Room.hs 33;" f _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 32;" f @@ -3086,7 +3103,7 @@ _tcEffect src/Dodge/Data/Terminal.hs 118;" f _tcHelp src/Dodge/Data/Terminal.hs 117;" f _tcString src/Dodge/Data/Terminal.hs 115;" f _tempLightSources src/Dodge/Data/LWorld.hs 138;" f -_termID src/Dodge/Data/HUD.hs 30;" f +_termID src/Dodge/Data/HUD.hs 36;" f _terminals src/Dodge/Data/LWorld.hs 123;" f _teslaArcs src/Dodge/Data/LWorld.hs 113;" f _testFloat src/Dodge/Data/World.hs 45;" f @@ -3309,7 +3326,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 312;" f +advanceScrollAmount src/Dodge/Update.hs 335;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f aimDelaySweep src/Dodge/Render/ShapePicture.hs 56;" f @@ -3550,12 +3567,12 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f checkBlockHP src/Dodge/Block.hs 46;" f checkDeath src/Dodge/Creature/State.hs 74;" f -checkEndGame src/Dodge/Update.hs 594;" f +checkEndGame src/Dodge/Update.hs 617;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 16;" f -checkTermDist src/Dodge/Update.hs 288;" f +checkTermDist src/Dodge/Update.hs 289;" 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 @@ -3576,7 +3593,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 647;" f +clClSpringVel src/Dodge/Update.hs 670;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 165;" f @@ -3596,14 +3613,14 @@ 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 137;" f +closeObjectInfo src/Dodge/Render/HUD.hs 142;" f closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 69;" f closestCreatureID src/Dodge/Debug.hs 91;" 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 617;" f +cloudEffect src/Dodge/Update.hs 640;" 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 @@ -3632,7 +3649,7 @@ combinationsOf src/Multiset.hs 40;" f combinationsTrie src/Dodge/Combine.hs 41;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineFloors src/Dodge/Room/Procedural.hs 171;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 226;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 231;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f @@ -3673,7 +3690,7 @@ crAdd src/Dodge/Room/RezBox.hs 102;" 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 665;" f +crCrSpring src/Dodge/Update.hs 688;" 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 @@ -3693,7 +3710,7 @@ crNearPoint src/Dodge/Creature/Test.hs 135;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 35;" f crOnWall src/Dodge/WallCreatureCollisions.hs 84;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f -crSpring src/Dodge/Update.hs 660;" f +crSpring src/Dodge/Update.hs 683;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f crUpdate src/Dodge/Creature/State.hs 61;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 50;" f @@ -3837,7 +3854,7 @@ defaultBounds src/Dodge/Data/Bounds.hs 20;" f defaultBullet src/Dodge/Item/Weapon/Bullet.hs 10;" f defaultBulletWeapon src/Dodge/Default/Item.hs 47;" f defaultButton src/Dodge/Default.hs 51;" f -defaultCOSection src/Dodge/Default/World.hs 204;" f +defaultCOSection src/Dodge/Default/World.hs 207;" f defaultCWCam src/Dodge/Default/World.hs 65;" f defaultCWGen src/Dodge/Default/World.hs 55;" f defaultCWorld src/Dodge/Default/World.hs 80;" f @@ -3861,7 +3878,7 @@ defaultDrawButton src/Dodge/Button/Draw.hs 28;" f defaultEquip src/Dodge/Default/Item/Use/Equipment.hs 6;" f defaultEquipUse src/Dodge/Default/Item/Use.hs 23;" f defaultEquipment src/Dodge/Default.hs 27;" f -defaultFiltSection src/Dodge/Default/World.hs 210;" f +defaultFiltSection src/Dodge/Default/World.hs 213;" f defaultFlIt src/Dodge/Default.hs 30;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultHUD src/Dodge/Default/World.hs 151;" f @@ -3871,8 +3888,8 @@ defaultImpulsive src/Dodge/Humanoid.hs 190;" f defaultInanimate src/Dodge/Default/Creature.hs 69;" f defaultInput src/Dodge/Default/World.hs 14;" f defaultIntention src/Dodge/Default/Creature.hs 105;" f -defaultInvSection src/Dodge/Default/World.hs 217;" f -defaultInvSections src/Dodge/Default/World.hs 175;" f +defaultInvSection src/Dodge/Default/World.hs 220;" f +defaultInvSections src/Dodge/Default/World.hs 178;" f defaultInvSize src/Dodge/Default/Creature.hs 79;" f defaultItEffect src/Dodge/Default/Item.hs 55;" f defaultItEffect src/Dodge/Default/Item/Effect.hs 5;" f @@ -3891,8 +3908,8 @@ defaultPerceptionState src/Dodge/Default/Creature.hs 82;" f defaultProp src/Dodge/Default/Prop.hs 6;" f defaultProximitySensor src/Dodge/Default.hs 80;" f defaultRoom src/Dodge/Default/Room.hs 9;" f -defaultSS src/Dodge/Default/World.hs 192;" f -defaultSSSExtra src/Dodge/Default/World.hs 168;" f +defaultSS src/Dodge/Default/World.hs 195;" f +defaultSSSExtra src/Dodge/Default/World.hs 171;" f defaultSelectionList src/Dodge/Default/SelectionList.hs 5;" f defaultSensorWall src/Dodge/Default/Wall.hs 58;" f defaultState src/Dodge/Default/Creature.hs 140;" f @@ -3904,7 +3921,7 @@ defaultVision src/Dodge/Default/Creature.hs 92;" f defaultWall src/Dodge/Default/Wall.hs 10;" f defaultWindow src/Dodge/Default/Wall.hs 74;" f defaultWorld src/Dodge/Default/World.hs 32;" f -defaultYouSection src/Dodge/Default/World.hs 222;" f +defaultYouSection src/Dodge/Default/World.hs 225;" f defocusTerminalInput src/Dodge/Terminal/LeftButton.hs 20;" f degToRad src/Geometry/Vector.hs 117;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -3946,8 +3963,8 @@ displayConfig src/Dodge/Menu.hs 196;" f displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 33;" f displayFreeSlots src/Dodge/DisplayInventory.hs 144;" f -displayTerminal src/Dodge/Render/HUD.hs 253;" f -displayTerminalLineString src/Dodge/Update.hs 340;" f +displayTerminal src/Dodge/Render/HUD.hs 258;" f +displayTerminalLineString src/Dodge/Update.hs 363;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f @@ -4030,7 +4047,7 @@ doWdCrCr src/Dodge/CreatureEffect.hs 12;" f doWdP2f src/Dodge/WdP2f.hs 8;" f doWdWd src/Dodge/WorldEffect.hs 26;" f doWeaponRepetitions src/Dodge/HeldUse.hs 54;" f -doWorldEvents src/Dodge/Update.hs 322;" f +doWorldEvents src/Dodge/Update.hs 345;" 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 @@ -4057,7 +4074,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 101;" f +drawCombineInventory src/Dodge/Render/HUD.hs 106;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 58;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 341;" f @@ -4067,13 +4084,13 @@ drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 56;" f drawDDATest src/Dodge/Debug/Picture.hs 254;" f -drawDIMouseOver src/Dodge/Render/HUD.hs 76;" f -drawDISelections src/Dodge/Render/HUD.hs 83;" f +drawDIMouseOver src/Dodge/Render/HUD.hs 75;" f +drawDISelections src/Dodge/Render/HUD.hs 88;" f drawDoorPaths src/Dodge/Debug/Picture.hs 215;" 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 107;" f +drawExamineInventory src/Dodge/Render/HUD.hs 112;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 232;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f @@ -4081,12 +4098,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 51;" f -drawHUD src/Dodge/Render/HUD.hs 43;" f +drawHP src/Dodge/Render/HUD.hs 50;" f +drawHUD src/Dodge/Render/HUD.hs 42;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 18;" f drawInspectWall src/Dodge/Debug/Picture.hs 207;" f drawInspectWalls src/Dodge/Debug/Picture.hs 195;" f -drawInventory src/Dodge/Render/HUD.hs 60;" f +drawInventory src/Dodge/Render/HUD.hs 59;" 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 @@ -4114,7 +4131,7 @@ 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 155;" f +drawRBOptions src/Dodge/Render/HUD.hs 160;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f drawSelectionCursor src/Dodge/Render/List.hs 41;" f @@ -4128,7 +4145,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 93;" f +drawSubInventory src/Dodge/Render/HUD.hs 98;" f drawSweep src/Dodge/Render/ShapePicture.hs 63;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f @@ -4180,7 +4197,7 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f enterCombineInv src/Dodge/DisplayInventory.hs 239;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f -equipAllocString src/Dodge/Render/HUD.hs 198;" f +equipAllocString src/Dodge/Render/HUD.hs 203;" 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 @@ -4272,7 +4289,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 142;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 147;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 165;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f @@ -4350,6 +4367,7 @@ getLaserColor src/Dodge/HeldUse.hs 193;" f getLaserDamage src/Dodge/HeldUse.hs 190;" f getLaserPhaseV src/Dodge/HeldUse.hs 187;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f +getMouseInvSel src/Dodge/Render/HUD.hs 82;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f getPrettyShort src/AesonHelp.hs 10;" f @@ -4538,7 +4556,7 @@ intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f invAdj src/Dodge/Item/Grammar.hs 181;" f invDimColor src/Dodge/DisplayInventory.hs 138;" f invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f -invHead src/Dodge/Render/HUD.hs 289;" f +invHead src/Dodge/Render/HUD.hs 294;" f invLDT src/Dodge/Item/Grammar.hs 165;" f invRootMap src/Dodge/Item/Grammar.hs 174;" f invRootTrees src/Dodge/Item/Grammar.hs 206;" f @@ -4549,11 +4567,12 @@ invSideEff src/Dodge/Creature/State.hs 161;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f invTrees src/Dodge/Item/Grammar.hs 194;" f invTrees' src/Dodge/Item/Grammar.hs 198;" f -inventoryExtra src/Dodge/Render/HUD.hs 207;" f -inventoryExtraH src/Dodge/Render/HUD.hs 218;" f +inventoryExtra src/Dodge/Render/HUD.hs 212;" f +inventoryExtraH src/Dodge/Render/HUD.hs 223;" f inventoryX src/Dodge/Creature.hs 115;" f -inverseSelNumPos src/Dodge/SelectionSections.hs 172;" f -inverseSelSecYint src/Dodge/SelectionSections.hs 152;" f +inverseSelNumPos src/Dodge/SelectionSections.hs 180;" f +inverseSelSecYint src/Dodge/SelectionSections.hs 155;" f +inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 166;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f invertIntMap src/IntMapHelp.hs 101;" f @@ -4711,7 +4730,7 @@ llleft src/Dodge/Item/Grammar.hs 105;" f llright src/Dodge/Item/Grammar.hs 108;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 120;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 278;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 283;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f @@ -4826,7 +4845,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 580;" f +markWallSeen src/Dodge/Update.hs 603;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 43;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f @@ -4958,7 +4977,7 @@ mvBullet src/Dodge/Bullet.hs 33;" f mvButton src/Dodge/Placement/PlaceSpot.hs 174;" f mvCr src/Dodge/Placement/PlaceSpot.hs 184;" f mvFS src/Dodge/Placement/PlaceSpot.hs 187;" f -mvGust src/Dodge/Update.hs 608;" f +mvGust src/Dodge/Update.hs 631;" f mvLS src/Dodge/Placement/PlaceSpot.hs 215;" f mvP src/Dodge/Wall/Move.hs 54;" f mvPP src/Dodge/Placement/PlaceSpot.hs 181;" f @@ -5212,7 +5231,7 @@ polysToPic src/Polyhedra.hs 129;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posEventEffect src/Dodge/PosEvent.hs 16;" f posRms src/Dodge/Tree/Shift.hs 44;" f -posSelSecYint src/Dodge/SelectionSections.hs 133;" f +posSelSecYint src/Dodge/SelectionSections.hs 136;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f postGenerationProcessing src/Dodge/LevelGen.hs 33;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f @@ -5225,7 +5244,7 @@ powlistUpToN src/Multiset.hs 20;" f powlistUpToN' src/Multiset.hs 9;" f powlistUpToN'' src/Multiset.hs 27;" f ppDraw src/Dodge/Render/ShapePicture.hs 162;" f -ppEvents src/Dodge/Update.hs 573;" f +ppEvents src/Dodge/Update.hs 596;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 81;" f preloadRender src/Preload/Render.hs 30;" f @@ -5509,7 +5528,7 @@ scrollCommandStrings src/Dodge/Update/Scroll.hs 134;" f scrollCommands src/Dodge/Update/Scroll.hs 131;" f scrollDebugInfoInt src/Dodge/Debug.hs 46;" f scrollRBOption src/Dodge/Update/Scroll.hs 108;" f -scrollSelectionSections src/Dodge/SelectionSections.hs 22;" f +scrollSelectionSections src/Dodge/SelectionSections.hs 25;" f scrollTimeBack src/Dodge/Update.hs 201;" f scrollTimeForward src/Dodge/Update.hs 220;" f scrollWatch src/Dodge/Item/Weapon/Utility.hs 30;" f @@ -5526,12 +5545,13 @@ secondColumnParams src/Dodge/ListDisplayParams.hs 42;" 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 349;" f +selNumPos src/Dodge/Render/HUD.hs 354;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 374;" f selSecDrawCursor src/Dodge/Render/List.hs 104;" f selSecDrawCursorAt src/Dodge/Render/List.hs 88;" f -selSecSelCol src/Dodge/Render/HUD.hs 372;" f -selSecSelSize src/Dodge/SelectionSections.hs 129;" f -selSecYint src/Dodge/SelectionSections.hs 138;" f +selSecSelCol src/Dodge/Render/HUD.hs 398;" f +selSecSelSize src/Dodge/SelectionSections.hs 132;" f +selSecYint src/Dodge/SelectionSections.hs 141;" f selectCreatureDebugItem src/Dodge/Debug.hs 38;" f selectUse src/Dodge/SelectUse.hs 11;" f selectedCloseObject src/Dodge/Inventory.hs 216;" f @@ -5552,7 +5572,7 @@ setClusterID src/Dodge/Combine/Graph.hs 103;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 127;" f -setFirstPosSelectionSections src/Dodge/SelectionSections.hs 28;" f +setFirstPosSelectionSections src/Dodge/SelectionSections.hs 31;" f setFromToDams src/Dodge/Bullet.hs 171;" f setHotkey src/Dodge/Hotkey.hs 38;" f setInLinks src/Dodge/RoomLink.hs 51;" f @@ -5566,7 +5586,7 @@ 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 364;" f +setOldPos src/Dodge/Update.hs 387;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f @@ -5661,9 +5681,9 @@ showEquipItem src/Dodge/Item/Display.hs 68;" f showEquipmentNumber src/Dodge/Item/Display.hs 110;" f showInt src/Dodge/Item/Info.hs 31;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f -showManObj src/Dodge/TestString.hs 40;" f +showManObj src/Dodge/TestString.hs 45;" f showTerminalError src/Dodge/Debug/Terminal.hs 76;" f -showTimeFlow src/Dodge/TestString.hs 87;" f +showTimeFlow src/Dodge/TestString.hs 92;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 46;" f @@ -5671,7 +5691,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 55;" f sigmoid src/Dodge/Base.hs 129;" f -simpleCrSprings src/Dodge/Update.hs 656;" f +simpleCrSprings src/Dodge/Update.hs 679;" f simpleDamFL src/Dodge/Flame.hs 41;" f simpleTermMessage src/Dodge/Terminal.hs 249;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f @@ -5754,19 +5774,19 @@ square src/Geometry/Polygon.hs 46;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 41;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 110;" f squashNormalizeV src/Geometry/Vector.hs 146;" f -ssLookupDown src/Dodge/SelectionSections.hs 79;" f -ssLookupGE' src/Dodge/SelectionSections.hs 122;" f -ssLookupGT src/Dodge/SelectionSections.hs 109;" f -ssLookupGT' src/Dodge/SelectionSections.hs 115;" f -ssLookupLE' src/Dodge/SelectionSections.hs 97;" f -ssLookupLT src/Dodge/SelectionSections.hs 84;" f -ssLookupLT' src/Dodge/SelectionSections.hs 90;" f -ssLookupMax src/Dodge/SelectionSections.hs 69;" f -ssLookupMin src/Dodge/SelectionSections.hs 104;" f -ssLookupUp src/Dodge/SelectionSections.hs 74;" f -ssScrollUsing src/Dodge/SelectionSections.hs 33;" f -ssScrollUsing' src/Dodge/SelectionSections.hs 43;" f -ssSetCursor src/Dodge/SelectionSections.hs 57;" f +ssLookupDown src/Dodge/SelectionSections.hs 82;" f +ssLookupGE' src/Dodge/SelectionSections.hs 125;" f +ssLookupGT src/Dodge/SelectionSections.hs 112;" f +ssLookupGT' src/Dodge/SelectionSections.hs 118;" f +ssLookupLE' src/Dodge/SelectionSections.hs 100;" f +ssLookupLT src/Dodge/SelectionSections.hs 87;" f +ssLookupLT' src/Dodge/SelectionSections.hs 93;" f +ssLookupMax src/Dodge/SelectionSections.hs 72;" f +ssLookupMin src/Dodge/SelectionSections.hs 107;" f +ssLookupUp src/Dodge/SelectionSections.hs 77;" f +ssScrollUsing src/Dodge/SelectionSections.hs 36;" f +ssScrollUsing' src/Dodge/SelectionSections.hs 46;" f +ssSetCursor src/Dodge/SelectionSections.hs 60;" f ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 82;" f stackPicturesAtOff src/Dodge/Render/List.hs 85;" f @@ -5855,7 +5875,7 @@ testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 10;" f testInventory src/Dodge/Creature.hs 258;" f testPic src/Dodge/Render/ShapePicture.hs 159;" f -testStringInit src/Dodge/TestString.hs 22;" f +testStringInit src/Dodge/TestString.hs 23;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f textJustifyCenter src/Picture/Base.hs 212;" f @@ -5891,7 +5911,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 344;" f +tmUpdate src/Dodge/Update.hs 367;" f toBothLnk src/Dodge/RoomLink.hs 121;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f @@ -5918,7 +5938,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 320;" f topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f -topTestPart src/Dodge/TestString.hs 35;" f +topTestPart src/Dodge/TestString.hs 40;" f torch src/Dodge/Item/Held/Utility.hs 26;" f torchShape src/Dodge/Item/Draw/SPic.hs 213;" f torqueCr src/Dodge/WorldEffect.hs 70;" f @@ -6033,39 +6053,39 @@ 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 439;" f +updateBullets src/Dodge/Update.hs 462;" f updateCamera src/Dodge/Update/Camera.hs 31;" f updateCloseObjects src/Dodge/Inventory.hs 112;" f -updateCloud src/Dodge/Update.hs 622;" f -updateClouds src/Dodge/Update.hs 468;" f +updateCloud src/Dodge/Update.hs 645;" f +updateClouds src/Dodge/Update.hs 491;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 37;" f updateCombineSections src/Dodge/DisplayInventory.hs 42;" f updateCreature src/Dodge/Creature/Update.hs 10;" f -updateCreatureGroups src/Dodge/Update.hs 408;" f -updateCreatureSoundPositions src/Dodge/Update.hs 386;" f +updateCreatureGroups src/Dodge/Update.hs 431;" f +updateCreatureSoundPositions src/Dodge/Update.hs 409;" f updateDebugMessageOffset src/Dodge/Update.hs 93;" f -updateDelayedEvents src/Dodge/Update.hs 685;" f +updateDelayedEvents src/Dodge/Update.hs 708;" f updateDisplaySections src/Dodge/DisplayInventory.hs 92;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 429;" f +updateDistortions src/Dodge/Update.hs 452;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f -updateEnergyBalls src/Dodge/Update.hs 456;" f +updateEnergyBalls src/Dodge/Update.hs 479;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 189;" 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 453;" f +updateFlames src/Dodge/Update.hs 476;" f updateFlare src/Dodge/Flare.hs 7;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f -updateGusts src/Dodge/Update.hs 605;" f +updateGusts src/Dodge/Update.hs 628;" f updateHeldRootItem src/Dodge/Creature/State.hs 166;" f updateHumanoid src/Dodge/Humanoid.hs 12;" f -updateIMl src/Dodge/Update.hs 400;" f -updateIMl' src/Dodge/Update.hs 404;" f +updateIMl src/Dodge/Update.hs 423;" f +updateIMl' src/Dodge/Update.hs 427;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 109;" f -updateInstantBullets src/Dodge/Update.hs 545;" f +updateInstantBullets src/Dodge/Update.hs 568;" f updateInv src/Dodge/Creature/State.hs 151;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f updateItemTargeting src/Dodge/Creature/State.hs 267;" f @@ -6074,19 +6094,20 @@ updateKeyInGame src/Dodge/Update/Input/InGame.hs 103;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 92;" f updateLampoid src/Dodge/Lampoid.hs 12;" f updateLaser src/Dodge/Laser/Update.hs 13;" f -updateLasers src/Dodge/Update.hs 329;" f -updateLightSources src/Dodge/Update.hs 432;" f +updateLasers src/Dodge/Update.hs 352;" f +updateLightSources src/Dodge/Update.hs 455;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 129;" f -updateMIM src/Dodge/Update.hs 558;" f +updateMIM src/Dodge/Update.hs 581;" f updateMachine src/Dodge/Machine/Update.hs 16;" f -updateMouseOverInventory src/Dodge/Update.hs 296;" f +updateMouseInventorySelection src/Dodge/Update.hs 297;" f +updateMouseOverInventory src/Dodge/Update.hs 320;" f updateMovement src/Dodge/Creature/State.hs 330;" f -updateObjCatMaybes src/Dodge/Update.hs 420;" f -updateObjMapMaybe src/Dodge/Update.hs 413;" f -updatePastWorlds src/Dodge/Update.hs 318;" f +updateObjCatMaybes src/Dodge/Update.hs 443;" f +updateObjMapMaybe src/Dodge/Update.hs 436;" f +updatePastWorlds src/Dodge/Update.hs 341;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f -updatePosEvents src/Dodge/Update.hs 465;" f +updatePosEvents src/Dodge/Update.hs 488;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 67;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 70;" f @@ -6094,9 +6115,9 @@ updateProjectile src/Dodge/Projectile/Update.hs 22;" 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 435;" f +updateRadarBlips src/Dodge/Update.hs 458;" f updateRadarSweep src/Dodge/RadarSweep.hs 25;" f -updateRadarSweeps src/Dodge/Update.hs 459;" f +updateRadarSweeps src/Dodge/Update.hs 482;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 105;" f updateRootItemID src/Dodge/Inventory/Location.hs 37;" f @@ -6105,19 +6126,19 @@ updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 171;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 150;" f -updateSeenWalls src/Dodge/Update.hs 576;" f +updateSeenWalls src/Dodge/Update.hs 599;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f -updateShockwaves src/Dodge/Update.hs 450;" f +updateShockwaves src/Dodge/Update.hs 473;" 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 462;" f +updateSparks src/Dodge/Update.hs 485;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 29;" f -updateTeslaArcs src/Dodge/Update.hs 444;" f +updateTeslaArcs src/Dodge/Update.hs 467;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 447;" f +updateTractorBeams src/Dodge/Update.hs 470;" f updateTurret src/Dodge/Machine/Update.hs 31;" f updateUniverse src/Dodge/Update.hs 73;" f updateUniverseFirst src/Dodge/Update.hs 84;" f @@ -6128,7 +6149,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 20;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 12;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f updateWheelEvent src/Dodge/Update/Scroll.hs 20;" f -updateWheelEvents src/Dodge/Update.hs 305;" f +updateWheelEvents src/Dodge/Update.hs 328;" f updateWorldEventFlag src/Dodge/Update.hs 113;" f updateWorldEventFlags src/Dodge/Update.hs 104;" f upperBody src/Dodge/Creature/Picture.hs 133;" f @@ -6281,7 +6302,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 149;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 154;" 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 @@ -6298,9 +6319,9 @@ zipCount src/Dodge/Tree/Shift.hs 129;" f zipCountDown src/Dodge/Room/Procedural.hs 117;" f zipWithDefaults src/Dodge/Item/Display.hs 21;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f -zoneClouds src/Dodge/Update.hs 337;" f +zoneClouds src/Dodge/Update.hs 360;" f zoneCreature src/Dodge/Zoning/Creature.hs 52;" f -zoneCreatures src/Dodge/Update.hs 381;" f +zoneCreatures src/Dodge/Update.hs 404;" 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