Work on terminal tab completion/scrolling

This commit is contained in:
2025-12-28 18:16:24 +00:00
parent bb376b0a56
commit 4390a82d64
4 changed files with 295 additions and 214 deletions
+165 -90
View File
@@ -1,4 +1,5 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TupleSections #-}
module Dodge.Terminal (
makeTermLine,
@@ -10,10 +11,15 @@ module Dodge.Terminal (
makeTermPara,
terminalReturnEffect,
getCommands,
tabComplete,
-- tabComplete,
tlSetStatus,
tlDoEffect,
termTextColor,
doTabComplete,
-- recComFindSuccessor,
-- recComFindPredecessor,
recComFindMin,
recComFindMax,
) where
import Color
@@ -30,6 +36,7 @@ import Dodge.Terminal.Type
import Justify
import LensHelp
import Sound.Data
import Control.Applicative
textTerminal :: Terminal
textTerminal = defaultTerminal{_tmBootLines = textInputBlurb []}
@@ -46,27 +53,26 @@ termSoundLine = TLine 0 [] . TmWdWdTermSound
termTextColor :: Color
termTextColor = greyN 0.9
getCommands :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
--type TCommands = PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
type TCommands = RecCommands [TerminalLine]
getCommands :: World -> Terminal -> TCommands
getCommands w tm = foldMap (getCommand w tm) $ tm ^. tmCommands
getCommand ::
World ->
Terminal ->
TCom ->
PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
getCommand :: World -> Terminal -> TCom -> TCommands
getCommand w tm = \case
TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z))
TCInfo x z -> RCommands $ PTE.singleton x (Right (makeTermPara z))
TCBase -> quitCommand <> toggleCommands tm
TCDamageCommand -> damageCodeCommand w tm
damageCodeCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
damageCodeCommand w _ =
PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..]
damageCodeCommand :: World -> Terminal -> TCommands
damageCodeCommand w _ = RCommands .
PTE.singleton "DAMAGECODE" . Left . RCommands $ PTE.fromList $ mapMaybe f [minBound ..]
where
f :: SensorType -> Maybe (String, [TerminalLine])
f :: SensorType -> Maybe (String, Either TCommands [TerminalLine])
f st = do
s <- g st
return (s, decodeSensorType st w)
return (s, Right $ decodeSensorType st w)
g =
fmap (map toUpper . reverse)
. List.stripPrefix (reverse "Sensor")
@@ -78,15 +84,16 @@ decodeSensorType st w = fromMaybe [] $ do
x <- w ^? cWorld . cwGen . cwgParams . sensorCoding . ix st
return [makeTermLine $ show x]
toggleCommands :: Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
toggleCommands :: Terminal -> TCommands
toggleCommands tm
| null ts = mempty
| otherwise = PTE.singleton "TOGGLE" $ PTE.fromList $ f <$> M.toList ts
| otherwise = RCommands . PTE.singleton "TOGGLE" . Left . RCommands . PTE.fromList
$ f <$> M.toList ts
where
ts = tm ^. tmToggles
f (s, x) =
( s
,
, Right
[ TLine
1
[TerminalLineConst (s ++ " TOGGLE DONE!") termTextColor]
@@ -97,8 +104,8 @@ toggleCommands tm
helpPara :: [TerminalLine]
helpPara = makeTermPara "THIS TERMINAL PROCESSES KEYBOARD INPUT. USE [RETURN] OR [LMB] TO REGISTER YOUR INPUT. AVAILABLE COMMANDS CAN BE SCROLLED THROUGH, HOLD [RMB] TO SCROLL THROUGH ARGUMENTS. USE [TAB] FOR AUTOCOMPLETE."
quitCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
quitCommand = PTE.singleton "QUIT" (PTE.singleton "" [TLine 0 [] TmWdWdPowerDownTerminal])
quitCommand :: TCommands
quitCommand = RCommands . PTE.singleton "QUIT" $ Right [TLine 0 [] TmWdWdPowerDownTerminal]
makeTermLine :: String -> TerminalLine
makeTermLine = makeColorTermLine termTextColor
@@ -121,51 +128,118 @@ makeColorTermLine col str = TLine 1 [TerminalLineConst str col] TmWdId
commandColor :: Color
commandColor = yellow
tabComplete :: World -> Terminal -> Terminal
tabComplete w tm = fromMaybe tm $ do
--tabComplete :: World -> Terminal -> Terminal
--tabComplete w tm = fromMaybe tm $ do
-- s <- tm ^? tmStatus . tiText
-- return $ tabComplete' s w tm
--
---- ugly, can improve output to explain when showing available arguments
--tabComplete' :: String -> World -> Terminal -> Terminal
--tabComplete' s' w tm = case PTE.lookup s $ getCommands w tm of
-- Just m -> f (s ++ " ") $ PTE.toList $ PTE.lookupPrefix a m
-- Nothing -> f "" $ PTE.toList $ PTE.lookupPrefix s $ getCommands w tm
-- where
-- ss = words s'
-- s = fromMaybe "" $ ss ^? ix 0
-- a = fromMaybe "" $ ss ^? ix 1
-- f y m' = case fmap fst m' of
-- [] -> tm
-- [x] -> tm & tmStatus . tiText .~ (y ++ x)
-- xs ->
-- tm
-- & tmStatus
-- .~ TerminalLineRead
-- & tmFutureLines
-- .~ ( makeColorTermPara
-- commandColor
-- (unwords xs)
-- <> [TLine 1 [] . TmTmSetStatus $ TerminalTextInput s']
-- )
data TabCompletion a
= TabMatch a
| TabComplete String
| TabMultiComplete [String]
| TabFail
data RecCommands a =
RCommands {_rCommands :: (PTE.TrieMap Char (Either (RecCommands a) a))}
-- assumes that each command Trie has at least one successful command
recComFindMin :: RecCommands a -> Maybe ([String], a)
recComFindMin (RCommands m) = case PTE.findMin m of
Just (s,Right a) -> Just ([s],a)
Just (s,Left m') -> recComFindMin m' & _Just . _1 .:~ s
Nothing -> Nothing
recComFindMax :: RecCommands a -> Maybe ([String], a)
recComFindMax (RCommands m) = case PTE.findMax m of
Just (s,Right a) -> Just ([s],a)
Just (s,Left m') -> recComFindMax m' & _Just . _1 .:~ s
Nothing -> Nothing
--recComFindSuccessor :: [String] -> RecCommands a -> Maybe ([String],a)
--recComFindSuccessor (s:[]) (RCommands m) = case PTE.lookup s m of
-- Just (Left rm) ->
-- _ -> do
-- (s',_) <- PTE.findSuccessor s m & _Just . _1 %~ return
--recComFindSuccessor (s:ss) (RCommands m)
-- = do
-- Left rm <- PTE.lookup s m
-- recComFindSuccessor ss rm -- & _Just . _1 .:~ s
---- fromMaybe (recComFindSuccessor (s:[]) (RCommands m)) $
--
--recComFindPredecessor :: [String] -> RecCommands a -> Maybe ([String],a)
--recComFindPredecessor (s:ss) (RCommands m) = Nothing
instance Semigroup (RecCommands a) where
RCommands x <> RCommands y = RCommands $ x <> y
instance Monoid (RecCommands a) where
mempty = RCommands mempty
tbComplete :: String -> PTE.TrieMap Char a -> TabCompletion a
tbComplete s t = case e of
[] | Just x <- mx -> TabMatch x
[] -> case fmap fst $ PTE.toList t' of
[] -> TabFail
ss -> TabMultiComplete ss
_ -> TabComplete e
where
(e, mx, t') = PTE.splitPrefix $ PTE.deletePrefix s t
recTabComplete :: String -> TCommands -> TabCompletion [TerminalLine]
recTabComplete s (RCommands t) = fromMaybe (TabMultiComplete $ allstrings $ t) $ do
(s1,ss) <- stripHead $ words s
case tbComplete s1 t of
TabComplete e -> return $ TabComplete e
TabMultiComplete es -> return $ TabMultiComplete (fmap (s1 <>) es)
TabFail -> return $ TabFail
TabMatch (Right x) -> return $ TabMatch x
TabMatch (Left rm) -> return $ recTabComplete (unwords ss) rm
where
stripHead (x:xs) = Just (x,xs)
stripHead _ = Nothing
allstrings = fmap fst . PTE.toList
doTabComplete :: World -> Terminal -> Terminal
doTabComplete w tm = fromMaybe tm $ do
s <- tm ^? tmStatus . tiText
return $ tabComplete' s w tm
case recTabComplete s $ getCommands w tm of
TabMatch _ -> return tm
TabComplete e -> return $ tm & tmStatus . tiText <>~ e
TabMultiComplete ss -> return $ tm
& tmStatus .~ TerminalLineRead
& tmFutureLines .~
(makeColorTermPara commandColor (unwords ss) <> [TLine 1 [] . TmTmSetStatus $ TerminalTextInput s])
-- ugly, can improve output to explain when showing available arguments
tabComplete' :: String -> World -> Terminal -> Terminal
tabComplete' s' w tm = case PTE.lookup s $ getCommands w tm of
Just m -> f (s ++ " ") $ PTE.toList $ PTE.lookupPrefix a m
Nothing -> f "" $ PTE.toList $ PTE.lookupPrefix s $ getCommands w tm
where
ss = words s'
s = fromMaybe "" $ ss ^? ix 0
a = fromMaybe "" $ ss ^? ix 1
f y m' = case fmap fst m' of
[] -> tm
[x] -> tm & tmStatus . tiText .~ (y ++ x)
xs ->
tm
& tmStatus
.~ TerminalLineRead
& tmFutureLines
.~ ( makeColorTermPara
commandColor
(unwords xs)
<> [TLine 1 [] . TmTmSetStatus $ TerminalTextInput s']
)
tComplete
:: String
-> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
-> Either (String,[String]) (String,[String])
tComplete s pt = fromMaybe (Left (mempty,allcommands pt)) $ do
s1 <- words s ^? ix 0
let (e1,mx,pt') = PTE.splitPrefix $ PTE.deletePrefix s1 pt
case e1 of
[] -> do
pt'' <- mx
return $ fromMaybe (Right (mempty, allcommands pt'')) $ do
s2 <- words s ^? ix 1
let (e2,_,pt3) = PTE.splitPrefix $ PTE.deletePrefix s2 pt''
Just $ Right (e2, allcommands pt3)
_ -> Just $ Left (e1, allcommands pt')
where
allcommands = fmap fst . PTE.toList
TabFail -> return tm
-- (e,Right x) -> return $ tm & tmStatus . tiText .~ e
-- (e,Left ss) -> return $ tm
-- & tmStatus .~ TerminalLineRead
-- & tmFutureLines .~ (makeColorTermPara commandColor (unwords ss) <> [TLine 1 [] . TmTmSetStatus $ TerminalTextInput e])
-- damageCodeCommand :: TerminalCommand
-- damageCodeCommand =
@@ -193,33 +267,34 @@ simpleTermMessage strs = defaultTerminal & tmBootLines .~ map makeTermLine strs
-- list available arguments on function input?
terminalReturnEffect :: Int -> World -> World
terminalReturnEffect tmid w = fromMaybe w $ do
tm' <- w ^? cWorld . lWorld . terminals . ix tmid
let tm = tabComplete w tm'
s <- tm ^? tmStatus . tiText
let ss = fromMaybe [makeTermLine "ERROR: INPUT NOT RECOGNISED"] $ do
let args = words s
case args of
[] -> return helpPara
(x : _) -> do
teff <- PTE.lookup x (getCommands w tm)
let y = fromMaybe "" (args ^? ix 1)
PTE.lookup y teff
return $
w
& totm
. tmDisplayedLines
.:~ (getPromptTM ++ s, termTextColor)
& totm
. tmFutureLines
.~ ss
<> tlSetStatus (TerminalTextInput "")
& totm
. tmCommandHistory
%~ take 10
. (s :)
& totm
. tmStatus
.~ TerminalLineRead
where
totm = cWorld . lWorld . terminals . ix tmid
terminalReturnEffect tmid w = w
-- fromMaybe w $ do
-- tm' <- w ^? cWorld . lWorld . terminals . ix tmid
-- let tm = tabComplete w tm'
-- s <- tm ^? tmStatus . tiText
-- let ss = fromMaybe [makeTermLine "ERROR: INPUT NOT RECOGNISED"] $ do
-- let args = words s
-- case args of
-- [] -> return helpPara
-- (x : _) -> do
-- teff <- PTE.lookup x (getCommands w tm)
-- let y = fromMaybe "" (args ^? ix 1)
-- PTE.lookup y teff
-- return $
-- w
-- & totm
-- . tmDisplayedLines
-- .:~ (getPromptTM ++ s, termTextColor)
-- & totm
-- . tmFutureLines
-- .~ ss
-- <> tlSetStatus (TerminalTextInput "")
-- & totm
-- . tmCommandHistory
-- %~ take 10
-- . (s :)
-- & totm
-- . tmStatus
-- .~ TerminalLineRead
-- where
-- totm = cWorld . lWorld . terminals . ix tmid
+1 -1
View File
@@ -422,7 +422,7 @@ updateKeysTextInputTerminal tmid u =
| otherwise = id
tryTabComplete
| u ^. uvWorld . input . pressedKeys . at ScancodeTab == Just 0 =
uvWorld . cWorld . lWorld . terminals . ix tmid %~ tabComplete (u ^. uvWorld)
uvWorld . cWorld . lWorld . terminals . ix tmid %~ doTabComplete (u ^. uvWorld)
| otherwise = id
updateKeyInGame :: Universe -> Scancode -> Int -> Universe
+67 -69
View File
@@ -1,11 +1,9 @@
--{-# LANGUAGE TupleSections #-}
module Dodge.Update.Scroll (
updateWheelEvent,
) where
module Dodge.Update.Scroll (updateWheelEvent) where
import Control.Applicative
import Control.Monad
import qualified Data.ListTrie.Patricia.Map.Enum as PTE
--import qualified Data.ListTrie.Patricia.Map.Enum as PTE
import qualified Data.Map.Strict as M
import Data.Maybe
import Dodge.Base
@@ -130,74 +128,74 @@ moveCombineSel yi =
terminalWheelEvent :: Int -> Int -> World -> World
terminalWheelEvent yi tmid w
| w & has (input . mouseButtons . ix ButtonRight)
, Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
w & cWorld . lWorld . terminals . ix tmid %~ f
| Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
w & cWorld . lWorld . terminals . ix tmid %~ g
-- | w & has (input . mouseButtons . ix ButtonRight)
-- , Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
-- w & cWorld . lWorld . terminals . ix tmid %~ f
-- | Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
-- w & cWorld . lWorld . terminals . ix tmid %~ f
| otherwise = w
where
dowrap = if yi > 0 then wrapup else wrapdown
wrapup s coms = PTE.findSuccessor s coms <|> PTE.findMin coms
wrapdown s coms = PTE.findPredecessor s coms <|> PTE.findMax coms
f tm = fromMaybe tm $ do
let coms = getCommands w tm
x <- tm ^? tmStatus . tiText
let s = fromMaybe "" $ x ^? to words . ix 0
(s', _) <- dowrap s coms
return $ tm & tmStatus . tiText .~ s'
g tm = fromMaybe tm $ do
let coms = getCommands w tm
x <- tm ^? tmStatus . tiText
let s = fromMaybe "" $ x ^? to words . ix 0
y = fromMaybe "" $ x ^? to words . ix 1
(s', arg, _) <-
if yi > 0
then doubleFindSucc s y coms <|> doubleFindMin coms
else doubleFindPred s y coms <|> doubleFindMax coms
return $ tm & tmStatus . tiText .~ s' ++ " " ++ arg
-- dowrap = if yi > 0 then wrapup else wrapdown
-- wrapup s coms = recComFindSuccessor (words s) coms <|> recComFindMin coms
-- wrapdown s coms = recComFindPredecessor (words s) coms <|> recComFindMax coms
-- f tm = fromMaybe tm $ do
-- let coms = getCommands w tm
-- x <- tm ^? tmStatus . tiText
-- let s = fromMaybe "" $ x ^? to words . ix 0
-- (s', _) <- dowrap s coms
-- return $ tm & tmStatus . tiText .~ unwords s'
---- g tm = fromMaybe tm $ do
---- let coms = getCommands w tm
---- x <- tm ^? tmStatus . tiText
---- let s = fromMaybe "" $ x ^? to words . ix 0
---- y = fromMaybe "" $ x ^? to words . ix 1
---- (s', arg, _) <-
---- if yi > 0
---- then doubleFindSucc s y coms <|> doubleFindMin coms
---- else doubleFindPred s y coms <|> doubleFindMax coms
---- return $ tm & tmStatus . tiText .~ s' ++ " " ++ arg
doubleFindMin :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
doubleFindMin m = do
(x, n) <- PTE.findMin m
case PTE.findMin n of
Just (y, z) -> Just (x, y, z)
Nothing -> Nothing
doubleFindSucc :: (Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
doubleFindSucc xs ys m = case PTE.lookup xs m of
Just m' -> case PTE.findSuccessor ys m' of
Just (ys', z) -> Just (xs, ys', z)
Nothing -> dfs xs m
Nothing -> dfs xs m
where
dfs xs' m' = case PTE.findSuccessor xs' m' of
Just (xs'', n) -> case PTE.findMin n of
Just (ys', z) -> Just (xs'', ys', z)
Nothing -> dfs xs'' m'
Nothing -> Nothing
-- there are edge cases where this doesn't behave as might be expected
doubleFindMax :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
doubleFindMax m = do
(x, n) <- PTE.findMax m
case PTE.findMax n of
Just (y, z) -> Just (x, y, z)
Nothing -> Nothing
doubleFindPred ::
(Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
doubleFindPred xs ys m = case PTE.lookup xs m of
Just m' -> case PTE.findPredecessor ys m' of
Just (ys', z) -> Just (xs, ys', z)
Nothing -> dfs xs m
Nothing -> dfs xs m
where
dfs xs' m' = case PTE.findPredecessor xs' m' of
Just (xs'', n) -> case PTE.findMax n of
Just (ys', z) -> Just (xs'', ys', z)
Nothing -> dfs xs'' m'
Nothing -> Nothing
--doubleFindMin :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
--doubleFindMin m = do
-- (x, n) <- PTE.findMin m
-- case PTE.findMin n of
-- Just (y, z) -> Just (x, y, z)
-- Nothing -> Nothing
--
--doubleFindSucc :: (Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
--doubleFindSucc xs ys m = case PTE.lookup xs m of
-- Just m' -> case PTE.findSuccessor ys m' of
-- Just (ys', z) -> Just (xs, ys', z)
-- Nothing -> dfs xs m
-- Nothing -> dfs xs m
-- where
-- dfs xs' m' = case PTE.findSuccessor xs' m' of
-- Just (xs'', n) -> case PTE.findMin n of
-- Just (ys', z) -> Just (xs'', ys', z)
-- Nothing -> dfs xs'' m'
-- Nothing -> Nothing
--
---- there are edge cases where this doesn't behave as might be expected
--doubleFindMax :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
--doubleFindMax m = do
-- (x, n) <- PTE.findMax m
-- case PTE.findMax n of
-- Just (y, z) -> Just (x, y, z)
-- Nothing -> Nothing
--
--doubleFindPred ::
-- (Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c)
--doubleFindPred xs ys m = case PTE.lookup xs m of
-- Just m' -> case PTE.findPredecessor ys m' of
-- Just (ys', z) -> Just (xs, ys', z)
-- Nothing -> dfs xs m
-- Nothing -> dfs xs m
-- where
-- dfs xs' m' = case PTE.findPredecessor xs' m' of
-- Just (xs'', n) -> case PTE.findMax n of
-- Just (ys', z) -> Just (xs'', ys', z)
-- Nothing -> dfs xs'' m'
-- Nothing -> Nothing
scrollRBOption :: Int -> Int -> Int -> Int
scrollRBOption dy ymax
+62 -54
View File
@@ -1062,6 +1062,7 @@ QFloat src/Geometry/Data.hs 50;" t
QuarterRes src/Dodge/Data/Config.hs 111;" C
QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C
RAM src/Dodge/Data/Item/Combine.hs 73;" C
RCommands src/Dodge/Terminal.hs 166;" C
RED src/Color/Data.hs 12;" C
RELCURS src/Dodge/Data/Item/Combine.hs 40;" C
RELITEM src/Dodge/Data/Item/Combine.hs 41;" C
@@ -1085,6 +1086,7 @@ RandPS src/Dodge/Data/GenWorld.hs 55;" C
RandomImpulse src/Dodge/Data/ActionPlan.hs 31;" C
RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C
ReactorSS src/Dodge/Data/Scenario.hs 111;" C
RecCommands src/Dodge/Terminal.hs 165;" t
RecRoomSS src/Dodge/Data/Scenario.hs 103;" C
RectRoomType src/Dodge/Data/Room.hs 33;" C
ReducedRocketSmoke src/Dodge/Data/Projectile.hs 52;" C
@@ -1279,6 +1281,7 @@ TCBase src/Dodge/Data/Terminal.hs 48;" C
TCDamageCommand src/Dodge/Data/Terminal.hs 49;" C
TCInfo src/Dodge/Data/Terminal.hs 47;" C
TCom src/Dodge/Data/Terminal.hs 46;" t
TCommands src/Dodge/Terminal.hs 57;" t
TESLAGUN src/Dodge/Data/Item/Combine.hs 167;" C
THERMOMETER src/Dodge/Data/Item/Combine.hs 83;" C
THREELINES src/Dodge/Data/GenParams.hs 18;" C
@@ -1301,6 +1304,11 @@ TSright src/Dodge/Data/Input.hs 58;" C
TStab src/Dodge/Data/Input.hs 56;" C
TSup src/Dodge/Data/Input.hs 59;" C
TUBE src/Dodge/Data/Item/Combine.hs 51;" C
TabComplete src/Dodge/Terminal.hs 161;" C
TabCompletion src/Dodge/Terminal.hs 159;" t
TabFail src/Dodge/Terminal.hs 163;" C
TabMatch src/Dodge/Terminal.hs 160;" C
TabMultiComplete src/Dodge/Terminal.hs 162;" C
Tap src/Dodge/Data/SoundOrigin.hs 39;" C
TargetCursor src/Dodge/Data/Item/Targeting.hs 12;" C
TargetRBCreature src/Dodge/Data/Item/Targeting.hs 11;" C
@@ -2160,6 +2168,7 @@ _pzDir src/Dodge/Data/PulseLaser.hs 14;" f
_pzPhaseV src/Dodge/Data/PulseLaser.hs 12;" f
_pzPos src/Dodge/Data/PulseLaser.hs 13;" f
_pzTimer src/Dodge/Data/PulseLaser.hs 16;" f
_rCommands src/Dodge/Terminal.hs 166;" f
_radarBlips src/Dodge/Data/LWorld.hs 108;" f
_radarSweeps src/Dodge/Data/LWorld.hs 104;" f
_randGen src/Dodge/Data/World.hs 39;" f
@@ -2892,7 +2901,7 @@ combineList src/Dodge/Combine.hs 21;" f
combineRooms src/Dodge/Room/Procedural.hs 132;" f
combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 704;" f
combineTree src/Dodge/Tree/Compose.hs 67;" f
commandColor src/Dodge/Terminal.hs 121;" f
commandColor src/Dodge/Terminal.hs 128;" f
commonPrefix src/Dodge/Debug/Terminal.hs 149;" f
comp src/Quaternion.hs 61;" f
compP2A src/Dodge/ShiftPoint.hs 11;" f
@@ -3034,18 +3043,18 @@ damMatSideEffect src/Dodge/Material/Damage.hs 20;" f
damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 53;" f
damageBlock src/Dodge/Wall/Damage.hs 44;" f
damageCodeCommand src/Dodge/Terminal.hs 62;" f
damageCodeCommand src/Dodge/Terminal.hs 68;" f
damageCrWl src/Dodge/Damage.hs 29;" f
damageCrWlID src/Dodge/Damage.hs 23;" f
damageCrystal src/Dodge/Material/Damage.hs 220;" f
damageCrystal src/Dodge/Material/Damage.hs 222;" f
damageDirection src/Dodge/Damage.hs 35;" f
damageDirt src/Dodge/Material/Damage.hs 129;" f
damageFlesh src/Dodge/Material/Damage.hs 96;" f
damageGlass src/Dodge/Material/Damage.hs 154;" f
damageDirt src/Dodge/Material/Damage.hs 130;" f
damageFlesh src/Dodge/Material/Damage.hs 97;" f
damageGlass src/Dodge/Material/Damage.hs 156;" f
damageGlassBlock src/Dodge/Wall/Damage.hs 49;" f
damageHP src/Dodge/Creature/Damage.hs 37;" f
damageInCircle src/Dodge/Damage.hs 61;" f
damageMetal src/Dodge/Material/Damage.hs 64;" f
damageMetal src/Dodge/Material/Damage.hs 65;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f
damageStone src/Dodge/Material/Damage.hs 33;" f
damageThingHit src/Dodge/Bullet.hs 180;" f
@@ -3080,7 +3089,7 @@ debugPutItems src/Dodge/Debug.hs 78;" f
debugPutN src/Dodge/Debug.hs 84;" f
debugShowPath src/Dodge/Debug.hs 105;" f
debugWritableValues src/Dodge/Debug.hs 118;" f
decodeSensorType src/Dodge/Terminal.hs 76;" f
decodeSensorType src/Dodge/Terminal.hs 82;" f
decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f
decomposeTree src/Dodge/Tree/Compose.hs 58;" f
decontamRoom src/Dodge/Room/Airlock.hs 38;" f
@@ -3156,7 +3165,7 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f
destroyMcType src/Dodge/Machine/Destroy.hs 22;" f
destroyMount src/Dodge/Wall/Damage.hs 90;" f
destroyMounts src/Dodge/Wall/Damage.hs 87;" f
destroyProjectile src/Dodge/Projectile/Update.hs 109;" f
destroyProjectile src/Dodge/Projectile/Update.hs 112;" f
detV src/Geometry/Vector.hs 94;" f
detector src/Dodge/Item/Held/Utility.hs 27;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 432;" f
@@ -3193,7 +3202,7 @@ dmType src/Dodge/Damage.hs 38;" f
doAimTwist src/Dodge/Creature/YourControl.hs 154;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBarrelSpin src/Dodge/Projectile/Update.hs 158;" f
doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f
doBlBl src/Dodge/BlBl.hs 5;" f
doBounce src/Dodge/Base/Collide.hs 67;" f
doButtonEvent src/Dodge/Button/Event.hs 9;" f
@@ -3240,14 +3249,15 @@ doRandImpulse src/Dodge/RandImpulse.hs 7;" f
doRegexInput src/Dodge/Update/Input/InGame.hs 453;" f
doRoomPlacements src/Dodge/Layout.hs 104;" f
doRoomShift src/Dodge/Room/Link.hs 33;" f
doScopeZoom src/Dodge/Update/Scroll.hs 91;" f
doScopeZoom src/Dodge/Update/Scroll.hs 89;" f
doSectionSize src/Dodge/DisplayInventory.hs 215;" f
doSideEffects appDodge/Main.hs 117;" f
doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 172;" f
doTabComplete src/Dodge/Terminal.hs 221;" f
doTestDrawing src/Dodge/Render.hs 40;" f
doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 129;" f
doThrust src/Dodge/Projectile/Update.hs 132;" f
doTimeScroll src/Dodge/Update.hs 205;" f
doTmWdWd src/Dodge/WorldEffect.hs 101;" f
doWallRotate src/Dodge/Update/Camera.hs 227;" f
@@ -3263,10 +3273,6 @@ doorLerp src/Dodge/Door.hs 40;" f
dotV src/Geometry/Vector.hs 76;" f
dotV3 src/Geometry/Vector3D.hs 119;" f
doubleCorridorBarrels src/Dodge/Room/Room.hs 284;" f
doubleFindMax src/Dodge/Update/Scroll.hs 181;" f
doubleFindMin src/Dodge/Update/Scroll.hs 160;" f
doubleFindPred src/Dodge/Update/Scroll.hs 188;" f
doubleFindSucc src/Dodge/Update/Scroll.hs 167;" f
doublePair src/Geometry.hs 162;" f
doublePairSet src/Geometry.hs 166;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 129;" f
@@ -3476,7 +3482,7 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f
expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 188;" f
explodeShell src/Dodge/Projectile/Update.hs 229;" f
explodeShell src/Dodge/Projectile/Update.hs 274;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 656;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 80;" f
@@ -3597,8 +3603,8 @@ getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 173;" f
getBulletType src/Dodge/HeldUse.hs 906;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 539;" f
getCommand src/Dodge/Terminal.hs 52;" f
getCommands src/Dodge/Terminal.hs 49;" f
getCommand src/Dodge/Terminal.hs 62;" f
getCommands src/Dodge/Terminal.hs 59;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 349;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 336;" f
@@ -3723,7 +3729,7 @@ heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f
heldPositionInfo src/Dodge/Item/Info.hs 240;" f
heldTorqueAmount src/Dodge/HeldUse.hs 586;" f
heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f
helpPara src/Dodge/Terminal.hs 97;" f
helpPara src/Dodge/Terminal.hs 104;" f
helpPoly3D src/Polyhedra.hs 125;" f
heron src/Geometry.hs 218;" f
hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f
@@ -3896,7 +3902,7 @@ itemRooms src/Dodge/LockAndKey.hs 39;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPicTree.hs 16;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 17;" f
itemScan src/Dodge/Item/Scope.hs 63;" f
itemScroll src/Dodge/Update/Scroll.hs 57;" f
itemScroll src/Dodge/Update/Scroll.hs 55;" f
itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 127;" f
itemScrollValue src/Dodge/Inventory/SelectionList.hs 154;" f
itemShapeMax src/Dodge/Item/Orientation.hs 56;" f
@@ -4076,8 +4082,8 @@ makeBlockDebris src/Dodge/Block/Debris.hs 36;" f
makeBullet src/Dodge/HeldUse.hs 971;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 118;" f
makeColorTermPara src/Dodge/Terminal.hs 115;" f
makeColorTermLine src/Dodge/Terminal.hs 125;" f
makeColorTermPara src/Dodge/Terminal.hs 122;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 48;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f
@@ -4107,8 +4113,8 @@ makeSourcedShader src/Shader/Compile.hs 54;" f
makeSpark src/Dodge/Spark.hs 45;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 23;" f
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
makeTermLine src/Dodge/Terminal.hs 103;" f
makeTermPara src/Dodge/Terminal.hs 112;" f
makeTermLine src/Dodge/Terminal.hs 110;" f
makeTermPara src/Dodge/Terminal.hs 119;" f
makeTeslaArc src/Dodge/Tesla.hs 29;" f
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 39;" f
makeTileFromPoly src/Tile.hs 34;" f
@@ -4221,13 +4227,13 @@ mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 70;" f
mouseCursorType src/Dodge/Render/Picture.hs 90;" f
mouseWorldPos src/Dodge/Base/Coordinate.hs 37;" f
moveBullet src/Dodge/Bullet.hs 197;" f
moveCombineSel src/Dodge/Update/Scroll.hs 121;" f
moveCombineSel src/Dodge/Update/Scroll.hs 119;" f
moveInverseShockwave src/Dodge/Shockwave/Update.hs 31;" f
movePenBullet src/Dodge/Bullet.hs 203;" f
moveProjectile src/Dodge/Projectile/Update.hs 210;" f
moveProjectile src/Dodge/Projectile/Update.hs 249;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 197;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 228;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 96;" f
moveWall src/Dodge/Wall/Move.hs 23;" f
moveWallID src/Dodge/Wall/Move.hs 18;" f
@@ -4388,7 +4394,7 @@ pingPongBetween src/Render.hs 210;" f
pipe src/Dodge/Item/Craftable.hs 32;" f
pistol src/Dodge/Item/Held/Stick.hs 40;" f
pistolerRoom src/Dodge/Room/Room.hs 338;" f
pjRemoteSetDirection src/Dodge/Projectile/Update.hs 173;" f
pjRemoteSetDirection src/Dodge/Projectile/Update.hs 196;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f
@@ -4565,7 +4571,7 @@ qToV2 src/Quaternion.hs 52;" f
qToV3 src/Quaternion.hs 49;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 193;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 157;" f
quitCommand src/Dodge/Terminal.hs 100;" f
quitCommand src/Dodge/Terminal.hs 107;" f
qz src/Quaternion.hs 67;" f
rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f
rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f
@@ -4611,6 +4617,9 @@ randsSpread src/RandomHelp.hs 120;" f
ratIntersectLineLine src/Geometry/Intersect.hs 216;" f
rdToVec2s src/Dodge/Render.hs 424;" f
readSaveSlot src/Dodge/Save.hs 45;" f
recComFindMax src/Dodge/Terminal.hs 175;" f
recComFindMin src/Dodge/Terminal.hs 169;" f
recTabComplete src/Dodge/Terminal.hs 212;" f
recoilAmount src/Dodge/HeldUse.hs 467;" f
rectNSWE src/Geometry/Polygon.hs 15;" f
rectVV src/Geometry/Polygon.hs 40;" f
@@ -4791,7 +4800,7 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f
screenToWorldPos src/Dodge/Base/Coordinate.hs 40;" f
scrollAugInvSel src/Dodge/Inventory.hs 191;" f
scrollAugNextInSection src/Dodge/Inventory.hs 204;" f
scrollRBOption src/Dodge/Update/Scroll.hs 202;" f
scrollRBOption src/Dodge/Update/Scroll.hs 200;" f
scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f
scrollTimeBack src/Dodge/Update.hs 215;" f
scrollTimeForward src/Dodge/Update.hs 232;" f
@@ -4817,7 +4826,7 @@ selSecDrawCursor src/Dodge/Render/List.hs 101;" f
selSecSelCol src/Dodge/Render/HUD.hs 501;" f
selSecSelSize src/Dodge/SelectionSections.hs 143;" f
selSecYint src/Dodge/SelectionSections.hs 152;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 49;" f
semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 744;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f
@@ -4887,8 +4896,8 @@ shapeVerxSize src/Shape/Parameters.hs 5;" f
shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f
shatterGunSPic src/Dodge/Item/Draw/SPic.hs 313;" f
shellExplosionCheck src/Dodge/Projectile/Update.hs 50;" f
shellHitCreature src/Dodge/Projectile/Update.hs 81;" f
shellHitFloor src/Dodge/Projectile/Update.hs 95;" f
shellHitCreature src/Dodge/Projectile/Update.hs 84;" f
shellHitFloor src/Dodge/Projectile/Update.hs 98;" f
shellHitWall src/Dodge/Projectile/Update.hs 60;" f
shellMag src/Dodge/Item/Ammo.hs 49;" f
shellModule src/Dodge/Item/Scope.hs 123;" f
@@ -4949,7 +4958,7 @@ shuffleRoomPos src/Dodge/Layout.hs 82;" f
shuffleTail src/RandomHelp.hs 59;" f
sigmoid src/Dodge/Base.hs 151;" f
simpleCrSprings src/Dodge/Update.hs 876;" f
simpleTermMessage src/Dodge/Terminal.hs 173;" f
simpleTermMessage src/Dodge/Terminal.hs 260;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 716;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 752;" f
singleAmmo src/Dodge/Item/AmmoSlots.hs 64;" f
@@ -5106,8 +5115,6 @@ t src/ShortShow.hs 48;" f
tEast src/Dodge/Room/Corridor.hs 91;" f
tToBTree src/Dodge/Tree/Compose.hs 92;" f
tWest src/Dodge/Room/Corridor.hs 116;" f
tabComplete src/Dodge/Terminal.hs 124;" f
tabComplete' src/Dodge/Terminal.hs 130;" f
takeN src/RandomHelp.hs 44;" f
takeNMore src/RandomHelp.hs 41;" f
takeOne src/RandomHelp.hs 22;" f
@@ -5132,16 +5139,17 @@ targetYouLOS src/Dodge/Creature/ChooseTarget.hs 8;" f
targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 202;" f
targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f
targetingScope src/Dodge/Item/Scope.hs 38;" f
tbComplete src/Dodge/Terminal.hs 202;" f
teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f
termScreenColor src/Dodge/Terminal/Color.hs 8;" f
termSoundLine src/Dodge/Terminal.hs 43;" f
termTextColor src/Dodge/Terminal.hs 46;" f
termSoundLine src/Dodge/Terminal.hs 50;" f
termTextColor src/Dodge/Terminal.hs 53;" f
terminalLDP src/Dodge/ListDisplayParams.hs 44;" f
terminalReturnEffect src/Dodge/Terminal.hs 177;" f
terminalReturnEffect src/Dodge/Terminal.hs 264;" f
terminalSPic src/Dodge/Machine/Draw.hs 47;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 44;" f
terminalShape src/Dodge/Machine/Draw.hs 50;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 131;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 129;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 410;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f
@@ -5150,13 +5158,13 @@ testInventory src/Dodge/Creature.hs 290;" f
testStringInit src/Dodge/TestString.hs 34;" f
text src/Picture/Base.hs 196;" f
textGrad src/Picture/Text.hs 5;" f
textInputBlurb src/Dodge/Terminal.hs 37;" f
textInputBlurb src/Dodge/Terminal.hs 44;" f
textInputFocus src/Dodge/InputFocus.hs 11;" f
textJustifyCenter src/Picture/Base.hs 227;" f
textJustifyLeft src/Picture/Base.hs 223;" f
textJustifyRight src/Picture/Base.hs 213;" f
textRight src/Picture/Base.hs 218;" f
textTerminal src/Dodge/Terminal.hs 34;" f
textTerminal src/Dodge/Terminal.hs 41;" f
textVMirror src/Picture/Base.hs 231;" f
tflat2 src/Picture/Data.hs 56;" f
tflat3 src/Picture/Data.hs 60;" f
@@ -5194,8 +5202,8 @@ tingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f
tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 802;" f
titleOptionsMenu src/Dodge/Menu.hs 106;" f
titleOptionsNoWrite src/Dodge/Menu.hs 109;" f
tlDoEffect src/Dodge/Terminal.hs 109;" f
tlSetStatus src/Dodge/Terminal.hs 106;" f
tlDoEffect src/Dodge/Terminal.hs 116;" f
tlSetStatus src/Dodge/Terminal.hs 113;" f
tmDistributeAmmo src/Dodge/WorldEffect.hs 117;" f
tmDistributeLines src/Dodge/Room/Room.hs 449;" f
tmMachine src/Dodge/Placement/Instance/Terminal.hs 54;" f
@@ -5213,7 +5221,7 @@ toV2 src/Geometry/Data.hs 54;" f
toV3 src/Geometry/Data.hs 57;" f
toV4 src/Geometry/Data.hs 60;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 315;" f
toggleCommands src/Dodge/Terminal.hs 81;" f
toggleCommands src/Dodge/Terminal.hs 87;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 67;" f
toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 105;" f
toggleJust src/MaybeHelp.hs 39;" f
@@ -5291,9 +5299,9 @@ tryPlay src/Sound.hs 84;" f
tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f
tryPutItemInInvAt src/Dodge/Inventory/Add.hs 54;" f
trySeedFromClipboard src/Dodge/Menu.hs 96;" f
trySpin src/Dodge/Projectile/Update.hs 117;" f
trySpin src/Dodge/Projectile/Update.hs 120;" f
trySynthBullet src/Dodge/Creature/State.hs 167;" f
tryThrust src/Dodge/Projectile/Update.hs 123;" f
tryThrust src/Dodge/Projectile/Update.hs 126;" f
tryUseParent src/Dodge/Creature/State.hs 145;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 22;" f
@@ -5340,7 +5348,7 @@ updateArc src/Dodge/Tesla.hs 44;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 484;" f
updateBarrel src/Dodge/Barreloid.hs 44;" f
updateBarreloid src/Dodge/Barreloid.hs 16;" f
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 32;" f
updateBounds src/Dodge/Update/Camera.hs 265;" f
updateBulVel src/Dodge/Bullet.hs 57;" f
updateBullet src/Dodge/Bullet.hs 22;" f
@@ -5428,7 +5436,7 @@ updateRandNode src/TreeHelp.hs 109;" f
updateRenderSplit appDodge/Main.hs 104;" f
updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f
updateRootItemID src/Dodge/Inventory/Location.hs 41;" f
updateScopeZoom src/Dodge/Update/Scroll.hs 79;" f
updateScopeZoom src/Dodge/Update/Scroll.hs 77;" f
updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f
updateSection src/Dodge/DisplayInventory.hs 262;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f
@@ -5452,7 +5460,7 @@ updateUseInputInGame src/Dodge/Update/Input/InGame.hs 46;" f
updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f
updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f
updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f
updateWheelEvent src/Dodge/Update/Scroll.hs 25;" f
updateWheelEvent src/Dodge/Update/Scroll.hs 23;" f
updateWheelEvents src/Dodge/Update.hs 417;" f
updateWorldEventFlag src/Dodge/Update.hs 121;" f
updateWorldEventFlags src/Dodge/Update.hs 109;" f
@@ -5655,7 +5663,7 @@ zoneWall src/Dodge/Zoning/Wall.hs 65;" f
zonesAroundPoint src/Dodge/Zoning/Base.hs 98;" f
zonesExtract src/Dodge/Zoning/Base.hs 62;" f
zoomFloatingCamera src/Dodge/Update/Camera.hs 76;" f
zoomInLongGun src/Dodge/Update/Scroll.hs 105;" f
zoomOutLongGun src/Dodge/Update/Scroll.hs 113;" f
zoomInLongGun src/Dodge/Update/Scroll.hs 103;" f
zoomOutLongGun src/Dodge/Update/Scroll.hs 111;" f
zoomScope src/Dodge/Item/Scope.hs 33;" f
zoomSpeed src/Dodge/Update/Scroll.hs 102;" f
zoomSpeed src/Dodge/Update/Scroll.hs 100;" f