diff --git a/data/dodge.config.json b/data/dodge.config.json index 54808efa1..9ad16e44f 100644 --- a/data/dodge.config.json +++ b/data/dodge.config.json @@ -2,7 +2,6 @@ "_debug_booleans": [ "Show_ms_frame", "Show_sound", - "Noclip", "Select_creature" ], "_debug_view_clip_bounds": "NoRoomClipBoundaries", diff --git a/ghcidOutput b/ghcidOutput index 312ead50b..9364c708d 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,14 +1,5 @@ -/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:70:31-47: error: - • Data constructor not in scope: - CrWeaponFailSound :: Int -> SoundOrigin - • Perhaps you meant ‘CrWeaponSound’ (imported from Dodge.Data.World) +/home/justin/Haskell/loop/src/Dodge/Render/ShapePicture.hs:61:19: warning: [-Wunused-matches] + Defined but not used: ‘cfig’ | -70 | Just 0 -> soundStart (CrWeaponFailSound (_crID cr)) (_crPos cr) click1S Nothing w - | ^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:71:29-45: error: - • Data constructor not in scope: - CrWeaponFailSound :: Int -> SoundOrigin - • Perhaps you meant ‘CrWeaponSound’ (imported from Dodge.Data.World) - | -71 | _ -> soundContinue (CrWeaponFailSound (_crID cr)) (_crPos cr) click1S Nothing w - | ^^^^^^^^^^^^^^^^^ +61 | drawDIMouseOver w cfig = fromMaybe mempty $ do + | ^^^^ diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index 6e8d695c6..737e2564b 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -35,7 +35,7 @@ yourControl _ w intopinv = fromMaybe False $ do subinv <- w ^? hud . hudElement . subInventory Just $ case subinv of - NoSubInventory -> True + NoSubInventory{} -> True _ -> False handleHotkeys :: World -> World @@ -169,7 +169,7 @@ pressedMBEffectsTopInventory pkeys w where youhammerdown = set (cWorld . lWorld . creatures . ix 0 . crHammerPosition) HammerDown inTopInv = case w ^. hud . hudElement of - DisplayInventory{_subInventory = NoSubInventory} -> True + DisplayInventory{_subInventory = NoSubInventory{}} -> True _ -> False isDown but = but `M.member` pkeys rotation = diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index f599e4a4b..6a56a133d 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -21,6 +21,9 @@ data HUDElement data SubInventory = NoSubInventory + { _nsSelected :: Maybe (Int,Int) + , _nsMouseOver :: Maybe Int + } | ExamineInventory | CombineInventory { _ciSections :: SelectionSections CombinableItem } | LockedInventory diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index deb8cfd9a..0731a270e 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -161,7 +161,7 @@ defaultHUD = defaultDisplayInventory :: HUDElement defaultDisplayInventory = DisplayInventory - { _subInventory = NoSubInventory + { _subInventory = NoSubInventory {_nsSelected = Just (0,2), _nsMouseOver = Just 3} , _diSections = defaultInvSections } diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 5a8d284b2..a88971964 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -30,7 +30,8 @@ import Regex toggleCombineInv :: Universe -> Universe toggleCombineInv uv = case uv ^? uvWorld . hud . hudElement . subInventory of - Just CombineInventory{} -> uv & uvWorld . hud . hudElement . subInventory .~ NoSubInventory + Just CombineInventory{} -> uv & uvWorld . hud . hudElement . subInventory + .~ NoSubInventory Nothing Nothing _ -> uv & uvWorld %~ enterCombineInv (uv ^. uvConfig) updateCombinePositioning :: Universe -> Universe diff --git a/src/Dodge/InputFocus.hs b/src/Dodge/InputFocus.hs index 2da798ca9..0300f1435 100644 --- a/src/Dodge/InputFocus.hs +++ b/src/Dodge/InputFocus.hs @@ -30,7 +30,7 @@ regexScope :: Maybe ((SSSExtra -> f SSSExtra) -> HUDElement -> f HUDElement, Int) regexScope w = case w ^? hud . hudElement . subInventory of - Just NoSubInventory -> case he ^? diSections . sssExtra . sssSelPos . _Just of + Just NoSubInventory{} -> case he ^? diSections . sssExtra . sssSelPos . _Just of Just (-1, _) -> di (-1) Just (0, _) -> di (-1) Just (2, _) -> di 2 @@ -49,7 +49,7 @@ regexFocus :: Maybe ((SSSExtra -> f SSSExtra) -> HUDElement -> f HUDElement, Int) regexFocus w = case w ^? hud . hudElement . subInventory of - Just NoSubInventory -> case he ^? diSections . sssExtra . sssSelPos . _Just of + Just NoSubInventory{} -> case he ^? diSections . sssExtra . sssSelPos . _Just of Just (-1, _) -> di (-1) Just (2, _) -> di 2 _ -> Nothing @@ -71,7 +71,7 @@ inputFocus :: World -> Maybe ((String -> f String) -> World -> f World) inputFocus w = case w ^? hud . hudElement . subInventory of - Just NoSubInventory -> case he ^? diSections . sssExtra . sssSelPos . _Just of + Just NoSubInventory{} -> case he ^? diSections . sssExtra . sssSelPos . _Just of Just (-1, _) -> di (-1) Just (2, _) -> di 2 _ -> Nothing diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 0f27d2f5e..c17c1110e 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -9,11 +9,11 @@ module Dodge.Item.Grammar ( allInvLocs, ) where -import Dodge.Data.ComposedItem import Control.Applicative import Data.Bifunctor import qualified Data.IntMap.Strict as IM import Data.Maybe +import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Dodge.Data.Item import Dodge.DoubleTree @@ -21,15 +21,18 @@ import Dodge.Item.Orientation import LensHelp import ListHelp -useBreakL :: [(ItemStructuralFunction, ComposeLinkType)] - -> [(ItemStructuralFunction, ComposeLinkType)] - -> LinkTest +useBreakL :: + [(ItemStructuralFunction, ComposeLinkType)] -> + [(ItemStructuralFunction, ComposeLinkType)] -> + LinkTest useBreakL x y = useBreakListsLinkTest (map (uncurry noa) x) (map (uncurry noa) y) where noa a b = (a, ILink b orientAttachment) -useBreakListsLinkTest :: [(ItemStructuralFunction, ItemLink)] - -> [(ItemStructuralFunction, ItemLink)] -> LinkTest +useBreakListsLinkTest :: + [(ItemStructuralFunction, ItemLink)] -> + [(ItemStructuralFunction, ItemLink)] -> + LinkTest useBreakListsLinkTest llist rlist = LTest ltest rtest where ltest (_, sf, _) = do @@ -41,40 +44,42 @@ useBreakListsLinkTest llist rlist = LTest ltest rtest (_, linktype) <- safeHead xs return $ LUpdate linktype (set _3 (useBreakListsLinkTest llist (tail xs))) id -itemToBreakLists - :: ComposedItem - -> ([(ItemStructuralFunction, ComposeLinkType)] , [(ItemStructuralFunction, ComposeLinkType)]) -itemToBreakLists ci = case (itm ^. itType,ci ^. cItemFunction) of --- HELD TORCH -> (getAmmoLinks itm,[]) - (_,WeaponPlatformSF) -> - ( getAmmoLinks itm - , [(WeaponTargetingSF,WeaponTargetingLink), (WeaponScopeSF,WeaponScopeLink)] - ) --- AMMOMAG {} -> fromMaybe ([],[]) $ do - (_,AmmoMagSF {}) -> fromMaybe ([],[]) $ do +itemToBreakLists :: + ComposedItem -> + ([(ItemStructuralFunction, ComposeLinkType)], [(ItemStructuralFunction, ComposeLinkType)]) +itemToBreakLists ci = case (itm ^. itType, ci ^. cItemFunction) of + (HELD TORCH,_) -> (getAmmoLinks itm,[]) + (_, WeaponPlatformSF) -> + ( getAmmoLinks itm + , [(WeaponTargetingSF, WeaponTargetingLink), (WeaponScopeSF, WeaponScopeLink)] + ) + (_, AmmoMagSF{}) -> fromMaybe ([], []) $ do atype <- itm ^? itUse . amagType - return - ([ (AmmoModifierSF atype, AmmoModLink) - , (AmmoTargetingSF atype, AmmoTargetingLink) - , (AmmoPayloadSF atype, AmmoPayloadLink) - , (AmmoEffectSF atype, AmmoEffectLink) - , (RemoteScreenSF, RemoteScreenLink) - ],[]) - (_,WeaponTargetingSF) -> (getAmmoLinks itm ++ [(AugmentedHUDSF,AugmentedHUDLink)],[]) - _ -> ([],[]) + return + ( + [ (AmmoModifierSF atype, AmmoModLink) + , (AmmoTargetingSF atype, AmmoTargetingLink) + , (AmmoPayloadSF atype, AmmoPayloadLink) + , (AmmoEffectSF atype, AmmoEffectLink) + , (RemoteScreenSF, RemoteScreenLink) + ] + , [] + ) + (_, WeaponTargetingSF) -> (getAmmoLinks itm ++ [(AugmentedHUDSF, AugmentedHUDLink)], []) + _ -> ([], []) where itm = ci ^. cItem getAmmoLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] -getAmmoLinks itm = map - (\(i, a) -> (AmmoMagSF a,AmmoInLink i a)) - (IM.toList $ itm ^. itAmmoSlots) +getAmmoLinks itm = + map + (\(i, a) -> (AmmoMagSF a, AmmoInLink i a)) + (IM.toList $ itm ^. itAmmoSlots) itemToFunction :: Item -> ItemStructuralFunction itemToFunction itm = case itm ^. itType of - HELD TORCH -> WeaponScopeSF - HELD {} -> WeaponPlatformSF - AMMOMAG {} -> maybe UncomposableIsolateSF AmmoMagSF $ itm ^? itUse . amagType + HELD{} -> WeaponPlatformSF + AMMOMAG{} -> maybe UncomposableIsolateSF AmmoMagSF $ itm ^? itUse . amagType ATTACH REMOTESCREEN -> RemoteScreenSF ATTACH BULLETSYNTHESIZER -> AmmoModifierSF BulletAmmo ATTACH ZOOMSCOPE -> WeaponScopeSF @@ -87,7 +92,7 @@ itemToFunction itm = case itm ^. itType of _ -> UncomposableIsolateSF pciToCI :: PartiallyComposedItem -> ComposedItem -pciToCI (x,y,_) = CItem x y +pciToCI (x, y, _) = CItem x y basePCI :: Item -> PartiallyComposedItem basePCI itm = case _itType itm of @@ -106,9 +111,11 @@ llright itm pci = case pci ^. _1 . itType of _ -> _tryRightLink (uncurry useBreakL $ itemToBreakLists (CItem itm WeaponTargetingSF)) pci toLasgunUpdate :: Item -> LinkUpdate -toLasgunUpdate itm = LUpdate (ILink FunctionChangeLink orientAttachment) - (\(par,_,_) -> (par,WeaponPlatformSF,uncurry useBreakL $ itemToBreakLists (CItem itm WeaponPlatformSF))) - (\(chi,_,up) -> (chi,FunctionChangeSF,up)) +toLasgunUpdate itm = + LUpdate + (ILink FunctionChangeLink orientAttachment) + (\(par, _, _) -> (par, WeaponPlatformSF, uncurry useBreakL $ itemToBreakLists (CItem itm WeaponPlatformSF))) + (\(chi, _, up) -> (chi, FunctionChangeSF, up)) --itemLinkTestLeft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate --itemLinkTestLeft itm = _tryLeftLink $ @@ -197,15 +204,15 @@ invTrees' = IM.unions . map (ldtToIM getindex . fmap (^. _1)) . map (fmap (\(x, -- returns an intmap with trees for root items, indexed by inventory position invRootTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ItemLink ComposedItem) -invRootTrees = IM.fromDistinctAscList . reverse . map (getid . fmap (\(x, y, _) -> CItem x y)) . invLDT +invRootTrees = IM.fromDistinctAscList . reverse . map (getid . fmap (\(x, y, _) -> CItem x y)) . invLDT where - getid :: LabelDoubleTree ItemLink ComposedItem -> (Int,LabelDoubleTree ItemLink ComposedItem) + getid :: LabelDoubleTree ItemLink ComposedItem -> (Int, LabelDoubleTree ItemLink ComposedItem) getid t = (t ^?! ldtValue . cItem . itLocation . ilInvID, t) -- returns an intmap with indents and locations for all items -allInvLocs :: IM.IntMap Item -> IM.IntMap (Int,LocationLDT ItemLink ComposedItem) +allInvLocs :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink ComposedItem) allInvLocs inv = foldMap (f . LocLDT TopLDT) (IM.elems (invRootTrees inv)) mempty where f t = cldtPropagateFold h h g 0 t id h x _ _ _ = x + 1 - g x ldt = (.) (IM.insert (ldt ^?! locLDT . ldtValue . cItem . itLocation . ilInvID) (x,ldt)) + g x ldt = (.) (IM.insert (ldt ^?! locLDT . ldtValue . cItem . itLocation . ilInvID) (x, ldt)) diff --git a/src/Dodge/ListDisplayParams.hs b/src/Dodge/ListDisplayParams.hs index 5a60bf301..68a349b6a 100644 --- a/src/Dodge/ListDisplayParams.hs +++ b/src/Dodge/ListDisplayParams.hs @@ -61,7 +61,7 @@ determineInvSelCursorWidth w = case _rbOptions w of | otherwise -> topInvW where hasnosubinv = case w ^? hud . hudElement . subInventory of - Just NoSubInventory -> True + Just NoSubInventory{} -> True _ -> False optionListDisplayParams :: ListDisplayParams diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index dc1e6ed7b..a544d6067 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -2,6 +2,7 @@ module Dodge.Render.HUD ( drawHUD, + selNumPos, -- this shoud probably be pushed back here ) where import Control.Lens @@ -70,7 +71,7 @@ drawInventory sss w cfig = drawSubInventory :: SubInventory -> Configuration -> World -> Picture drawSubInventory subinv cfig w = case subinv of LockedInventory -> mempty -- topInvCursor col cursPos cfig w - NoSubInventory -> drawRBOptions cfig w + NoSubInventory{} -> drawRBOptions cfig w ExamineInventory -> drawExamineInventory cfig w DisplayTerminal tid -> displayTerminal tid cfig (w ^. cWorld . lWorld) CombineInventory{_ciSections = sss} -> drawCombineInventory cfig sss w diff --git a/src/Dodge/Render/List.hs b/src/Dodge/Render/List.hs index 3f68196b8..73a28fc5e 100644 --- a/src/Dodge/Render/List.hs +++ b/src/Dodge/Render/List.hs @@ -10,6 +10,7 @@ module Dodge.Render.List ( stackPicturesAt, toTopLeft, listCursorChooseBorderScale, + selSecDrawCursorAt, ) where import Dodge.SelectionSections @@ -84,9 +85,8 @@ stackPicturesAt = stackPicturesAtOff 0 stackPicturesAtOff :: Int -> [Picture] -> Picture stackPicturesAtOff i = mconcat . zipWith (drawListElement 10 1 0) [i, i -1 ..] -selSecDrawCursor :: Int -> ListDisplayParams -> SelectionSections a -> Picture -selSecDrawCursor xsize ldp sss = fromMaybe mempty $ do - (i, j) <- sss ^? sssExtra . sssSelPos . _Just +selSecDrawCursorAt :: (Int,Int) -> Int -> ListDisplayParams -> SelectionSections a -> Picture +selSecDrawCursorAt (i,j) xsize ldp sss = fromMaybe mempty $ do yint <- selSecYint i j sss xint <- sss ^? sssSections . ix i . ssIndent si <- sss ^? sssSections . ix i . ssItems . ix j @@ -101,6 +101,11 @@ selSecDrawCursor xsize ldp sss = fromMaybe mempty $ do xsize (_siHeight si) +selSecDrawCursor :: Int -> ListDisplayParams -> SelectionSections a -> Picture +selSecDrawCursor xsize ldp sss = maybe mempty + (\x -> selSecDrawCursorAt x xsize ldp sss) + (sss ^? sssExtra . sssSelPos . _Just) + -- displays a cursor that should match up to list text pictures listCursorChooseBorderScale :: Float -> diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index 4fec12682..fa6ee30fa 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -2,23 +2,27 @@ module Dodge.Render.ShapePicture ( worldSPic, ) where -import Data.Strict.Tuple -import NewInt -import Dodge.Render.List +import Dodge.Render.HUD +import Dodge.ListDisplayParams +import qualified Data.Map.Strict as M import Control.Lens import Control.Monad (guard) import Data.Foldable import Data.Maybe +import Data.Strict.Tuple import Dodge.Base import Dodge.Creature.Picture import Dodge.Data.Universe import Dodge.Debug.Picture import Dodge.Draw import Dodge.RadarBlip +import Dodge.Render.List import Dodge.Render.Picture import Geometry import qualified IntMapHelp as IM +import NewInt import Picture +import qualified SDL import Shape import ShapePicture @@ -35,12 +39,40 @@ worldSPic cfig u = <> foldup btSPic (filtOn _btPos _buttons) <> foldup mcSPic (filtOn _mcPos _machines) <> aimDelaySweep w + <> drawMouseSelection w + <> drawDISelections w cfig + <> drawDIMouseOver w cfig where w = _uvWorld u foldup = foldMap' filtOn f g = IM.filter (pointIsClose . f) (g (_lWorld (_cWorld w))) pointIsClose = cullPoint cfig w +drawMouseSelection :: World -> SPic +drawMouseSelection w = fromMaybe mempty $ do + guard (SDL.ButtonLeft `M.member` (w ^. input . mouseButtons) + && not (SDL.ButtonRight `M.member` (w ^. input . mouseButtons)) + ) + p <- w ^? input . clickPos . ix SDL.ButtonLeft + return $ noShape $ color (withAlpha 0.5 white) + $ setLayer FixedCoordLayer $ polygon $ reverse $ rectVV p (w ^. input . mousePos) + +drawDIMouseOver :: World -> Configuration -> SPic +drawDIMouseOver w cfig = fromMaybe mempty $ do + i <- w ^? hud . hudElement . subInventory . nsMouseOver . _Just + sss <- w ^? hud . hudElement . diSections + let idp = invDisplayParams w + return . noShape . setLayer FixedCoordLayer . color white $ selSecDrawCursorAt (0,i) 10 idp sss + +drawDISelections :: World -> Configuration -> SPic +drawDISelections w cfig = fromMaybe mempty $ do + (i,j) <- w ^? hud . hudElement . subInventory . nsSelected . _Just + sss <- w ^? hud . hudElement . diSections + let idp = invDisplayParams w + tp <- selNumPos cfig idp sss 0 i + bp <- selNumPos cfig idp sss 0 j + return . noShape . setLayer FixedCoordLayer . color red $ line [tp,bp] + aimDelaySweep :: World -> SPic aimDelaySweep w = fromMaybe mempty $ do cr <- w ^? cWorld . lWorld . creatures . ix 0 @@ -85,8 +117,8 @@ drawCreature cr = case _crType cr of lampCrSPic :: Float -> SPic lampCrSPic h = - colorSH blue (upperBox Small Typical h $ rectWH 5 5) - :!: setLayer BloomLayer (setDepth h . color white $ circleSolid 3) + colorSH blue (upperBox Small Typical h $ rectWH 5 5) + :!: setLayer BloomLayer (setDepth h . color white $ circleSolid 3) picAtCrPos1 :: Picture -> Creature -> SPic --{-# INLINE picAtCrPos #-} @@ -125,19 +157,23 @@ extraPics cfig u = <> foldMap drawBul (_bullets lw) <> foldMap drawBlip (_radarBlips lw) <> _flares lw --- <> foldMap (dbArg (drawBeam . _bmDraw)) (_positronBeams $ _beams lw) --- <> foldMap (dbArg (drawBeam . _bmDraw)) (_electronBeams $ _beams lw) + -- <> foldMap (dbArg (drawBeam . _bmDraw)) (_positronBeams $ _beams lw) + -- <> foldMap (dbArg (drawBeam . _bmDraw)) (_electronBeams $ _beams lw) <> foldMap (dbArg (drawLightSource . _lsPict)) (_lightSources lw) <> testPic cfig w <> foldMap ppDraw (_pressPlates lw) <> viewClipBounds cfig w <> debugDraw cfig w <> foldMap (`_debugPic` u) (_uvDebug u) - <> setLayer FixedCoordLayer - (toTopLeft cfig . translate (1.3* halfWidth cfig) 0 - . drawList - . take 50 . drop (u ^. uvDebugMessageOffset) - . map text $ foldMap (`_debugMessage` u) (_uvDebug u)) + <> setLayer + FixedCoordLayer + ( toTopLeft cfig . translate (1.3 * halfWidth cfig) 0 + . drawList + . take 50 + . drop (u ^. uvDebugMessageOffset) + . map text + $ foldMap (`_debugMessage` u) (_uvDebug u) + ) where w = u ^. uvWorld lw = w ^. cWorld . lWorld @@ -151,7 +187,8 @@ ppDraw c = uncurryV translate (_ppPos c) $ rotate (_ppRot c) (_ppPict c) floorItemSPic :: FloorItem -> SPic floorItemSPic flit = uncurryV translateSPxy (_flItPos flit) $ - rotateSP (_flItRot flit) + rotateSP + (_flItRot flit) (itemSPic $ _flIt flit) btSPic :: Button -> SPic @@ -163,4 +200,3 @@ mcSPic :: Machine -> SPic mcSPic mc = uncurryV translateSPxy (_mcPos mc) $ rotateSP (_mcDir mc) (drawMachine mc) - diff --git a/src/Dodge/Terminal.hs b/src/Dodge/Terminal.hs index a7143aa5f..d55f7e071 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 + Just _ -> w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing _ -> w damageCodeCommand :: TerminalCommand diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index a92932669..d73cc6625 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -288,7 +288,7 @@ 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) + return (w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing) updateWheelEvents :: World -> World diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index b81042ab5..c521c9d8e 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -40,7 +40,8 @@ updateUseInputInGame u = case u ^. uvWorld . hud . hudElement of u & uvWorld . cWorld . lWorld . terminals . ix tmid . tmInput . tiFocus %~ const True CombineInventory{_ciSections = sss} | inSubInvRegex (u ^. uvWorld) -> - u & uvWorld . hud . hudElement . subInventory . ciSections + u + & uvWorld . hud . hudElement . subInventory . ciSections %~ doRegexInput (u ^. uvWorld . input) (-1) & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () | lbinitialpress -> @@ -116,7 +117,7 @@ updateInitialPressInGame uv sc = case sc of ScancodeP -> pauseGame uv ScancodeF -> over uvWorld youDropItem uv ScancodeM -> toggleMap uv --- ScancodeR -> over (uvWorld . cWorld . lWorld . creatures . ix 0) crReloadToggle uv + -- ScancodeR -> over (uvWorld . cWorld . lWorld . creatures . ix 0) crReloadToggle uv ScancodeT -> over uvWorld testEvent uv ScancodeX -> uv & uvWorld %~ toggleTweakInv ScancodeC -> toggleCombineInv uv @@ -158,11 +159,11 @@ doRegexInput inp i sss updateBackspaceRegex :: World -> World updateBackspaceRegex w = case di ^? subInventory of - Just NoSubInventory + Just NoSubInventory{} | secfocus (-1) 0 -> w & hud . hudElement . diSections %~ trybackspace (-1) & worldEventFlags . at InventoryChange ?~ () - Just NoSubInventory + Just NoSubInventory{} | secfocus 2 3 -> w & hud . hudElement . diSections %~ trybackspace 2 & worldEventFlags . at InventoryChange ?~ () @@ -187,11 +188,11 @@ updateBackspaceRegex w = case di ^? subInventory of updateEnterRegex :: World -> World updateEnterRegex w = case w ^? hud . hudElement . subInventory of - Just NoSubInventory + Just NoSubInventory{} | secfocus (-1) 0 -> w & hud . hudElement . diSections . sssExtra . sssSelPos ?~ (-1, 0) & hud . hudElement . diSections %~ enterregex (-1) - Just NoSubInventory + Just NoSubInventory{} | secfocus 2 3 -> w & hud . hudElement . diSections . sssExtra . sssSelPos ?~ (2, 0) & hud . hudElement . diSections %~ enterregex 2 @@ -216,7 +217,7 @@ pauseGame u = u & uvScreenLayers .~ [pauseMenu u] spaceAction :: World -> World spaceAction w = case w ^. hud . hudElement of DisplayCarte -> w & hud . carteCenter .~ theLoc - DisplayInventory{_subInventory = NoSubInventory} -> case selectedCloseObject w of + DisplayInventory{_subInventory = NoSubInventory{}} -> case selectedCloseObject w of Just (Left flit) -> pickUpItem 0 flit w & worldEventFlags . at InventoryChange ?~ () @@ -225,9 +226,9 @@ spaceAction w = case w ^. hud . hudElement of & worldEventFlags . at InventoryChange ?~ () _ -> w DisplayInventory{_subInventory = DisplayTerminal{}} -> - w & hud . hudElement . subInventory .~ NoSubInventory + w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing & worldEventFlags . at InventoryChange ?~ () - _ -> w & hud . hudElement . subInventory .~ NoSubInventory + _ -> w & hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing where theLoc = doWorldPos @@ -238,25 +239,30 @@ toggleMap :: Universe -> Universe toggleMap u = case u ^. uvWorld . hud . hudElement of DisplayCarte -> u & uvWorld . hud . hudElement - .~ DisplayInventory{_subInventory = NoSubInventory, _diSections = defaultInvSections} + .~ DisplayInventory + { _subInventory = NoSubInventory Nothing Nothing + , _diSections = defaultInvSections + } _ -> u & uvWorld . hud . hudElement .~ DisplayCarte toggleTweakInv :: World -> World toggleTweakInv w = case w ^? hud . hudElement . subInventory of - Just ExamineInventory{} -> w & thepointer .~ NoSubInventory + Just ExamineInventory{} -> w & thepointer .~ NoSubInventory Nothing Nothing _ -> w & thepointer .~ ExamineInventory -- mi where thepointer = hud . hudElement . subInventory + -- mi = 0 <$ (yourSelectedItem w >>= (^? itTweaks . tweakParams . ix 0)) tryCombine :: SelectionSections CombinableItem -> World -> World tryCombine sss w = fromMaybe w $ do (i, j) <- sss ^? sssExtra . sssSelPos . _Just CombinableItem is it _ <- sss ^? sssSections . ix i . ssItems . ix j . siPayload - return $ snd (createItemYou it (foldr (destroyInvItem 0) w (sort is))) - & cWorld . lWorld . creatures . ix 0 . crHammerPosition .~ HammerDown + return $ + snd (createItemYou it (foldr (destroyInvItem 0) w (sort is))) + & cWorld . lWorld . creatures . ix 0 . crHammerPosition .~ HammerDown maybeExitCombine :: Universe -> Universe maybeExitCombine u | ButtonRight `M.member` (u ^. uvWorld . input . mouseButtons) = u - | otherwise = u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory + | otherwise = u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory Nothing Nothing diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index 76ffeb407..fbcbf6d47 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -22,7 +22,7 @@ updateWheelEvent yi w = case w ^. hud . hudElement of DisplayCarte | bdown ButtonRight -> w & hud . carteZoom %~ min 0.75 . max 0.05 . ((1 + y * 0.1) *) | otherwise -> w & cWorld . lWorld . selLocation %~ (`mod` numLocs) . (+ yi) - DisplayInventory{_subInventory = NoSubInventory} + DisplayInventory{_subInventory = NoSubInventory{}} -- functions that modify the inventory should be centralised so that -- this lock can be sensibly applied, perhaps | w ^?! cWorld . lWorld . creatures . ix 0 . crInvLock -> w diff --git a/src/Geometry/Polygon.hs b/src/Geometry/Polygon.hs index cf0bd7043..96f6d8339 100644 --- a/src/Geometry/Polygon.hs +++ b/src/Geometry/Polygon.hs @@ -35,6 +35,14 @@ rectXH x h = rectNSWE h (- h) 0 x rectXY :: Float -> Float -> [Point2] rectXY x y = rectNSWE y 0 0 x +rectVV :: Point2 -> Point2 -> [Point2] +rectVV (V2 x y) (V2 a b) = rectNSWE n s w e + where + (e,w) | x > a = (x,a) + | otherwise = (a,x) + (n,s) | y > b = (y,b) + | otherwise = (b,y) + square :: Float -> [Point2] square n = rectWH n n diff --git a/tags b/tags index 6a55aaa4f..cc16e62bc 100644 --- a/tags +++ b/tags @@ -132,7 +132,7 @@ BackgroundSound src/Dodge/Data/SoundOrigin.hs 14;" C Ball src/Dodge/Tesla/Ball.hs 1;" m Bark src/Dodge/Data/ActionPlan.hs 40;" C Barrel src/Dodge/Data/Creature/State.hs 30;" C -BarrelHiss src/Dodge/Data/SoundOrigin.hs 30;" C +BarrelHiss src/Dodge/Data/SoundOrigin.hs 31;" C BarrelType src/Dodge/Data/Creature/Misc.hs 76;" t Barreloid src/Dodge/Data/Creature/Misc.hs 71;" C Barreloid src/Dodge/Barreloid.hs 1;" m @@ -176,7 +176,7 @@ Block src/Dodge/Data/Block.hs 6;" m Block src/Dodge/Default/Block.hs 1;" m Block src/Dodge/Placement/Instance/Block.hs 1;" m Block src/Dodge/Placement/PlaceSpot/Block.hs 2;" m -BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 28;" C +BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 29;" C BlockDraw src/Dodge/Data/Block.hs 38;" t BlockDrawBlSh src/Dodge/Data/Block.hs 40;" C BlockDrawColHeightPoss src/Dodge/Data/Block.hs 42;" C @@ -332,7 +332,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 25;" C +CombineInventory src/Dodge/Data/HUD.hs 28;" C CombineInventoryChange src/Dodge/Data/World.hs 34;" C Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m @@ -380,7 +380,7 @@ CrGroupParams src/Dodge/Data/CrGroupParams.hs 14;" t CrGroupParams src/Dodge/Data/CrGroupParams.hs 6;" m CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" t CrGroupUpdate src/Dodge/CrGroupUpdate.hs 1;" m -CrHitSound src/Dodge/Data/SoundOrigin.hs 29;" C +CrHitSound src/Dodge/Data/SoundOrigin.hs 30;" C CrID src/Dodge/Data/CrWlID.hs 12;" C CrImp src/Dodge/Data/CreatureEffect.hs 23;" t CrInt src/Dodge/Data/Item/Location.hs 22;" t @@ -398,6 +398,7 @@ CrWdBFSThenReturn src/Dodge/Data/CreatureEffect.hs 60;" C CrWdImp src/Dodge/Data/CreatureEffect.hs 14;" t CrWdWd src/Dodge/Data/CreatureEffect.hs 17;" t CrWdWdId src/Dodge/Data/CreatureEffect.hs 17;" C +CrWeaponFailSound src/Dodge/Data/SoundOrigin.hs 19;" C CrWeaponSound src/Dodge/Data/SoundOrigin.hs 18;" C CrWlID src/Dodge/Data/CrWlID.hs 12;" t CrWlID src/Dodge/Data/CrWlID.hs 6;" m @@ -511,7 +512,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 27;" C +DisplayTerminal src/Dodge/Data/HUD.hs 30;" C Distortion src/Dodge/Data/Distortion.hs 12;" t Distortion src/Dodge/Data/Distortion.hs 6;" m Distortion src/Dodge/Distortion.hs 1;" m @@ -655,9 +656,9 @@ 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 24;" C +ExamineInventory src/Dodge/Data/HUD.hs 27;" C Explore src/Dodge/Data/Scenario.hs 4;" C -Explosion src/Dodge/Data/SoundOrigin.hs 35;" C +Explosion src/Dodge/Data/SoundOrigin.hs 36;" C Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m ExplosionPayload src/Dodge/Data/Payload.hs 11;" C ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 76;" C @@ -693,8 +694,8 @@ Flame src/Dodge/Data/Flame.hs 14;" t Flame src/Dodge/Data/Flame.hs 6;" m Flame src/Dodge/Flame.hs 1;" m FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C -FlameSound src/Dodge/Data/SoundOrigin.hs 25;" C -Flamer src/Dodge/Data/SoundOrigin.hs 23;" C +FlameSound src/Dodge/Data/SoundOrigin.hs 26;" C +Flamer src/Dodge/Data/SoundOrigin.hs 24;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C Flare src/Dodge/Data/Flare.hs 14;" t Flare src/Dodge/Data/Flare.hs 6;" m @@ -733,7 +734,7 @@ FoldableHelp src/FoldableHelp.hs 2;" m FoldlHelp src/FoldlHelp.hs 1;" m FollowImpulses src/Dodge/Data/ActionPlan.hs 182;" C FootForward src/Dodge/Data/Creature/Stance.hs 31;" t -FootstepSound src/Dodge/Data/SoundOrigin.hs 27;" C +FootstepSound src/Dodge/Data/SoundOrigin.hs 28;" C ForceField src/Dodge/ForceField.hs 1;" m ForceField src/Dodge/Wall/ForceField.hs 1;" m ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 48;" t @@ -785,7 +786,7 @@ Gib src/Dodge/Prop/Gib.hs 1;" m Girder src/Dodge/Room/Girder.hs 1;" m Girder src/Dodge/Room/Modify/Girder.hs 1;" m Glass src/Dodge/Data/Material.hs 11;" C -GlassBreakSound src/Dodge/Data/SoundOrigin.hs 31;" C +GlassBreakSound src/Dodge/Data/SoundOrigin.hs 32;" C GlassLesson src/Dodge/Room/GlassLesson.hs 2;" m Goal src/Dodge/Data/ActionPlan.hs 196;" t GoesOnBack src/Dodge/Data/Equipment/Misc.hs 14;" C @@ -813,7 +814,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 31;" t +HUD src/Dodge/Data/HUD.hs 34;" 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 @@ -969,7 +970,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 118;" t +LDTComb src/Dodge/Item/Grammar.hs 124;" 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 @@ -1004,7 +1005,7 @@ Lampoid src/Dodge/Lampoid.hs 1;" m Large src/Shape/Data.hs 29;" C LasBeamCombine src/Dodge/Data/Beam.hs 40;" C LasGunFlare src/Dodge/Data/Item/Use.hs 135;" C -LasSound src/Dodge/Data/SoundOrigin.hs 26;" C +LasSound src/Dodge/Data/SoundOrigin.hs 27;" C LasTurret src/Dodge/Room/LasTurret.hs 1;" m Laser src/Dodge/Data/Laser.hs 30;" t Laser src/Dodge/Data/Laser.hs 6;" m @@ -1029,7 +1030,7 @@ Lethargic src/Dodge/Data/Creature/Perception.hs 55;" C LevelGen src/Dodge/LevelGen.hs 1;" m LevelStartSlot src/Dodge/Data/SaveSlot.hs 11;" C LevelStructure src/Dodge/LevelGen/LevelStructure.hs 1;" m -LeverSound src/Dodge/Data/SoundOrigin.hs 34;" C +LeverSound src/Dodge/Data/SoundOrigin.hs 35;" C LifeSupportSystemsRoomSS src/Dodge/Data/Scenario.hs 113;" C LifeboatBaySS src/Dodge/Data/Scenario.hs 107;" C LightSource src/Dodge/Data/LightSource.hs 34;" t @@ -1069,7 +1070,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 26;" C +LockedInventory src/Dodge/Data/HUD.hs 29;" 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 @@ -1106,9 +1107,9 @@ MTree src/Dodge/Tree/Compose/Data.hs 8;" C Machine src/Dodge/Data/Machine.hs 31;" t Machine src/Dodge/Data/Machine.hs 6;" m Machine src/Dodge/Machine.hs 1;" m -MachineAltSound src/Dodge/Data/SoundOrigin.hs 20;" C +MachineAltSound src/Dodge/Data/SoundOrigin.hs 21;" C MachinePart src/Dodge/Data/Wall.hs 51;" C -MachineSound src/Dodge/Data/SoundOrigin.hs 19;" C +MachineSound src/Dodge/Data/SoundOrigin.hs 20;" C MachineType src/Dodge/Data/Machine.hs 49;" t MagShieldParams src/Dodge/Data/Item/Params.hs 15;" C Magnet src/Dodge/Data/Magnet.hs 21;" t @@ -1133,7 +1134,7 @@ Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C Material src/Dodge/Data/Material.hs 11;" t Material src/Dodge/Data/Material.hs 6;" m Material src/Dodge/Material.hs 1;" m -MaterialSound src/Dodge/Data/SoundOrigin.hs 32;" C +MaterialSound src/Dodge/Data/SoundOrigin.hs 33;" C MatrixHelper src/MatrixHelper.hs 1;" m Maybe' src/MaybeHelp.hs 13;" t MaybeHelp src/MaybeHelp.hs 7;" m @@ -1698,7 +1699,7 @@ ShapeProp src/Dodge/Data/Prop.hs 33;" C ShapeType src/Shape/Data.hs 16;" t Shatter src/Dodge/Item/Weapon/Shatter.hs 1;" m Shell src/Dodge/Data/Projectile.hs 15;" C -ShellSound src/Dodge/Data/SoundOrigin.hs 24;" C +ShellSound src/Dodge/Data/SoundOrigin.hs 25;" C ShieldGroup src/Dodge/Data/Creature/State.hs 52;" C Shift src/Dodge/Placement/Shift.hs 1;" m Shift src/Dodge/Tree/Shift.hs 8;" m @@ -1810,7 +1811,6 @@ Switch src/Dodge/LevelGen/Switch.hs 1;" m SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C TAPE src/Dodge/Data/Item/Combine.hs 33;" C TARGETING src/Dodge/Data/Item/Combine.hs 23;" C -TARGETLASER src/Dodge/Data/Item/Targeting.hs 12;" C TELEPORTMODULE src/Dodge/Data/Item/Combine.hs 72;" C TESLAGUN src/Dodge/Data/Item/Combine.hs 154;" C THERMOMETER src/Dodge/Data/Item/Combine.hs 62;" C @@ -1839,14 +1839,14 @@ TSup src/Dodge/Data/Input.hs 43;" C TUBE src/Dodge/Data/Item/Combine.hs 29;" C Tank src/Dodge/Placement/Instance/Tank.hs 1;" m Tanks src/Dodge/Room/Tanks.hs 1;" m -Tap src/Dodge/Data/SoundOrigin.hs 36;" C -TargetCursor src/Dodge/Data/Item/Targeting.hs 15;" C -TargetRBCreature src/Dodge/Data/Item/Targeting.hs 14;" C -TargetRBPress src/Dodge/Data/Item/Targeting.hs 13;" C +Tap src/Dodge/Data/SoundOrigin.hs 37;" C +TargetCursor src/Dodge/Data/Item/Targeting.hs 14;" C +TargetRBCreature src/Dodge/Data/Item/Targeting.hs 13;" C +TargetRBPress src/Dodge/Data/Item/Targeting.hs 12;" C Targeting src/Dodge/Data/Item/Targeting.hs 6;" m TargetingLaser src/Dodge/Data/Laser.hs 18;" C TargetingType src/Dodge/Data/Item/Targeting.hs 11;" t -TeleSound src/Dodge/Data/SoundOrigin.hs 33;" C +TeleSound src/Dodge/Data/SoundOrigin.hs 34;" C Teleport src/Dodge/Room/Teleport.hs 2;" m TempLightSource src/Dodge/Data/LightSource.hs 42;" t TermSignal src/Dodge/Data/Input.hs 35;" t @@ -1881,7 +1881,7 @@ TerminalLineString src/Dodge/Data/Terminal.hs 54;" t TerminalLineTerminalEffect src/Dodge/Data/Terminal.hs 69;" C TerminalOff src/Dodge/Data/Terminal.hs 15;" C TerminalReady src/Dodge/Data/Terminal.hs 15;" C -TerminalSound src/Dodge/Data/SoundOrigin.hs 21;" C +TerminalSound src/Dodge/Data/SoundOrigin.hs 22;" C TerminalStatus src/Dodge/Data/Terminal.hs 15;" t TerminalToggle src/Dodge/Data/Terminal.hs 80;" t Terrestrial src/Dodge/Data/Scenario.hs 72;" C @@ -2058,7 +2058,7 @@ WallDraw src/Dodge/Data/Wall.hs 45;" t WallObstacle src/Dodge/Data/PathGraph.hs 52;" C WallP src/Dodge/LevelGen/StaticWalls.hs 23;" t WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t -WallSound src/Dodge/Data/SoundOrigin.hs 22;" C +WallSound src/Dodge/Data/SoundOrigin.hs 23;" C WallStructure src/Dodge/Data/Wall.hs 48;" t WallWire src/Dodge/Data/Room.hs 53;" C Walls src/Dodge/Render/Walls.hs 1;" m @@ -2261,15 +2261,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 33;" f -_carteRot src/Dodge/Data/HUD.hs 35;" f -_carteZoom src/Dodge/Data/HUD.hs 34;" 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 _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 25;" f +_ciSections src/Dodge/Data/HUD.hs 28;" 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 +2293,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 36;" f +_closeObjects src/Dodge/Data/HUD.hs 39;" 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 +2572,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 32;" f +_hudElement src/Dodge/Data/HUD.hs 35;" 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 @@ -2757,6 +2757,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 _numLinkEW src/Dodge/Data/Room.hs 33;" f _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 32;" f @@ -3084,7 +3086,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 27;" f +_termID src/Dodge/Data/HUD.hs 30;" 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 @@ -3293,7 +3295,7 @@ addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f addPane src/Dodge/Placement/PlaceSpot.hs 162;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f -addPointPolygon src/Geometry/Polygon.hs 88;" f +addPointPolygon src/Geometry/Polygon.hs 96;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f @@ -3310,7 +3312,7 @@ adjustIMZone src/Dodge/Base.hs 77;" f advanceScrollAmount src/Dodge/Update.hs 301;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f -aimDelaySweep src/Dodge/Render/ShapePicture.hs 44;" f +aimDelaySweep src/Dodge/Render/ShapePicture.hs 76;" f aimStanceInfo src/Dodge/Item/Info.hs 210;" f aimTurn src/Dodge/Creature/YourControl.hs 143;" f aimingMuzzleLength src/Dodge/Creature/HandPos.hs 46;" f @@ -3326,14 +3328,14 @@ 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 207;" f +allInvLocs src/Dodge/Item/Grammar.hs 213;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f ammoMagSPic src/Dodge/Item/Draw/SPic.hs 45;" f amr src/Dodge/Item/Held/Rod.hs 46;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 75;" f -andOrRegex src/Dodge/DisplayInventory.hs 78;" f +andOrRegex src/Dodge/DisplayInventory.hs 79;" f angleBetween src/Geometry.hs 145;" f angleVV src/Geometry/Vector.hs 57;" f angleVV3 src/Geometry/Vector3D.hs 122;" f @@ -3398,7 +3400,7 @@ attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attribSize src/Shader/Compile.hs 306;" f -augmentedHUD src/Dodge/Item/Scope.hs 58;" f +augmentedHUD src/Dodge/Item/Scope.hs 49;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 350;" f autoCrit src/Dodge/Creature/AutoCrit.hs 13;" f @@ -3430,7 +3432,7 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 255;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f -basePCI src/Dodge/Item/Grammar.hs 93;" f +basePCI src/Dodge/Item/Grammar.hs 97;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 258;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 342;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 325;" f @@ -3501,17 +3503,17 @@ branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 69;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f -btSPic src/Dodge/Render/ShapePicture.hs 157;" f +btSPic src/Dodge/Render/ShapePicture.hs 194;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 80;" f bulletBeltPack src/Dodge/Item/Equipment.hs 72;" f bulletCombinations src/Dodge/Combine/Graph.hs 34;" f -bulletModule src/Dodge/Item/Scope.hs 46;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 55;" f +bulletModule src/Dodge/Item/Scope.hs 37;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 46;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 124;" f -bulletTargetingModule src/Dodge/Item/Scope.hs 52;" f +bulletTargetingModule src/Dodge/Item/Scope.hs 43;" f bulletWeapons src/Dodge/Combine/Combinations.hs 246;" f burstRifle src/Dodge/Item/Held/Cane.hs 74;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f @@ -3527,8 +3529,8 @@ cenLasTur src/Dodge/Room/LasTurret.hs 24;" f centerText src/Picture/Base.hs 184;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f centerVaultRoom src/Dodge/Room/Procedural.hs 288;" f -centroid src/Geometry/Polygon.hs 122;" f -centroidNum src/Geometry/Polygon.hs 125;" f +centroid src/Geometry/Polygon.hs 130;" f +centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainLinkOrientation src/Dodge/Creature/State.hs 182;" f chainPairs src/Geometry.hs 363;" f @@ -3558,7 +3560,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 126;" f +chooseCursorBorders src/Dodge/Render/List.hs 131;" 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 @@ -3594,7 +3596,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 114;" f +closeObjectInfo src/Dodge/Render/HUD.hs 115;" f closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 69;" f closestCreatureID src/Dodge/Debug.hs 91;" f @@ -3630,7 +3632,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 203;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 204;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f @@ -3655,8 +3657,8 @@ constructEdges src/Polyhedra.hs 33;" f constructEdgesList src/Polyhedra.hs 42;" f consumableInfo src/Dodge/Item/Info.hs 130;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f -convexHull src/Geometry/Polygon.hs 96;" f -convexHullSafe src/Geometry/Polygon.hs 103;" f +convexHull src/Geometry/Polygon.hs 104;" f +convexHullSafe src/Geometry/Polygon.hs 111;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 50;" f copyItemToFloor src/Dodge/FloorItem.hs 17;" f copyItemToFloorID src/Dodge/FloorItem.hs 21;" f @@ -3737,7 +3739,7 @@ crystalDebris src/Dodge/Block/Debris.hs 176;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f crystalWallDamage src/Dodge/Wall/DamageEffect.hs 79;" f cubeShape src/Dodge/Block/Debris.hs 196;" f -cullPoint src/Dodge/Render/ShapePicture.hs 107;" f +cullPoint src/Dodge/Render/ShapePicture.hs 139;" f cullPretty src/AesonHelp.hs 13;" f curveAroundField src/Dodge/Magnet.hs 18;" f curveLeftField src/Dodge/Magnet.hs 13;" f @@ -3761,7 +3763,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 181;" f +dShadCol src/Dodge/Render/List.hs 186;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damToExpBarrel src/Dodge/Barreloid.hs 57;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f @@ -3943,8 +3945,8 @@ disconnectTerminal src/Dodge/Terminal.hs 215;" f 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 143;" f -displayTerminal src/Dodge/Render/HUD.hs 230;" f +displayFreeSlots src/Dodge/DisplayInventory.hs 144;" f +displayTerminal src/Dodge/Render/HUD.hs 231;" f displayTerminalLineString src/Dodge/Update.hs 329;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f @@ -4002,7 +4004,7 @@ doPropUpdates src/Dodge/Prop/Update.hs 36;" f doQuickload src/Dodge/Save.hs 82;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 7;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 134;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 135;" f doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f @@ -4055,21 +4057,23 @@ 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 78;" f +drawCombineInventory src/Dodge/Render/HUD.hs 79;" 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 -drawCreature src/Dodge/Render/ShapePicture.hs 70;" f +drawCreature src/Dodge/Render/ShapePicture.hs 102;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 163;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f -drawCursorAt src/Dodge/Render/List.hs 55;" f +drawCursorAt src/Dodge/Render/List.hs 56;" f drawDDATest src/Dodge/Debug/Picture.hs 254;" f +drawDIMouseOver src/Dodge/Render/ShapePicture.hs 60;" f +drawDISelections src/Dodge/Render/ShapePicture.hs 67;" 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 84;" f +drawExamineInventory src/Dodge/Render/HUD.hs 85;" 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 @@ -4077,26 +4081,27 @@ 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 49;" f -drawHUD src/Dodge/Render/HUD.hs 41;" 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 58;" 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 drawLightSource src/Dodge/LightSource/Draw.hs 7;" f drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f -drawList src/Dodge/Render/List.hs 175;" f -drawListElement src/Dodge/Render/List.hs 155;" f -drawListYgapScaleYoff src/Dodge/Render/List.hs 78;" f -drawListYoff src/Dodge/Render/List.hs 75;" f +drawList src/Dodge/Render/List.hs 180;" f +drawListElement src/Dodge/Render/List.hs 160;" f +drawListYgapScaleYoff src/Dodge/Render/List.hs 79;" f +drawListYoff src/Dodge/Render/List.hs 76;" f drawMachine src/Dodge/Machine/Draw.hs 14;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 53;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 12;" f drawMousePosition src/Dodge/Debug/Picture.hs 317;" f +drawMouseSelection src/Dodge/Render/ShapePicture.hs 51;" f drawMovingShape src/Dodge/Prop/Draw.hs 67;" f drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f drawMuzFlare src/Dodge/Flare.hs 17;" f @@ -4109,11 +4114,11 @@ drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 15;" f drawProp' src/Dodge/Prop/Draw.hs 12;" f -drawRBOptions src/Dodge/Render/HUD.hs 132;" f +drawRBOptions src/Dodge/Render/HUD.hs 133;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f -drawSelectionCursor src/Dodge/Render/List.hs 40;" f -drawSelectionList src/Dodge/Render/List.hs 28;" f +drawSelectionCursor src/Dodge/Render/List.hs 41;" f +drawSelectionList src/Dodge/Render/List.hs 29;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 10;" f drawSensor src/Dodge/Machine/Draw.hs 21;" f drawShader src/Shader.hs 27;" f @@ -4123,8 +4128,8 @@ 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 70;" f -drawSweep src/Dodge/Render/ShapePicture.hs 51;" f +drawSubInventory src/Dodge/Render/HUD.hs 71;" f +drawSweep src/Dodge/Render/ShapePicture.hs 83;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f @@ -4172,10 +4177,10 @@ encircle src/Dodge/Creature/Boid.hs 115;" f encircleCloseP src/Dodge/Creature/Boid.hs 35;" f encircleDistP src/Dodge/Creature/Boid.hs 21;" f encircleP src/Dodge/Creature/Boid.hs 27;" f -enterCombineInv src/Dodge/DisplayInventory.hs 238;" 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 175;" f +equipAllocString src/Dodge/Render/HUD.hs 176;" 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 @@ -4208,7 +4213,7 @@ explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 196;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 112;" f +extraPics src/Dodge/Render/ShapePicture.hs 144;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 64;" f facesToVF src/Polyhedra/Geodesic.hs 68;" f @@ -4267,8 +4272,8 @@ 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 119;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 151;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 120;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 187;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f @@ -4325,7 +4330,7 @@ geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 69;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 73;" f getArguments src/Dodge/Update/Scroll.hs 151;" f getArguments' src/Dodge/Update/Scroll.hs 139;" f getAvailableListLines src/Dodge/SelectionList.hs 11;" f @@ -4340,7 +4345,7 @@ getDamageCoding src/Dodge/Terminal.hs 175;" f getDistortions src/Dodge/Render.hs 382;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getItem src/Dodge/Item/Location.hs 15;" f -getLDPWidth src/Dodge/Render/List.hs 70;" f +getLDPWidth src/Dodge/Render/List.hs 71;" f getLaserColor src/Dodge/HeldUse.hs 193;" f getLaserDamage src/Dodge/HeldUse.hs 190;" f getLaserPhaseV src/Dodge/HeldUse.hs 187;" f @@ -4375,8 +4380,8 @@ glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f gotoTerminal src/Dodge/Update.hs 122;" f -grahamEliminate src/Geometry/Polygon.hs 117;" f -grahamScan src/Geometry/Polygon.hs 108;" f +grahamEliminate src/Geometry/Polygon.hs 125;" f +grahamScan src/Geometry/Polygon.hs 116;" f grapeCannon src/Dodge/Item/Held/Cone.hs 38;" f graphToEdges src/Dodge/Graph.hs 35;" f graphToIncidence src/Dodge/Graph.hs 40;" f @@ -4451,7 +4456,7 @@ hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 382;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f homingDrawType src/Dodge/Projectile/Create.hs 12;" f -homingModule src/Dodge/Item/Scope.hs 43;" f +homingModule src/Dodge/Item/Scope.hs 34;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 54;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 39;" f @@ -4530,22 +4535,22 @@ 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 175;" f -invDimColor src/Dodge/DisplayInventory.hs 137;" 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 266;" f -invLDT src/Dodge/Item/Grammar.hs 159;" f -invRootMap src/Dodge/Item/Grammar.hs 168;" f -invRootTrees src/Dodge/Item/Grammar.hs 200;" f +invHead src/Dodge/Render/HUD.hs 267;" 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 invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 19;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 161;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f -invTrees src/Dodge/Item/Grammar.hs 188;" f -invTrees' src/Dodge/Item/Grammar.hs 192;" f -inventoryExtra src/Dodge/Render/HUD.hs 184;" f -inventoryExtraH src/Dodge/Render/HUD.hs 195;" f +invTrees src/Dodge/Item/Grammar.hs 194;" f +invTrees' src/Dodge/Item/Grammar.hs 198;" f +inventoryExtra src/Dodge/Render/HUD.hs 185;" f +inventoryExtraH src/Dodge/Render/HUD.hs 196;" f inventoryX src/Dodge/Creature.hs 115;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f @@ -4558,7 +4563,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 203;" f isAnimate src/Dodge/Creature/Test.hs 138;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFrictionless src/Dodge/Creature/State.hs 341;" f +isFrictionless src/Dodge/Creature/State.hs 340;" f isGas src/Dodge/Euse.hs 64;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4596,15 +4601,15 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemFromLeftType src/Dodge/Item.hs 76;" f itemInfo src/Dodge/Item/Info.hs 12;" f itemInvColor src/Dodge/Item/InventoryColor.hs 11;" f -itemNumberDisplay src/Dodge/Item/Display.hs 95;" f +itemNumberDisplay src/Dodge/Item/Display.hs 94;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f itemString src/Dodge/Item/Display.hs 41;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 44;" f -itemToFunction src/Dodge/Item/Grammar.hs 74;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 47;" f +itemToFunction src/Dodge/Item/Grammar.hs 79;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f -itemUpdate src/Dodge/Creature/State.hs 313;" f +itemUpdate src/Dodge/Creature/State.hs 312;" f itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 56;" f itemUseEffect' src/Dodge/Creature/Impulse/UseItem.hs 34;" f iterateUntil src/MonadHelp.hs 23;" f @@ -4615,7 +4620,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 150;" f +joinItemsInList src/Dodge/Item/Grammar.hs 156;" 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 @@ -4638,7 +4643,7 @@ lShape src/Dodge/Placement/Instance/LightSource.hs 77;" f lamp src/Dodge/Creature/Lamp.hs 22;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 86;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 118;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 351;" f @@ -4648,7 +4653,7 @@ lasTunnel src/Dodge/Room/LasTurret.hs 124;" f 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 98;" f +laserLinkTest src/Dodge/Item/Grammar.hs 102;" f lastMap src/Dodge/DoubleTree.hs 174;" f latchkey src/Dodge/Item/Held/Utility.hs 23;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f @@ -4668,10 +4673,10 @@ ldtToIndentList src/Dodge/DoubleTree.hs 146;" f ldtToLoc src/Dodge/DoubleTree.hs 187;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 93;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 120;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 126;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 97;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 134;" f +leftRightCombine src/Dodge/Item/Grammar.hs 140;" 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 @@ -4696,15 +4701,15 @@ linksAndPath' src/Dodge/Room/Path.hs 44;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 7;" f listConfig src/Dodge/Menu.hs 199;" f listControls src/Dodge/Menu.hs 212;" f -listCursorChooseBorderScale src/Dodge/Render/List.hs 105;" f +listCursorChooseBorderScale src/Dodge/Render/List.hs 110;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f -listSelectionColorPicture src/Dodge/DisplayInventory.hs 230;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 231;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f -llleft src/Dodge/Item/Grammar.hs 101;" f -llright src/Dodge/Item/Grammar.hs 104;" f +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 255;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 256;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f @@ -4794,7 +4799,7 @@ makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 31;" f makeRect src/Grid.hs 82;" f -makeSelectionListPictures src/Dodge/Render/List.hs 49;" f +makeSelectionListPictures src/Dodge/Render/List.hs 50;" f makeShaderEBO src/Shader/Compile.hs 53;" f makeShaderProgram src/Shader/Compile.hs 241;" f makeShaderUsingVAO src/Shader/Compile.hs 146;" f @@ -4830,18 +4835,18 @@ maybeClearPath src/Dodge/Block.hs 72;" f maybeClearPaths src/Dodge/Block.hs 69;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 259;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 265;" f maybeOpenTerminal src/Dodge/Update.hs 117;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 107;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 120;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 119;" f mcApplyDamage src/Dodge/Machine/Update.hs 90;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f mcPlaySound src/Dodge/Machine/Update.hs 80;" f mcProxTest src/Dodge/Machine/Update.hs 126;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 104;" f -mcSPic src/Dodge/Render/ShapePicture.hs 162;" f +mcSPic src/Dodge/Render/ShapePicture.hs 199;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 69;" f mcSensorUpdate src/Dodge/Machine/Update.hs 99;" f mcShootLaser src/Dodge/HeldUse.hs 462;" f @@ -4896,7 +4901,7 @@ miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 510;" f miniTree2 src/Dodge/Room/Room.hs 108;" f minimumOn src/FoldlHelp.hs 12;" f mirrorV3xz src/Dodge/Creature/HandPos.hs 52;" f -mirrorXAxis src/Geometry/Polygon.hs 41;" f +mirrorXAxis src/Geometry/Polygon.hs 49;" f mirrorxz src/Picture/Base.hs 335;" f mirroryz src/Picture/Base.hs 340;" f missileLaunchS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 482;" f @@ -5013,15 +5018,15 @@ optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 39;" f optionValueOffset src/Dodge/Menu/Option.hs 106;" f optionsOptions src/Dodge/Menu.hs 108;" f optionsToSelections src/Dodge/Menu/Option.hs 59;" f -orRegex src/Dodge/DisplayInventory.hs 81;" f +orRegex src/Dodge/DisplayInventory.hs 82;" f orange src/Color.hs 25;" f orderAround3 src/Geometry/Vector3D.hs 105;" f -orderAroundFirst src/Geometry/Polygon.hs 74;" f -orderAroundFirstReverse src/Geometry/Polygon.hs 70;" f -orderPolygon src/Geometry/Polygon.hs 79;" f -orderPolygonAround src/Geometry/Polygon.hs 62;" f -orientAttachment src/Dodge/Item/Orientation.hs 24;" f -orientByLink src/Dodge/Item/Orientation.hs 17;" f +orderAroundFirst src/Geometry/Polygon.hs 82;" f +orderAroundFirstReverse src/Geometry/Polygon.hs 78;" f +orderPolygon src/Geometry/Polygon.hs 87;" f +orderPolygonAround src/Geometry/Polygon.hs 70;" f +orientAttachment src/Dodge/Item/Orientation.hs 23;" f +orientByLink src/Dodge/Item/Orientation.hs 16;" f orientChild src/Dodge/Item/Orientation.hs 10;" f originIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f originsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f @@ -5059,12 +5064,12 @@ parseNum src/Dodge/Debug/Terminal.hs 73;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 213;" f +pauseGame src/Dodge/Update/Input/InGame.hs 214;" f pauseMenu src/Dodge/Menu.hs 53;" f pauseMenuOptions src/Dodge/Menu.hs 58;" f pauseSound src/Dodge/SoundLogic.hs 41;" f pauseTime src/Dodge/Update.hs 175;" f -pciToCI src/Dodge/Item/Grammar.hs 90;" f +pciToCI src/Dodge/Item/Grammar.hs 94;" f peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f pedestalRoom src/Dodge/Room/Containing.hs 49;" f penThing src/Dodge/Bullet.hs 224;" f @@ -5080,7 +5085,7 @@ pesNearCirc src/Dodge/Zoning/Pathing.hs 43;" f pesNearPoint src/Dodge/Zoning/Pathing.hs 33;" f pesNearRect src/Dodge/Zoning/Pathing.hs 40;" f pesNearSeg src/Dodge/Zoning/Pathing.hs 37;" f -picAtCrPos1 src/Dodge/Render/ShapePicture.hs 91;" f +picAtCrPos1 src/Dodge/Render/ShapePicture.hs 123;" f picFormat src/Polyhedra.hs 22;" f picMap src/Picture/Base.hs 67;" f pickUpItem src/Dodge/Inventory/Add.hs 89;" f @@ -5116,7 +5121,7 @@ placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 79;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 60;" f placeString src/Dodge/Render/MenuScreen.hs 54;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 156;" f -plainRegex src/Dodge/DisplayInventory.hs 140;" f +plainRegex src/Dodge/DisplayInventory.hs 141;" f plateCraft src/Dodge/Item/Craftable.hs 45;" f playIfFree src/Sound.hs 136;" f playPositionalSoundQueue src/Sound.hs 144;" f @@ -5141,9 +5146,9 @@ pnsNearRect src/Dodge/Zoning/Pathing.hs 18;" f pnsNearSeg src/Dodge/Zoning/Pathing.hs 15;" f pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f pointInCircle src/Geometry.hs 212;" f -pointInOrOnPolygon src/Geometry/Polygon.hs 51;" f +pointInOrOnPolygon src/Geometry/Polygon.hs 59;" f pointInPolyPoints src/Geometry/ConvexPoly.hs 70;" f -pointInPolygon src/Geometry/Polygon.hs 58;" f +pointInPolygon src/Geometry/Polygon.hs 66;" f pointIsInCone src/Geometry.hs 378;" f pointIsOnScreen src/Dodge/Base/Window.hs 59;" f pointTowardsImpulse src/Dodge/Path.hs 63;" f @@ -5216,7 +5221,7 @@ powlist src/Multiset.hs 55;" f powlistUpToN src/Multiset.hs 20;" f powlistUpToN' src/Multiset.hs 9;" f powlistUpToN'' src/Multiset.hs 27;" f -ppDraw src/Dodge/Render/ShapePicture.hs 148;" f +ppDraw src/Dodge/Render/ShapePicture.hs 184;" f ppEvents src/Dodge/Update.hs 562;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 81;" f @@ -5328,6 +5333,7 @@ randsSpread src/RandomHelp.hs 111;" f ratIntersectLineLine src/Geometry/Intersect.hs 195;" f readSaveSlot src/Dodge/Save.hs 45;" f rectNSWE src/Geometry/Polygon.hs 13;" f +rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f rectXH src/Geometry/Polygon.hs 32;" f rectXY src/Geometry/Polygon.hs 35;" f @@ -5342,7 +5348,7 @@ reflectInParam src/Geometry.hs 233;" f reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 13;" f refract src/Dodge/Item/Weapon/LaserPath.hs 40;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 34;" f -regexCombs src/Dodge/DisplayInventory.hs 68;" f +regexCombs src/Dodge/DisplayInventory.hs 69;" f regexFocus src/Dodge/InputFocus.hs 46;" f regexIn src/Regex.hs 4;" f regexList src/Regex.hs 7;" f @@ -5351,7 +5357,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 426;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteScreen src/Dodge/Item/Scope.hs 61;" f +remoteScreen src/Dodge/Item/Scope.hs 52;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f removeAmmoFromMag src/Dodge/HeldUse.hs 305;" f removeDot src/ShortShow.hs 30;" f @@ -5365,7 +5371,7 @@ renderInfoListAt src/Dodge/Render/InfoBox.hs 15;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 24;" f renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f -renderListAt src/Dodge/Render/List.hs 160;" f +renderListAt src/Dodge/Render/List.hs 165;" f renderShadows src/Render.hs 117;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f @@ -5397,7 +5403,7 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 71;" f rifle src/Dodge/Item/Held/Cane.hs 51;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 127;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 133;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5517,9 +5523,10 @@ 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 326;" f -selSecDrawCursor src/Dodge/Render/List.hs 87;" f -selSecSelCol src/Dodge/Render/HUD.hs 346;" f +selNumPos src/Dodge/Render/HUD.hs 327;" f +selSecDrawCursor src/Dodge/Render/List.hs 104;" f +selSecDrawCursorAt src/Dodge/Render/List.hs 88;" f +selSecSelCol src/Dodge/Render/HUD.hs 347;" f selSecSelSize src/Dodge/SelectionSections.hs 124;" f selSecYint src/Dodge/SelectionSections.hs 127;" f selectCreatureDebugItem src/Dodge/Debug.hs 38;" f @@ -5560,7 +5567,7 @@ setOldPos src/Dodge/Update.hs 353;" 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 +setRBCreatureTargeting src/Dodge/Creature/State.hs 291;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5609,8 +5616,8 @@ shieldWall src/Dodge/Euse.hs 114;" f shiftByV2 src/Dodge/PlacementSpot.hs 239;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f shiftDec src/Dodge/Placement/PlaceSpot.hs 136;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 95;" f -shiftDraw' src/Dodge/Render/ShapePicture.hs 101;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 127;" f +shiftDraw' src/Dodge/Render/ShapePicture.hs 133;" f shiftInBy src/Dodge/PlacementSpot.hs 236;" f shiftLinkBy src/Dodge/Room/Link.hs 87;" f shiftPSBy src/Dodge/Placement/Shift.hs 12;" f @@ -5646,16 +5653,16 @@ shoulderHeight src/Dodge/Item/HeldOffset.hs 61;" f shoulderSH src/Dodge/Creature/Picture.hs 137;" f shoulderSP src/Dodge/Creature/HandPos.hs 196;" f showAttachItem src/Dodge/Item/Display.hs 60;" f -showAutoRechargeProgress src/Dodge/Item/Display.hs 74;" f -showEquipItem src/Dodge/Item/Display.hs 69;" f -showEquipmentNumber src/Dodge/Item/Display.hs 111;" f +showAutoRechargeProgress src/Dodge/Item/Display.hs 73;" f +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 showTerminalError src/Dodge/Debug/Terminal.hs 76;" f showTimeFlow src/Dodge/TestString.hs 87;" f -shrinkPolyOnEdges src/Geometry/Polygon.hs 128;" f -shrinkVert src/Geometry/Polygon.hs 132;" f +shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f +shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 46;" f shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f @@ -5710,7 +5717,7 @@ soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 98;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 48;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 84;" f -spaceAction src/Dodge/Update/Input/InGame.hs 216;" f +spaceAction src/Dodge/Update/Input/InGame.hs 217;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 186;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 179;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 171;" f @@ -5740,7 +5747,7 @@ spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 13;" f spreadOut src/Dodge/Creature/Boid.hs 157;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f -square src/Geometry/Polygon.hs 38;" f +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 @@ -5758,8 +5765,8 @@ ssScrollUsing src/Dodge/SelectionSections.hs 28;" f ssScrollUsing' src/Dodge/SelectionSections.hs 38;" f ssSetCursor src/Dodge/SelectionSections.hs 52;" f ssfold src/FoldableHelp.hs 105;" f -stackPicturesAt src/Dodge/Render/List.hs 81;" f -stackPicturesAtOff src/Dodge/Render/List.hs 84;" f +stackPicturesAt src/Dodge/Render/List.hs 82;" f +stackPicturesAtOff src/Dodge/Render/List.hs 85;" f stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 282;" f startCr src/Dodge/Creature.hs 91;" f @@ -5844,7 +5851,7 @@ teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f 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 145;" f +testPic src/Dodge/Render/ShapePicture.hs 181;" f testStringInit src/Dodge/TestString.hs 22;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f @@ -5888,10 +5895,10 @@ toColor8 src/Color.hs 148;" f toCombNodeLabel src/Dodge/Combine/Graph.hs 81;" f toFloatVAs src/Shader/Compile.hs 211;" f toLabel src/Dodge/Cleat.hs 16;" f -toLasgunUpdate src/Dodge/Item/Grammar.hs 109;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 113;" f toMultiset src/Multiset.hs 58;" f toOnward src/Dodge/Tree/Compose.hs 101;" f -toTopLeft src/Dodge/Render/List.hs 185;" f +toTopLeft src/Dodge/Render/List.hs 190;" f toV2 src/Geometry/Data.hs 36;" f toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f @@ -5899,8 +5906,8 @@ toggleCombineInv src/Dodge/DisplayInventory.hs 31;" f toggleCommand src/Dodge/Terminal.hs 194;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 75;" f toggleJust src/MaybeHelp.hs 41;" f -toggleMap src/Dodge/Update/Input/InGame.hs 237;" f -toggleTweakInv src/Dodge/Update/Input/InGame.hs 244;" f +toggleMap src/Dodge/Update/Input/InGame.hs 238;" f +toggleTweakInv src/Dodge/Update/Input/InGame.hs 248;" f togglesToEffects src/Dodge/Terminal.hs 244;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 460;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 430;" f @@ -5971,7 +5978,7 @@ trunkDepth src/TreeHelp.hs 161;" f tryAssignHotkey src/Dodge/Creature/YourControl.hs 85;" f tryAttachBulletBelt src/Dodge/Euse.hs 40;" f tryChargeBattery src/Dodge/Euse.hs 43;" f -tryCombine src/Dodge/Update/Input/InGame.hs 252;" f +tryCombine src/Dodge/Update/Input/InGame.hs 257;" f tryGetChannel src/Sound.hs 96;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 20;" f tryGetRootItemInvID src/Dodge/Inventory/Location.hs 29;" f @@ -6016,8 +6023,8 @@ upProjectile src/Dodge/Projectile/Update.hs 25;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f updateAttachedItems src/Dodge/Creature/State.hs 172;" f -updateAutoRecharge src/Dodge/Creature/State.hs 324;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 159;" f +updateAutoRecharge src/Dodge/Creature/State.hs 323;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 160;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBounds src/Dodge/Update/Camera.hs 245;" f @@ -6028,19 +6035,19 @@ updateCamera src/Dodge/Update/Camera.hs 31;" f updateCloseObjects src/Dodge/Inventory.hs 112;" f updateCloud src/Dodge/Update.hs 611;" f updateClouds src/Dodge/Update.hs 457;" f -updateCombinePositioning src/Dodge/DisplayInventory.hs 36;" f -updateCombineSections src/Dodge/DisplayInventory.hs 41;" 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 397;" f updateCreatureSoundPositions src/Dodge/Update.hs 375;" f updateDebugMessageOffset src/Dodge/Update.hs 91;" f updateDelayedEvents src/Dodge/Update.hs 674;" f -updateDisplaySections src/Dodge/DisplayInventory.hs 91;" f +updateDisplaySections src/Dodge/DisplayInventory.hs 92;" f updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 418;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f updateEnergyBalls src/Dodge/Update.hs 445;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 188;" 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 @@ -6054,31 +6061,31 @@ updateHumanoid src/Dodge/Humanoid.hs 12;" f updateIMl src/Dodge/Update.hs 389;" f updateIMl' src/Dodge/Update.hs 393;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 108;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 109;" f updateInstantBullets src/Dodge/Update.hs 534;" f updateInv src/Dodge/Creature/State.hs 151;" f -updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f +updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f updateItemTargeting src/Dodge/Creature/State.hs 267;" f updateItemWithOrientation src/Dodge/Creature/State.hs 193;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 102;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 91;" f +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 318;" f updateLightSources src/Dodge/Update.hs 421;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 128;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 129;" f updateMIM src/Dodge/Update.hs 547;" f updateMachine src/Dodge/Machine/Update.hs 16;" f -updateMovement src/Dodge/Creature/State.hs 331;" f +updateMovement src/Dodge/Creature/State.hs 330;" f updateObjCatMaybes src/Dodge/Update.hs 409;" f updateObjMapMaybe src/Dodge/Update.hs 402;" f updatePastWorlds src/Dodge/Update.hs 307;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f updatePosEvents src/Dodge/Update.hs 454;" f updatePreload src/Preload/Update.hs 20;" f -updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 66;" f -updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 69;" f +updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 67;" f +updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 70;" f updateProjectile src/Dodge/Projectile/Update.hs 22;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f @@ -6092,8 +6099,8 @@ updateRootItemID src/Dodge/Inventory/Location.hs 37;" f updateScopeZoom src/Dodge/Update/Camera.hs 127;" f updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f -updateSection src/Dodge/DisplayInventory.hs 170;" f -updateSectionsPositioning src/Dodge/DisplayInventory.hs 149;" f +updateSection src/Dodge/DisplayInventory.hs 171;" f +updateSectionsPositioning src/Dodge/DisplayInventory.hs 150;" f updateSeenWalls src/Dodge/Update.hs 565;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f updateShockwaves src/Dodge/Update.hs 439;" f @@ -6139,7 +6146,7 @@ upperPrismPolySU src/Shape.hs 113;" f upperPrismPolyTS src/Shape.hs 119;" f upperRounded src/Shape.hs 183;" f useBreakL src/Dodge/Item/Grammar.hs 24;" f -useBreakListsLinkTest src/Dodge/Item/Grammar.hs 31;" f +useBreakListsLinkTest src/Dodge/Item/Grammar.hs 32;" f useBulletPayload src/Dodge/Bullet.hs 105;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f @@ -6164,7 +6171,7 @@ useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f -useUpdate src/Dodge/Creature/State.hs 316;" f +useUpdate src/Dodge/Creature/State.hs 315;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f v2z src/Geometry/Vector3D.hs 93;" f @@ -6252,7 +6259,7 @@ wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f wlsNearSeg src/Dodge/Zoning/Wall.hs 42;" f wordsBy src/ListHelp.hs 116;" f worldPosToScreen src/Dodge/Base/Coordinate.hs 28;" f -worldSPic src/Dodge/Render/ShapePicture.hs 25;" f +worldSPic src/Dodge/Render/ShapePicture.hs 29;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 134;" f wristArmour src/Dodge/Item/Equipment.hs 47;" f @@ -6270,7 +6277,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 126;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 127;" 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