Move towards implementing terminal autocomplete

This commit is contained in:
2025-08-16 23:13:24 +01:00
parent f7759b1f31
commit 76b6cda19b
14 changed files with 351 additions and 261 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+12 -8
View File
@@ -8,7 +8,6 @@ module Dodge.Data.Terminal (
module Dodge.Data.Terminal.Status, module Dodge.Data.Terminal.Status,
) where ) where
import qualified Data.ListTrie.Patricia.Map.Enum as PT
import Sound.Data import Sound.Data
import Color import Color
import Control.Lens import Control.Lens
@@ -31,12 +30,12 @@ data Terminal = Terminal
, _tmExternalColor :: Color , _tmExternalColor :: Color
, _tmDisplayedLines :: [(String, Color)] , _tmDisplayedLines :: [(String, Color)]
, _tmFutureLines :: [TerminalLine] , _tmFutureLines :: [TerminalLine]
, _tmCommands :: [TerminalCommand] , _tmCommands :: [TCom]
, _tmDeathEffect :: TmWdWd , _tmDeathEffect :: TmWdWd
, _tmStatus :: TerminalStatus , _tmStatus :: TerminalStatus
, _tmCommandHistory :: [String] , _tmCommandHistory :: [String]
, _tmToggles :: M.Map String TerminalToggle , _tmToggles :: M.Map String TerminalToggle
, _tmPartialCommand :: Maybe TerminalCommand -- , _tmPartialCommand :: Maybe TerminalCommand
} }
data TerminalLineString = TerminalLineConst String Color data TerminalLineString = TerminalLineConst String Color
@@ -77,10 +76,13 @@ data TerminalCommand = TerminalCommand
, _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments , _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
} }
data TCom = TCom data TCom = TCInfo String String
{ _tcomHelp :: String | TCBase
, _tcomArgs :: PT.TrieMap Char [TerminalLine]
} --data TEff = TEff
-- { _teffHelp :: String
-- , _teffArgs :: PTE.TrieMap Char [TerminalLine]
-- }
data TmWdWd data TmWdWd
= TmWdId = TmWdId
@@ -90,13 +92,14 @@ data TmWdWd
| TmWdWdDoDeathTriggers | TmWdWdDoDeathTriggers
| TmTmClearDisplayedLines | TmTmClearDisplayedLines
| TmTmSetStatus TerminalStatus | TmTmSetStatus TerminalStatus
| TmTmSetPartialCommand (Maybe TerminalCommand) | TmDisplayCommands
makeLenses ''Terminal makeLenses ''Terminal
makeLenses ''TerminalLine makeLenses ''TerminalLine
makeLenses ''TerminalToggle makeLenses ''TerminalToggle
makeLenses ''EffectArguments makeLenses ''EffectArguments
makeLenses ''TerminalCommand makeLenses ''TerminalCommand
makeLenses ''TCom
concat concat
<$> mapM <$> mapM
(deriveJSON defaultOptions) (deriveJSON defaultOptions)
@@ -106,6 +109,7 @@ concat
, ''EffectArguments , ''EffectArguments
, ''TerminalCommandEffect , ''TerminalCommandEffect
, ''TerminalCommand , ''TerminalCommand
, ''TCom
, ''TmWdWd , ''TmWdWd
, ''Terminal , ''Terminal
] ]
+1 -1
View File
@@ -10,7 +10,7 @@ import Data.Aeson.TH
data TerminalStatus data TerminalStatus
= TerminalOff = TerminalOff
| TerminalBusy | TerminalBusy
| TerminalTextInput {_tiText :: String, _tiSel :: Int} | TerminalTextInput {_tiText :: String}
| TerminalPressTo {_tptString :: String} | TerminalPressTo {_tptString :: String}
-- | TerminalArgumentInput TerminalCommand -- | TerminalArgumentInput TerminalCommand
deriving (Eq) deriving (Eq)
+2 -5
View File
@@ -16,14 +16,11 @@ defaultTerminal =
, _tmMachineID = 0 , _tmMachineID = 0
, _tmDisplayedLines = [] , _tmDisplayedLines = []
, _tmFutureLines = [] , _tmFutureLines = []
-- , _tmInput = defaultTerminalInput , _tmCommands = [TCInfo "TEST" "display text",TCBase]
, _tmCommands = [] , _tmDeathEffect = TmWdWdDoDeathTriggers
-- , _tmWriteCommands = []
, _tmDeathEffect = TmWdId
, _tmStatus = TerminalOff , _tmStatus = TerminalOff
, _tmCommandHistory = [] , _tmCommandHistory = []
, _tmToggles = mempty , _tmToggles = mempty
, _tmPartialCommand = Nothing
, _tmExternalColor = dark magenta , _tmExternalColor = dark magenta
} }
+2 -1
View File
@@ -21,7 +21,8 @@ analyser proxreq pslight psmc = extTrigLitPos pslight $ \tp ->
(themachine & mcMounts . at OTTrigger .~ _plMID tp) (themachine & mcMounts . at OTTrigger .~ _plMID tp)
tparams -- (linksensortotrigger tp) tparams -- (linksensortotrigger tp)
where where
tparams = basicTerminal & tmCommands .:~ sensorCommand --tparams = basicTerminal & tmCommands .:~ sensorCommand
tparams = basicTerminal
-- linksensortotrigger tp _ mc -- linksensortotrigger tp _ mc
-- = triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc) -- = triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc)
themachine = themachine =
+1 -1
View File
@@ -384,7 +384,7 @@ drawTerminalDisplay tid cfig w = fromMaybe mempty $ do
displayTermInput tm = case _tmStatus tm of displayTermInput tm = case _tmStatus tm of
TerminalOff -> id TerminalOff -> id
TerminalBusy -> (++ [([cFilledRect], white)]) TerminalBusy -> (++ [([cFilledRect], white)])
TerminalTextInput s _ -> TerminalTextInput s ->
(++ [(getPromptTM ++ s ++ [cFilledRect], white)]) (++ [(getPromptTM ++ s ++ [cFilledRect], white)])
TerminalPressTo s -> TerminalPressTo s ->
(++ [("PRESS TO "++s, white)]) (++ [("PRESS TO "++s, white)])
+2 -1
View File
@@ -74,7 +74,8 @@ sensInsideDoor senseType outplid rm =
.++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100)) .++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100))
, psPt atFstLnkOut . PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100)) , psPt atFstLnkOut . PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100))
, psPt atFstLnkOut . PutForeground $ verticalWire (V2 20 0) 0 80 , psPt atFstLnkOut . PutForeground $ verticalWire (V2 20 0) 0 80
, putMessageTerminal terminalColor (basicTerminal & tmCommands .:~ damageCodeCommand) , putMessageTerminal terminalColor (basicTerminal-- & tmCommands .:~ damageCodeCommand)
)
& plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10) & plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10)
] ]
& rmOutPmnt .~ [OutPlacement (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) outplid] & rmOutPmnt .~ [OutPlacement (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) outplid]
+1 -1
View File
@@ -47,7 +47,7 @@ addWarningTerminal str outplid =
) )
termMessages trpl = termMessages trpl =
lineOutputTerminal (makeColorTermLine red "WARNING" : makeTermPara str) lineOutputTerminal (makeColorTermLine red "WARNING" : makeTermPara str)
& tmCommands .:~ toggleCommand -- & tmCommands .:~ toggleCommand
& tmToggles & tmToggles
.~ M.fromList .~ M.fromList
[("DOOR", TerminalToggle (fromJust $ _plMID trpl) (BlConst True))] [("DOOR", TerminalToggle (fromJust $ _plMID trpl) (BlConst True))]
+157 -132
View File
@@ -1,10 +1,11 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Terminal ( module Dodge.Terminal (
doTerminalCommandEffect, -- doTerminalCommandEffect,
makeTermLine, makeTermLine,
commandFutureLines, -- commandFutureLines,
quitCommand, -- quitCommand,
helpCommand, -- helpCommand,
commandsCommand, -- commandsCommand,
connectionBlurbLines, connectionBlurbLines,
disconnectTerminal, disconnectTerminal,
basicTerminal, basicTerminal,
@@ -15,15 +16,18 @@ module Dodge.Terminal (
makeTermPara, makeTermPara,
toggleCommand, toggleCommand,
terminalReturnEffect, terminalReturnEffect,
getCommands,
makeColorTermPara,
commandColor,
) where ) where
import Dodge.Data.WorldEffect import qualified Data.ListTrie.Patricia.Map.Enum as PTE
--import Dodge.Data.WorldEffect
import Dodge.Data.Terminal.Status import Dodge.Data.Terminal.Status
import Color import Color
--import Control.Monad --import Control.Monad
import Data.Char --import Data.Char
import Data.Foldable --import qualified Data.Map.Strict as M
import qualified Data.Map.Strict as M
import Data.Maybe import Data.Maybe
import Dodge.Data.World import Dodge.Data.World
import Dodge.Default import Dodge.Default
@@ -31,18 +35,13 @@ import Dodge.SoundLogic
import Dodge.Terminal.Type import Dodge.Terminal.Type
import Justify import Justify
import LensHelp import LensHelp
import ListHelp (safeHead, safeUncons) --import ListHelp (safeHead, safeUncons)
import Sound.Data import Sound.Data
basicTerminal :: Terminal basicTerminal :: Terminal
basicTerminal = basicTerminal =
defaultTerminal defaultTerminal
{ _tmDisplayedLines = [] { _tmBootLines = connectionBlurb
, _tmFutureLines = []
-- , _tmTitle = "TERMINAL"
, _tmCommands = [helpCommand,commandsCommand,quitCommand]
-- , _tmWriteCommands = [helpCommand, commandsCommand]
, _tmBootLines = connectionBlurb
, _tmDeathEffect = TmWdWdDoDeathTriggers , _tmDeathEffect = TmWdWdDoDeathTriggers
} }
@@ -52,53 +51,53 @@ connectionBlurbLines tls =
, TLine 0 [TerminalLineConst "LOADING TEXT INTERFACE..." termTextColor] TmWdId , TLine 0 [TerminalLineConst "LOADING TEXT INTERFACE..." termTextColor] TmWdId
] ]
++ tls ++ tls
++ [ TLine 10 [TerminalLineConst "READY FOR INPUT" termTextColor] (TmTmSetStatus (TerminalTextInput "" 0))] ++ [ TLine 10 [TerminalLineConst "READY FOR INPUT" termTextColor] (TmTmSetStatus (TerminalTextInput ""))]
-- ++ [TerminalLineEffect 0 (TmTmSetStatus (TerminalTextInput "" 0))] -- ++ [TerminalLineEffect 0 (TmTmSetStatus (TerminalTextInput "" 0))]
quitCommand :: TerminalCommand --quitCommand :: TerminalCommand
quitCommand = --quitCommand =
TerminalCommand -- TerminalCommand
{ _tcString = "QUIT" -- { _tcString = "QUIT"
, _tcAlias = ["Q", "EXIT", "X", "SHUTDOWN", ""] -- , _tcAlias = ["Q", "EXIT", "X", "SHUTDOWN", ""]
, _tcHelp = "Disconnects the terminal." -- , _tcHelp = "Disconnects the terminal."
, _tcEffect = TerminalCommandArguments $ NoArguments [TLine 0 [] TmWdWdDisconnectTerminal] -- , _tcEffect = TerminalCommandArguments $ NoArguments [TLine 0 [] TmWdWdDisconnectTerminal]
} -- }
helpCommand :: TerminalCommand --helpCommand :: TerminalCommand
helpCommand = --helpCommand =
TerminalCommand -- TerminalCommand
{ _tcString = "HELP" -- { _tcString = "HELP"
, _tcAlias = ["H", "MAN"] -- , _tcAlias = ["H", "MAN"]
, _tcHelp = "Displays help for a specific command." -- , _tcHelp = "Displays help for a specific command."
, _tcEffect = TerminalCommandEffectHelp -- \tm -> OneArgument "AN AVAILABLE COMMAND" . getCommandsHelp tm -- , _tcEffect = TerminalCommandEffectHelp -- \tm -> OneArgument "AN AVAILABLE COMMAND" . getCommandsHelp tm
} -- }
getCommandsHelp :: Terminal -> World -> M.Map String [TerminalLine] --getCommandsHelp :: Terminal -> World -> M.Map String [TerminalLine]
getCommandsHelp tm w = foldr f mempty $ getCommands tm --getCommandsHelp tm w = foldr f mempty $ getCommands tm
where -- where
f tc = -- f tc =
M.insert -- M.insert
(_tcString tc) -- (_tcString tc)
( [ makeTermLine "Command:" -- ( [ makeTermLine "Command:"
, makeColorTermLine commandColor (_tcString tc) -- , makeColorTermLine commandColor (_tcString tc)
, makeTermLine "Aliases:" -- , makeTermLine "Aliases:"
, makeColorTermLine commandColor (unwords (_tcAlias tc)) -- , makeColorTermLine commandColor (unwords (_tcAlias tc))
] -- ]
++ case argumentHelp tc tm w of -- ++ case argumentHelp tc tm w of
(arghelp, Nothing) -> makeTermPara $ _tcHelp tc ++ " " ++ arghelp -- (arghelp, Nothing) -> makeTermPara $ _tcHelp tc ++ " " ++ arghelp
(arghelp, Just args) -> -- (arghelp, Just args) ->
makeTermPara (_tcHelp tc ++ " " ++ arghelp) -- makeTermPara (_tcHelp tc ++ " " ++ arghelp)
++ [makeColorTermLine commandColor $ unwords args] -- ++ [makeColorTermLine commandColor $ unwords args]
) -- )
commandsCommand :: TerminalCommand --commandsCommand :: TerminalCommand
commandsCommand = --commandsCommand =
TerminalCommand -- TerminalCommand
{ _tcString = "COMMANDS" -- { _tcString = "COMMANDS"
, _tcAlias = ["COMMAND", "COM"] -- , _tcAlias = ["COMMAND", "COM"]
, _tcHelp = "Displays available commands." -- , _tcHelp = "Displays available commands."
, _tcEffect = TerminalCommandEffectCommands -- , _tcEffect = TerminalCommandEffectCommands
} -- }
connectionBlurb :: [TerminalLine] connectionBlurb :: [TerminalLine]
connectionBlurb = connectionBlurbLines [] connectionBlurb = connectionBlurbLines []
@@ -109,8 +108,28 @@ termSoundLine sid = TLine 0 [] (TmWdWdTermSound sid)
termTextColor :: Color termTextColor :: Color
termTextColor = greyN 0.9 termTextColor = greyN 0.9
getCommands :: Terminal -> [TerminalCommand] getCommands :: Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
getCommands tm = _tmCommands tm -- ++ _tmWriteCommands tm getCommands = foldMap getCommand . _tmCommands -- tm -- ++ _tmWriteCommands tm
getCommand :: TCom -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
getCommand = \case
TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z))
TCBase -> helpCommand <> commandsCommand <> quitCommand
helpCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
helpCommand = PTE.singleton "HELP" (fmap makeTermPara helpStrings)
helpStrings :: PTE.TrieMap Char String
helpStrings = PTE.fromList
[("", "THIS TERMINAL PROCESSES TEXT INPUT. INPUT \"COMMANDS\" TO LIST AVAILABLE FUNCTIONALITY.")
,("HELP", "BASIC HELP. ACCEPTS A COMMAND AS AN ARGUMENT.")
]
commandsCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
commandsCommand = PTE.singleton "COMMANDS" (PTE.singleton "" [TLine 0 [] TmDisplayCommands])
quitCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
quitCommand = PTE.singleton "QUIT" (PTE.singleton "" [TLine 0 [] TmWdWdDisconnectTerminal])
makeTermLine :: String -> TerminalLine makeTermLine :: String -> TerminalLine
makeTermLine = makeColorTermLine termTextColor makeTermLine = makeColorTermLine termTextColor
@@ -127,29 +146,29 @@ makeColorTermLine col str = TLine 1 [TerminalLineConst str col] TmWdId
commandColor :: Color commandColor :: Color
commandColor = yellow commandColor = yellow
doTerminalCommandEffect :: TerminalCommandEffect -> Terminal -> World -> EffectArguments --doTerminalCommandEffect :: TerminalCommandEffect -> Terminal -> World -> EffectArguments
doTerminalCommandEffect tce = case tce of --doTerminalCommandEffect tce = case tce of
TerminalCommandArguments eas -> \_ _ -> eas -- TerminalCommandArguments eas -> \_ _ -> eas
TerminalCommandEffectDamageCoding -> \_ -> OneArgument "a damage type" . getDamageCoding -- TerminalCommandEffectDamageCoding -> \_ -> OneArgument "a damage type" . getDamageCoding
TerminalCommandEffectSensorParameter -> \tm -> OneArgument "a sensor parameter" . sensorInfoMap tm -- TerminalCommandEffectSensorParameter -> \tm -> OneArgument "a sensor parameter" . sensorInfoMap tm
TerminalCommandEffectLinkedObject -> \tm _ -> OneArgument "a linked object" (togglesToEffects tm) -- TerminalCommandEffectLinkedObject -> \tm _ -> OneArgument "a linked object" (togglesToEffects tm)
TerminalCommandEffectHelp -> \tm -> OneArgument "an available command" . getCommandsHelp tm -- TerminalCommandEffectHelp -> \tm -> OneArgument "an available command" . getCommandsHelp tm
TerminalCommandEffectNoArgumentsStr str -> \_ _ -> NoArguments (makeTermPara str) -- TerminalCommandEffectNoArgumentsStr str -> \_ _ -> NoArguments (makeTermPara str)
TerminalCommandEffectCommands -> \tm _ -> -- TerminalCommandEffectCommands -> \tm _ ->
NoArguments -- NoArguments
( makeTermLine "Available commands:" : -- ( makeTermLine "Available commands:" :
makeColorTermPara commandColor (unwords (map _tcString $ getCommands tm)) -- makeColorTermPara commandColor (unwords (map _tcString $ getCommands tm))
) -- )
TerminalCommandEffectSingleCommand eff followingLines -> \_ _ -> NoArguments $ TLine 0 [] (TmWdWdfromWdWd eff) : map makeTermLine followingLines -- TerminalCommandEffectSingleCommand eff followingLines -> \_ _ -> NoArguments $ TLine 0 [] (TmWdWdfromWdWd eff) : map makeTermLine followingLines
TerminalCommandEffectNone -> \_ _ -> NoArguments [] -- TerminalCommandEffectNone -> \_ _ -> NoArguments []
argumentHelp :: TerminalCommand -> Terminal -> World -> (String, Maybe [String]) --argumentHelp :: TerminalCommand -> Terminal -> World -> (String, Maybe [String])
argumentHelp tc tm w = case doTerminalCommandEffect (_tcEffect tc) tm w of --argumentHelp tc tm w = case doTerminalCommandEffect (_tcEffect tc) tm w of
NoArguments{} -> ("Any arguments provided to this command are ignored.", Nothing) -- NoArguments{} -> ("Any arguments provided to this command are ignored.", Nothing)
OneArgument argtype argm -> -- OneArgument argtype argm ->
( "Expects " ++ argtype ++ " as argument. Available arguments: " -- ( "Expects " ++ argtype ++ " as argument. Available arguments: "
, Just (M.keys argm) -- , Just (M.keys argm)
) -- )
--infoCommand :: String -> TerminalCommand --infoCommand :: String -> TerminalCommand
--infoCommand str = --infoCommand str =
@@ -169,24 +188,24 @@ argumentHelp tc tm w = case doTerminalCommandEffect (_tcEffect tc) tm w of
-- , _tcEffect = TerminalCommandEffectSingleCommand eff followingLines -- , _tcEffect = TerminalCommandEffectSingleCommand eff followingLines
-- } -- }
getDamageCoding :: World -> M.Map String [TerminalLine] --getDamageCoding :: World -> M.Map String [TerminalLine]
getDamageCoding = decodedtmap . _sensorCoding . _cwgParams . _cwGen . _cWorld --getDamageCoding = decodedtmap . _sensorCoding . _cwgParams . _cwGen . _cWorld
sensorInfoMap :: Terminal -> World -> M.Map String [TerminalLine] --sensorInfoMap :: Terminal -> World -> M.Map String [TerminalLine]
sensorInfoMap tm w = --sensorInfoMap tm w =
M.fromList -- M.fromList
[ ("Requirement", getSensor _proxRequirement tm w) -- [ ("Requirement", getSensor _proxRequirement tm w)
, ("Distance", getSensor _proxDist tm w) -- , ("Distance", getSensor _proxDist tm w)
, ("Currentstatus", getSensor _proxStatus tm w) -- , ("Currentstatus", getSensor _proxStatus tm w)
, ("Paststatus", getSensor _sensToggle tm w) -- , ("Paststatus", getSensor _sensToggle tm w)
] -- ]
getSensor :: Show a => (Sensor -> a) -> Terminal -> World -> [TerminalLine] --getSensor :: Show a => (Sensor -> a) -> Terminal -> World -> [TerminalLine]
getSensor f tm w = --getSensor f tm w =
maybe -- maybe
[] -- []
(makeTermPara . map toLower . show . f) -- (makeTermPara . map toLower . show . f)
(w ^? cWorld . lWorld . machines . ix (_tmMachineID tm) . mcType . _McSensor) -- (w ^? cWorld . lWorld . machines . ix (_tmMachineID tm) . mcType . _McSensor)
toggleCommand :: TerminalCommand toggleCommand :: TerminalCommand
toggleCommand = toggleCommand =
@@ -197,8 +216,8 @@ toggleCommand =
, _tcEffect = TerminalCommandEffectLinkedObject -- \tm _ -> OneArgument "A LINKED OBJECT" (togglesToEffects tm) , _tcEffect = TerminalCommandEffectLinkedObject -- \tm _ -> OneArgument "A LINKED OBJECT" (togglesToEffects tm)
} }
decodedtmap :: M.Map SensorType (PaletteColor, DecorationShape) -> M.Map String [TerminalLine] --decodedtmap :: M.Map SensorType (PaletteColor, DecorationShape) -> M.Map String [TerminalLine]
decodedtmap = M.mapKeys show . M.map ((: []) . makeTermLine . show) --decodedtmap = M.mapKeys show . M.map ((: []) . makeTermLine . show)
sensorCommand :: TerminalCommand sensorCommand :: TerminalCommand
sensorCommand = sensorCommand =
@@ -240,51 +259,57 @@ damageCodeCommand =
-- . (tmFutureLines ++.~ tls) -- . (tmFutureLines ++.~ tls)
-- ) -- )
togglesToEffects :: Terminal -> M.Map String [TerminalLine] --togglesToEffects :: Terminal -> M.Map String [TerminalLine]
togglesToEffects = fmap f . _tmToggles --togglesToEffects = fmap f . _tmToggles
where -- where
f tt = [TLine 0 [] $ TmWdWdfromWdWd $ WdWdNegateTrig (_ttTriggerID tt)] -- f tt = [TLine 0 [] $ TmWdWdfromWdWd $ WdWdNegateTrig (_ttTriggerID tt)]
simpleTermMessage :: [String] -> Terminal simpleTermMessage :: [String] -> Terminal
simpleTermMessage strs = defaultTerminal & tmBootLines .~ map makeTermLine strs simpleTermMessage strs = defaultTerminal & tmBootLines .~ map makeTermLine strs
commandFutureLines :: String -> Terminal -> World -> [TerminalLine] --commandFutureLines :: String -> Terminal -> World -> [TerminalLine]
commandFutureLines s tm w = fromMaybe [errline "^ Invalid command"] $ do --commandFutureLines s tm w = fromMaybe [errline "^ Invalid command"] $ do
(str, args) <- safeUncons $ words s -- (str, args) <- safeUncons $ words s
command <- find (\tc -> _tcString tc == str || str `elem` _tcAlias tc) (getCommands tm) -- command <- find (\tc -> _tcString tc == str || str `elem` _tcAlias tc) (getCommands tm)
case doTerminalCommandEffect (_tcEffect command) tm w of -- case doTerminalCommandEffect (_tcEffect command) tm w of
NoArguments tls -> Just tls -- NoArguments tls -> Just tls
OneArgument argtype m -> -- OneArgument argtype m ->
let setpartial -- let setpartial
| null (_tmPartialCommand tm) = -- | null (_tmPartialCommand tm) =
TLine 0 [] (TmTmSetPartialCommand (Just command)) : -- TLine 0 [] (TmTmSetPartialCommand (Just command)) :
makeTermPara ("Expects " ++ argtype ++ " as an argument") -- makeTermPara ("Expects " ++ argtype ++ " as an argument")
| otherwise = -- | otherwise =
TLine 0 [] (TmTmSetPartialCommand Nothing) : -- TLine 0 [] (TmTmSetPartialCommand Nothing) :
makeTermPara "No argument input, cancelling" -- makeTermPara "No argument input, cancelling"
in Just $ -- in Just $
fromMaybe setpartial $ -- fromMaybe setpartial $
safeHead args >>= (m M.!?) -- safeHead args >>= (m M.!?)
where -- where
errline = makeColorTermLine red -- errline = makeColorTermLine red
terminalReturnEffect :: Int -> World -> World terminalReturnEffect :: Int -> World -> World
terminalReturnEffect tmid w = fromMaybe w $ do terminalReturnEffect tmid w = fromMaybe w $ do
tm <- w ^? cWorld . lWorld . terminals. ix tmid tm <- w ^? cWorld . lWorld . terminals. ix tmid
-- guard $ _tmStatus tm == TerminalTextInput
s <- tm ^? tmStatus . tiText s <- tm ^? tmStatus . tiText
let pc = maybe "" (++ " ") $ tm ^? tmPartialCommand . _Just . tcString
return $ return $
runTerminalString (pc ++ s) tm $ runTerminalInput s tm $
w w
& cWorld . lWorld . terminals . ix tmid . tmPartialCommand .~ Nothing & cWorld . lWorld . terminals . ix tmid . tmDisplayedLines
& cWorld . lWorld . terminals . ix tmid . tmFutureLines .:~ (getPromptTM ++ s,termTextColor)
.~ [makeTermLine (pc ++ getPromptTM ++ s)]
runTerminalString :: String -> Terminal -> World -> World runTerminalInput :: String -> Terminal -> World -> World
runTerminalString s tm w = runTerminalInput s tm w =
w & cWorld . lWorld . terminals . ix (_tmID tm) w & cWorld . lWorld . terminals . ix (_tmID tm)
%~ ( --(tmInput .~ TerminalInput{ _tiSel = (0, 0)}) %~ ( --(tmInput .~ TerminalInput{ _tiSel = (0, 0)})
(tmFutureLines ++.~ commandFutureLines s tm w)
(tmFutureLines ++.~ ss)
. (tmCommandHistory %~ take 10 . (s :)) . (tmCommandHistory %~ take 10 . (s :))
. (tmStatus .~ TerminalTextInput "")
) )
where
ss = fromMaybe [makeTermLine "ERROR: INPUT NOT RECOGNISED"] $ do
let args = words s
x <- args ^? ix 0
teff <- PTE.lookup x (getCommands tm)
let y = fromMaybe "" (args ^? ix 1)
PTE.lookup y teff
+1 -1
View File
@@ -10,6 +10,6 @@ import Control.Lens
termScreenColor :: Terminal -> Maybe Color termScreenColor :: Terminal -> Maybe Color
termScreenColor tm = case tm ^. tmStatus of termScreenColor tm = case tm ^. tmStatus of
TerminalOff -> Nothing TerminalOff -> Nothing
TerminalTextInput _ _ -> Just green TerminalTextInput _ -> Just green
TerminalPressTo{} -> Just green TerminalPressTo{} -> Just green
TerminalBusy -> Just white TerminalBusy -> Just white
+71 -9
View File
@@ -1,7 +1,10 @@
{-# LANGUAGE TupleSections #-}
module Dodge.Update.Scroll ( module Dodge.Update.Scroll (
updateWheelEvent, updateWheelEvent,
) where ) where
import Control.Applicative
import qualified Data.ListTrie.Patricia.Map.Enum as PTE
import Dodge.Data.Terminal.Status import Dodge.Data.Terminal.Status
import Dodge.Data.EquipType import Dodge.Data.EquipType
import Padding import Padding
@@ -123,16 +126,34 @@ moveCombineSel yi =
return $ ci & ciSelection %~ scrollSelectionSections yi sss return $ ci & ciSelection %~ scrollSelectionSections yi sss
terminalWheelEvent :: Int -> Int -> World -> World terminalWheelEvent :: Int -> Int -> World -> World
--terminalWheelEvent yi tmid w terminalWheelEvent yi tmid w
terminalWheelEvent _ tmid w
| w & has (input . mouseButtons . ix ButtonRight) | w & has (input . mouseButtons . ix ButtonRight)
, Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus = , Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
w -- & cWorld . lWorld . terminals . ix tmid %~ updatetermsubsel w & cWorld . lWorld . terminals . ix tmid %~ g
| Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus = | Just TerminalTextInput{} <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus =
w -- & cWorld . lWorld . terminals . ix tmid %~ updatetermsel w & cWorld . lWorld . terminals . ix tmid %~ f
| otherwise = w | otherwise = w
where where
-- updatetermsel tm = case tm ^? tmInput . tiSel of 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 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 tm
x <- tm ^? tmStatus . tiText
let s = fromMaybe "" $ x ^? to words . ix 0
y = fromMaybe "" $ x ^? to words . ix 1
-- (s',m) <- fmap (s,) (PTE.lookup s coms) <|> dowrap s coms
-- (arg,_) <- dowrap y m
(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
--case tm ^? tmInput . tiSel of
-- Nothing -> tm & tmInput . tiSel .~ (0, 0) -- Nothing -> tm & tmInput . tiSel .~ (0, 0)
-- Just (i, _) -> -- Just (i, _) ->
-- let newi = (i - yi) `mod` length (scrollCommandStrings w tm) -- let newi = (i - yi) `mod` length (scrollCommandStrings w tm)
@@ -151,6 +172,47 @@ terminalWheelEvent _ tmid w
-- tc = scrollCommands tm !! i -- tc = scrollCommands tm !! i
-- arg = getArguments' tc tm w !! j -- arg = getArguments' tc tm w !! j
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 :: Int -> Int -> Int -> Int
scrollRBOption dy ymax scrollRBOption dy ymax
| dy < 0 = min (ymax -1) . subtract dy | dy < 0 = min (ymax -1) . subtract dy
@@ -177,7 +239,7 @@ scrollRBOption dy ymax
-- , _tcEffect = TerminalCommandEffectNone -- \_ _ -> NoArguments [] -- , _tcEffect = TerminalCommandEffectNone -- \_ _ -> NoArguments []
-- } -- }
getArguments :: TerminalCommand -> Terminal -> World -> [String] --getArguments :: TerminalCommand -> Terminal -> World -> [String]
getArguments tc tm w = case doTerminalCommandEffect (_tcEffect tc) tm w of --getArguments tc tm w = case doTerminalCommandEffect (_tcEffect tc) tm w of
NoArguments{} -> [] -- NoArguments{} -> []
OneArgument _ m -> map (' ' :) $ M.keys m -- OneArgument _ m -> map (' ' :) $ M.keys m
+8 -5
View File
@@ -5,6 +5,7 @@ module Dodge.WorldEffect (
lineOutputTerminal, lineOutputTerminal,
) where ) where
import qualified Data.ListTrie.Patricia.Map.Enum as PTE
--import Dodge.DoubleTree --import Dodge.DoubleTree
import Dodge.Data.Terminal.Status import Dodge.Data.Terminal.Status
import Dodge.Item.Grammar import Dodge.Item.Grammar
@@ -78,9 +79,6 @@ lineOutputTerminal tls =
defaultTerminal defaultTerminal
{ _tmDisplayedLines = [] { _tmDisplayedLines = []
, _tmFutureLines = [] , _tmFutureLines = []
-- , _tmTitle = "TERMINAL"
, _tmCommands = [helpCommand,commandsCommand,quitCommand]
-- , _tmWriteCommands = [helpCommand, commandsCommand]
, _tmBootLines = connectionBlurbLines tls , _tmBootLines = connectionBlurbLines tls
, _tmDeathEffect = TmWdWdDoDeathTriggers , _tmDeathEffect = TmWdWdDoDeathTriggers
} }
@@ -101,9 +99,14 @@ doTmWdWd tmwdwd = case tmwdwd of
TmTmSetStatus x -> \tm -> fromMaybe id $ do TmTmSetStatus x -> \tm -> fromMaybe id $ do
tid <- tm ^? tmID tid <- tm ^? tmID
return $ cWorld . lWorld . terminals . ix tid . tmStatus .~ x return $ cWorld . lWorld . terminals . ix tid . tmStatus .~ x
TmTmSetPartialCommand x -> \tm -> fromMaybe id $ do TmDisplayCommands -> \tm -> fromMaybe id $ do
tid <- tm ^? tmID tid <- tm ^? tmID
return $ cWorld . lWorld . terminals . ix tid . tmPartialCommand .~ x return $ cWorld . lWorld . terminals . ix tid . tmFutureLines .~
makeColorTermPara commandColor
(unwords (map fst (PTE.toList $ getCommands tm)))
-- TmTmSetPartialCommand x -> \tm -> fromMaybe id $ do
-- tid <- tm ^? tmID
-- return $ cWorld . lWorld . terminals . ix tid . tmPartialCommand .~ x
TmWdId -> const id TmWdId -> const id
TmWdWdDisconnectTerminal -> disconnectTerminal TmWdWdDisconnectTerminal -> disconnectTerminal
TmWdWdTermSound sid -> \tm w -> TmWdWdTermSound sid -> \tm w ->
+6 -6
View File
@@ -31,19 +31,19 @@ lookupTrie :: Ord a => [a] -> Trie a b -> Maybe b
lookupTrie (k : ks) t = _trieChildren t M.!? k >>= lookupTrie ks lookupTrie (k : ks) t = _trieChildren t M.!? k >>= lookupTrie ks
lookupTrie [] t = _trieMVal t lookupTrie [] t = _trieMVal t
--nextTrie :: Ord a => [a] -> Trie a b -> Maybe (b, Trie a b) ----nextTrie :: Ord a => [a] -> Trie a b -> Maybe (b, Trie a b)
nextTrie :: [a] -> Trie a b -> Maybe (b, Trie a b) --nextTrie :: [a] -> Trie a b -> Maybe (b, Trie a b)
nextTrie (k:ks) t = undefined --nextTrie (k:ks) t = undefined
nextTrie [] t = Nothing --nextTrie [] t = Nothing
splitLookupTrie :: Ord a => [a] -> Trie a b -> (Trie a b,Maybe b,Trie a b) splitLookupTrie :: Ord a => [a] -> Trie a b -> (Trie a b,Maybe b,Trie a b)
splitLookupTrie (k:ks) t@(Trie x xs) = case m of splitLookupTrie (k:ks) (Trie x xs) = case m of
Nothing -> (Trie x l,Nothing,Trie x r) Nothing -> (Trie x l,Nothing,Trie x r)
Just t' -> let (l',m',r') = splitLookupTrie ks t' Just t' -> let (l',m',r') = splitLookupTrie ks t'
in (Trie x (M.insert k l' l),m', Trie x (M.insert k r' r)) in (Trie x (M.insert k l' l),m', Trie x (M.insert k r' r))
where where
(l,m,r) = M.splitLookup k xs (l,m,r) = M.splitLookup k xs
splitLookupTrie [] t@(Trie x xs) = (Trie Nothing mempty,x, Trie Nothing xs) splitLookupTrie [] (Trie x xs) = (Trie Nothing mempty,x, Trie Nothing xs)
-- the above would be better if it removed empty trie strings; the left trie -- the above would be better if it removed empty trie strings; the left trie
-- will always be empty and the right trie might be empty. -- will always be empty and the right trie might be empty.
-- I cannot think of a smart way to do this -- I cannot think of a smart way to do this
+86 -89
View File
@@ -17,7 +17,7 @@
<$> src/Dodge/Data/Camera.hs 39;" o <$> src/Dodge/Data/Camera.hs 39;" o
<$> src/Dodge/Data/Creature.hs 80;" o <$> src/Dodge/Data/Creature.hs 80;" o
<$> src/Dodge/Data/LWorld.hs 184;" o <$> src/Dodge/Data/LWorld.hs 184;" o
<$> src/Dodge/Data/Terminal.hs 95;" o <$> src/Dodge/Data/Terminal.hs 106;" o
ABSOLUTE src/Dodge/Data/Item/Combine.hs 40;" C ABSOLUTE src/Dodge/Data/Item/Combine.hs 40;" C
AIUNIT src/Dodge/Data/Item/Combine.hs 75;" C AIUNIT src/Dodge/Data/Item/Combine.hs 75;" C
ALTERIFLE src/Dodge/Data/Item/Combine.hs 155;" C ALTERIFLE src/Dodge/Data/Item/Combine.hs 155;" C
@@ -392,7 +392,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 47;" C
East src/Dodge/Data/CardinalPoint.hs 5;" C East src/Dodge/Data/CardinalPoint.hs 5;" C
East8 src/Dodge/Data/CardinalPoint.hs 13;" C East8 src/Dodge/Data/CardinalPoint.hs 13;" C
EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t
EffectArguments src/Dodge/Data/Terminal.hs 54;" t EffectArguments src/Dodge/Data/Terminal.hs 55;" t
EighthRes src/Dodge/Data/Config.hs 97;" C EighthRes src/Dodge/Data/Config.hs 97;" C
Eldritch src/Dodge/Data/Scenario.hs 34;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C
ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C
@@ -846,7 +846,7 @@ NewIntMap src/NewInt.hs 18;" t
NewSideEffect src/Dodge/Data/Universe.hs 65;" C NewSideEffect src/Dodge/Data/Universe.hs 65;" C
NoAction src/Dodge/Data/ActionPlan.hs 152;" C NoAction src/Dodge/Data/ActionPlan.hs 152;" C
NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C
NoArguments src/Dodge/Data/Terminal.hs 55;" C NoArguments src/Dodge/Data/Terminal.hs 56;" C
NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C
NoConcurrentEffect src/Loop/Data.hs 7;" C NoConcurrentEffect src/Loop/Data.hs 7;" C
NoCrImp src/Dodge/Data/CreatureEffect.hs 24;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 24;" C
@@ -946,7 +946,7 @@ OnRightWrist src/Dodge/Data/Equipment/Misc.hs 26;" C
OnSpecial src/Dodge/Data/Equipment/Misc.hs 28;" C OnSpecial src/Dodge/Data/Equipment/Misc.hs 28;" C
OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnTurret src/Dodge/Data/Item/Location.hs 37;" C
OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C
OneArgument src/Dodge/Data/Terminal.hs 56;" C OneArgument src/Dodge/Data/Terminal.hs 57;" C
OneHand src/Dodge/Data/AimStance.hs 9;" C OneHand src/Dodge/Data/AimStance.hs 9;" C
OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C
OnwardList src/Dodge/Annotation/Data.hs 16;" C OnwardList src/Dodge/Annotation/Data.hs 16;" C
@@ -1309,6 +1309,9 @@ SwarmCrit src/Dodge/Data/Creature/Misc.hs 71;" C
SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C
TAPE src/Dodge/Data/Item/Combine.hs 56;" C TAPE src/Dodge/Data/Item/Combine.hs 56;" C
TARGETING src/Dodge/Data/Item/Combine.hs 22;" C TARGETING src/Dodge/Data/Item/Combine.hs 22;" C
TCBase src/Dodge/Data/Terminal.hs 81;" C
TCInfo src/Dodge/Data/Terminal.hs 80;" C
TCom src/Dodge/Data/Terminal.hs 80;" t
TESLAGUN src/Dodge/Data/Item/Combine.hs 169;" C TESLAGUN src/Dodge/Data/Item/Combine.hs 169;" C
THERMOMETER src/Dodge/Data/Item/Combine.hs 85;" C THERMOMETER src/Dodge/Data/Item/Combine.hs 85;" C
THREELINES src/Dodge/Data/GenParams.hs 20;" C THREELINES src/Dodge/Data/GenParams.hs 20;" C
@@ -1316,7 +1319,7 @@ TIMESCROLLER src/Dodge/Data/Item/Combine.hs 144;" C
TIMESTOPPER src/Dodge/Data/Item/Combine.hs 143;" C TIMESTOPPER src/Dodge/Data/Item/Combine.hs 143;" C
TIN src/Dodge/Data/Item/Combine.hs 58;" C TIN src/Dodge/Data/Item/Combine.hs 58;" C
TINMAG src/Dodge/Data/Item/Combine.hs 108;" C TINMAG src/Dodge/Data/Item/Combine.hs 108;" C
TLine src/Dodge/Data/Terminal.hs 43;" C TLine src/Dodge/Data/Terminal.hs 44;" C
TO src/Shader/Data.hs 59;" t TO src/Shader/Data.hs 59;" t
TORCH src/Dodge/Data/Item/Combine.hs 176;" C TORCH src/Dodge/Data/Item/Combine.hs 176;" C
TRACTORGUN src/Dodge/Data/Item/Combine.hs 170;" C TRACTORGUN src/Dodge/Data/Item/Combine.hs 170;" C
@@ -1340,28 +1343,28 @@ TargetingLaser src/Dodge/Data/Laser.hs 18;" C
TargetingType src/Dodge/Data/Item/Targeting.hs 11;" t TargetingType src/Dodge/Data/Item/Targeting.hs 11;" t
TeleSound src/Dodge/Data/SoundOrigin.hs 36;" C TeleSound src/Dodge/Data/SoundOrigin.hs 36;" C
TermSignal src/Dodge/Data/Input.hs 54;" t TermSignal src/Dodge/Data/Input.hs 54;" t
Terminal src/Dodge/Data/Terminal.hs 25;" t Terminal src/Dodge/Data/Terminal.hs 26;" t
TerminalBusy src/Dodge/Data/Terminal/Status.hs 12;" C TerminalBusy src/Dodge/Data/Terminal/Status.hs 12;" C
TerminalCommand src/Dodge/Data/Terminal.hs 72;" t TerminalCommand src/Dodge/Data/Terminal.hs 73;" t
TerminalCommandArguments src/Dodge/Data/Terminal.hs 62;" C TerminalCommandArguments src/Dodge/Data/Terminal.hs 63;" C
TerminalCommandEffect src/Dodge/Data/Terminal.hs 61;" t TerminalCommandEffect src/Dodge/Data/Terminal.hs 62;" t
TerminalCommandEffectCommands src/Dodge/Data/Terminal.hs 68;" C TerminalCommandEffectCommands src/Dodge/Data/Terminal.hs 69;" C
TerminalCommandEffectDamageCoding src/Dodge/Data/Terminal.hs 63;" C TerminalCommandEffectDamageCoding src/Dodge/Data/Terminal.hs 64;" C
TerminalCommandEffectHelp src/Dodge/Data/Terminal.hs 66;" C TerminalCommandEffectHelp src/Dodge/Data/Terminal.hs 67;" C
TerminalCommandEffectLinkedObject src/Dodge/Data/Terminal.hs 65;" C TerminalCommandEffectLinkedObject src/Dodge/Data/Terminal.hs 66;" C
TerminalCommandEffectNoArgumentsStr src/Dodge/Data/Terminal.hs 67;" C TerminalCommandEffectNoArgumentsStr src/Dodge/Data/Terminal.hs 68;" C
TerminalCommandEffectNone src/Dodge/Data/Terminal.hs 70;" C TerminalCommandEffectNone src/Dodge/Data/Terminal.hs 71;" C
TerminalCommandEffectSensorParameter src/Dodge/Data/Terminal.hs 64;" C TerminalCommandEffectSensorParameter src/Dodge/Data/Terminal.hs 65;" C
TerminalCommandEffectSingleCommand src/Dodge/Data/Terminal.hs 69;" C TerminalCommandEffectSingleCommand src/Dodge/Data/Terminal.hs 70;" C
TerminalLine src/Dodge/Data/Terminal.hs 43;" t TerminalLine src/Dodge/Data/Terminal.hs 44;" t
TerminalLineConst src/Dodge/Data/Terminal.hs 41;" C TerminalLineConst src/Dodge/Data/Terminal.hs 42;" C
TerminalLineString src/Dodge/Data/Terminal.hs 41;" t TerminalLineString src/Dodge/Data/Terminal.hs 42;" t
TerminalOff src/Dodge/Data/Terminal/Status.hs 11;" C TerminalOff src/Dodge/Data/Terminal/Status.hs 11;" C
TerminalPressTo src/Dodge/Data/Terminal/Status.hs 14;" C TerminalPressTo src/Dodge/Data/Terminal/Status.hs 14;" C
TerminalSound src/Dodge/Data/SoundOrigin.hs 24;" C TerminalSound src/Dodge/Data/SoundOrigin.hs 24;" C
TerminalStatus src/Dodge/Data/Terminal/Status.hs 10;" t TerminalStatus src/Dodge/Data/Terminal/Status.hs 10;" t
TerminalTextInput src/Dodge/Data/Terminal/Status.hs 13;" C TerminalTextInput src/Dodge/Data/Terminal/Status.hs 13;" C
TerminalToggle src/Dodge/Data/Terminal.hs 49;" t TerminalToggle src/Dodge/Data/Terminal.hs 50;" t
Terrestrial src/Dodge/Data/Scenario.hs 72;" C Terrestrial src/Dodge/Data/Scenario.hs 72;" C
TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t
TeslaArc src/Dodge/Data/TeslaArc.hs 17;" t TeslaArc src/Dodge/Data/TeslaArc.hs 17;" t
@@ -1373,15 +1376,15 @@ Tile src/Data/Tile.hs 16;" t
Tiled src/Data/Tile.hs 14;" C Tiled src/Data/Tile.hs 14;" C
TimeFlowStatus src/Dodge/Data/World.hs 58;" t TimeFlowStatus src/Dodge/Data/World.hs 58;" t
Tiny src/Shape/Data.hs 32;" C Tiny src/Shape/Data.hs 32;" C
TmTmClearDisplayedLines src/Dodge/Data/Terminal.hs 85;" C TmDisplayCommands src/Dodge/Data/Terminal.hs 96;" C
TmTmSetPartialCommand src/Dodge/Data/Terminal.hs 87;" C TmTmClearDisplayedLines src/Dodge/Data/Terminal.hs 94;" C
TmTmSetStatus src/Dodge/Data/Terminal.hs 86;" C TmTmSetStatus src/Dodge/Data/Terminal.hs 95;" C
TmWdId src/Dodge/Data/Terminal.hs 80;" C TmWdId src/Dodge/Data/Terminal.hs 89;" C
TmWdWd src/Dodge/Data/Terminal.hs 79;" t TmWdWd src/Dodge/Data/Terminal.hs 88;" t
TmWdWdDisconnectTerminal src/Dodge/Data/Terminal.hs 81;" C TmWdWdDisconnectTerminal src/Dodge/Data/Terminal.hs 90;" C
TmWdWdDoDeathTriggers src/Dodge/Data/Terminal.hs 84;" C TmWdWdDoDeathTriggers src/Dodge/Data/Terminal.hs 93;" C
TmWdWdTermSound src/Dodge/Data/Terminal.hs 83;" C TmWdWdTermSound src/Dodge/Data/Terminal.hs 92;" C
TmWdWdfromWdWd src/Dodge/Data/Terminal.hs 82;" C TmWdWdfromWdWd src/Dodge/Data/Terminal.hs 91;" C
ToContinueStart src/Sound/Data.hs 27;" C ToContinueStart src/Sound/Data.hs 27;" C
ToPlaySound src/Sound/Data.hs 35;" t ToPlaySound src/Sound/Data.hs 35;" t
ToStart src/Sound/Data.hs 26;" C ToStart src/Sound/Data.hs 26;" C
@@ -1560,8 +1563,8 @@ _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f
_aps src/Dodge/Data/Muzzle.hs 22;" f _aps src/Dodge/Data/Muzzle.hs 22;" f
_arbitraryAction src/Dodge/Data/ActionPlan.hs 167;" f _arbitraryAction src/Dodge/Data/ActionPlan.hs 167;" f
_arcNode src/Dodge/Data/LWorld.hs 117;" f _arcNode src/Dodge/Data/LWorld.hs 117;" f
_argList src/Dodge/Data/Terminal.hs 58;" f _argList src/Dodge/Data/Terminal.hs 59;" f
_argType src/Dodge/Data/Terminal.hs 57;" f _argType src/Dodge/Data/Terminal.hs 58;" f
_asDir src/Dodge/Data/ArcStep.hs 16;" f _asDir src/Dodge/Data/ArcStep.hs 16;" f
_asObject src/Dodge/Data/ArcStep.hs 17;" f _asObject src/Dodge/Data/ArcStep.hs 17;" f
_asPos src/Dodge/Data/ArcStep.hs 15;" f _asPos src/Dodge/Data/ArcStep.hs 15;" f
@@ -1694,7 +1697,7 @@ _cloudEBO src/Data/Preload/Render.hs 51;" f
_cloudShader src/Data/Preload/Render.hs 50;" f _cloudShader src/Data/Preload/Render.hs 50;" f
_cloudVBO src/Data/Preload/Render.hs 49;" f _cloudVBO src/Data/Preload/Render.hs 49;" f
_clouds src/Dodge/Data/LWorld.hs 103;" f _clouds src/Dodge/Data/LWorld.hs 103;" f
_cmdEffect src/Dodge/Data/Terminal.hs 55;" f _cmdEffect src/Dodge/Data/Terminal.hs 56;" f
_colorBlurShader src/Data/Preload/Render.hs 22;" f _colorBlurShader src/Data/Preload/Render.hs 22;" f
_coolEnd src/Dodge/Data/TriggerType.hs 17;" f _coolEnd src/Dodge/Data/TriggerType.hs 17;" f
_coolSound src/Dodge/Data/Item/Params.hs 24;" f _coolSound src/Dodge/Data/Item/Params.hs 24;" f
@@ -2417,17 +2420,16 @@ _tbPos src/Dodge/Data/TractorBeam.hs 14;" f
_tbStartPos src/Dodge/Data/TractorBeam.hs 15;" f _tbStartPos src/Dodge/Data/TractorBeam.hs 15;" f
_tbTime src/Dodge/Data/TractorBeam.hs 17;" f _tbTime src/Dodge/Data/TractorBeam.hs 17;" f
_tbVel src/Dodge/Data/TractorBeam.hs 16;" f _tbVel src/Dodge/Data/TractorBeam.hs 16;" f
_tcAlias src/Dodge/Data/Terminal.hs 74;" f _tcAlias src/Dodge/Data/Terminal.hs 75;" f
_tcEffect src/Dodge/Data/Terminal.hs 76;" f _tcEffect src/Dodge/Data/Terminal.hs 77;" f
_tcHelp src/Dodge/Data/Terminal.hs 75;" f _tcHelp src/Dodge/Data/Terminal.hs 76;" f
_tcString src/Dodge/Data/Terminal.hs 73;" f _tcString src/Dodge/Data/Terminal.hs 74;" f
_termID src/Dodge/Data/HUD.hs 42;" f _termID src/Dodge/Data/HUD.hs 42;" f
_terminals src/Dodge/Data/LWorld.hs 128;" f _terminals src/Dodge/Data/LWorld.hs 128;" f
_teslaArcs src/Dodge/Data/LWorld.hs 116;" f _teslaArcs src/Dodge/Data/LWorld.hs 116;" f
_testFloat src/Dodge/Data/World.hs 43;" f _testFloat src/Dodge/Data/World.hs 43;" f
_textInput src/Dodge/Data/Input.hs 49;" f _textInput src/Dodge/Data/Input.hs 49;" f
_textureObject src/Shader/Data.hs 95;" f _textureObject src/Shader/Data.hs 95;" f
_tiSel src/Dodge/Data/Terminal/Status.hs 13;" f
_tiText src/Dodge/Data/Terminal/Status.hs 13;" f _tiText src/Dodge/Data/Terminal/Status.hs 13;" f
_tileArrayZ src/Data/Tile.hs 24;" f _tileArrayZ src/Data/Tile.hs 24;" f
_tilePoly src/Data/Tile.hs 17;" f _tilePoly src/Data/Tile.hs 17;" f
@@ -2436,22 +2438,21 @@ _tileZero src/Data/Tile.hs 19;" f
_tiles src/Data/Tile.hs 14;" f _tiles src/Data/Tile.hs 14;" f
_timeFlow src/Dodge/Data/World.hs 38;" f _timeFlow src/Dodge/Data/World.hs 38;" f
_timeFlowCharge src/Dodge/Data/World.hs 78;" f _timeFlowCharge src/Dodge/Data/World.hs 78;" f
_tlEffect src/Dodge/Data/Terminal.hs 46;" f _tlEffect src/Dodge/Data/Terminal.hs 47;" f
_tlPause src/Dodge/Data/Terminal.hs 44;" f _tlPause src/Dodge/Data/Terminal.hs 45;" f
_tlString src/Dodge/Data/Terminal.hs 45;" f _tlString src/Dodge/Data/Terminal.hs 46;" f
_tmBootLines src/Dodge/Data/Terminal.hs 27;" f _tmBootLines src/Dodge/Data/Terminal.hs 28;" f
_tmButtonID src/Dodge/Data/Terminal.hs 28;" f _tmButtonID src/Dodge/Data/Terminal.hs 29;" f
_tmCommandHistory src/Dodge/Data/Terminal.hs 36;" f _tmCommandHistory src/Dodge/Data/Terminal.hs 37;" f
_tmDeathEffect src/Dodge/Data/Terminal.hs 34;" f _tmCommands src/Dodge/Data/Terminal.hs 34;" f
_tmDisplayedLines src/Dodge/Data/Terminal.hs 31;" f _tmDeathEffect src/Dodge/Data/Terminal.hs 35;" f
_tmExternalColor src/Dodge/Data/Terminal.hs 30;" f _tmDisplayedLines src/Dodge/Data/Terminal.hs 32;" f
_tmFutureLines src/Dodge/Data/Terminal.hs 32;" f _tmExternalColor src/Dodge/Data/Terminal.hs 31;" f
_tmID src/Dodge/Data/Terminal.hs 26;" f _tmFutureLines src/Dodge/Data/Terminal.hs 33;" f
_tmMachineID src/Dodge/Data/Terminal.hs 29;" f _tmID src/Dodge/Data/Terminal.hs 27;" f
_tmPartialCommand src/Dodge/Data/Terminal.hs 38;" f _tmMachineID src/Dodge/Data/Terminal.hs 30;" f
_tmScrollCommands src/Dodge/Data/Terminal.hs 33;" f _tmStatus src/Dodge/Data/Terminal.hs 36;" f
_tmStatus src/Dodge/Data/Terminal.hs 35;" f _tmToggles src/Dodge/Data/Terminal.hs 38;" f
_tmToggles src/Dodge/Data/Terminal.hs 37;" f
_toPlaySoundChunkID src/Sound/Data.hs 41;" f _toPlaySoundChunkID src/Sound/Data.hs 41;" f
_toPlaySoundPos src/Sound/Data.hs 38;" f _toPlaySoundPos src/Sound/Data.hs 38;" f
_toPlaySoundStatus src/Sound/Data.hs 37;" f _toPlaySoundStatus src/Sound/Data.hs 37;" f
@@ -2465,8 +2466,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 123;" f
_trieChildren src/SimpleTrie.hs 12;" f _trieChildren src/SimpleTrie.hs 12;" f
_trieMVal src/SimpleTrie.hs 11;" f _trieMVal src/SimpleTrie.hs 11;" f
_triggers src/Dodge/Data/LWorld.hs 133;" f _triggers src/Dodge/Data/LWorld.hs 133;" f
_ttDeathEffect src/Dodge/Data/Terminal.hs 51;" f _ttDeathEffect src/Dodge/Data/Terminal.hs 52;" f
_ttTriggerID src/Dodge/Data/Terminal.hs 50;" f _ttTriggerID src/Dodge/Data/Terminal.hs 51;" f
_tuDir src/Dodge/Data/Machine.hs 61;" f _tuDir src/Dodge/Data/Machine.hs 61;" f
_tuFireTime src/Dodge/Data/Machine.hs 60;" f _tuFireTime src/Dodge/Data/Machine.hs 60;" f
_tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f _tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f
@@ -2694,7 +2695,6 @@ arcStepwisePositive src/Geometry.hs 343;" f
arcTest src/Picture/Test.hs 9;" f arcTest src/Picture/Test.hs 9;" f
arcTest' src/Picture/Test.hs 21;" f arcTest' src/Picture/Test.hs 21;" f
argV src/Geometry/Vector.hs 80;" f argV src/Geometry/Vector.hs 80;" f
argumentHelp src/Dodge/Terminal.hs 146;" f
armourChaseCrit src/Dodge/Creature/ArmourChase.hs 35;" f armourChaseCrit src/Dodge/Creature/ArmourChase.hs 35;" f
armouredChasers src/Dodge/Room/Boss.hs 63;" f armouredChasers src/Dodge/Room/Boss.hs 63;" f
armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f
@@ -2762,7 +2762,7 @@ basicItemDisplay src/Dodge/Item/Display.hs 23;" f
basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f
basicMachineUpdate src/Dodge/Machine.hs 13;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f
basicMuzFlare src/Dodge/HeldUse.hs 709;" f basicMuzFlare src/Dodge/HeldUse.hs 709;" f
basicTerminal src/Dodge/Terminal.hs 37;" f basicTerminal src/Dodge/Terminal.hs 38;" f
battery src/Dodge/Item/Ammo.hs 63;" f battery src/Dodge/Item/Ammo.hs 63;" f
batteryPack src/Dodge/Item/Equipment.hs 46;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f
belowNumX src/Dodge/Combine/Graph.hs 86;" f belowNumX src/Dodge/Combine/Graph.hs 86;" f
@@ -2978,9 +2978,8 @@ combineList src/Dodge/Combine.hs 20;" f
combineRooms src/Dodge/Room/Procedural.hs 152;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f
combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f
combineTree src/Dodge/Tree/Compose.hs 66;" f combineTree src/Dodge/Tree/Compose.hs 66;" f
commandColor src/Dodge/Terminal.hs 127;" f commandColor src/Dodge/Terminal.hs 143;" f
commandFutureLines src/Dodge/Terminal.hs 251;" f commandsCommand src/Dodge/Terminal.hs 125;" f
commandsCommand src/Dodge/Terminal.hs 94;" f
commonPrefix src/Dodge/Debug/Terminal.hs 146;" f commonPrefix src/Dodge/Debug/Terminal.hs 146;" f
comp src/Quaternion.hs 65;" f comp src/Quaternion.hs 65;" f
compactDraw src/Dodge/LevelGen.hs 91;" f compactDraw src/Dodge/LevelGen.hs 91;" f
@@ -2994,8 +2993,8 @@ conEffects src/Dodge/Concurrent.hs 12;" f
conLDTToConDT src/Dodge/DoubleTree.hs 22;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f
concurrentIS src/Dodge/Update/Input/InGame.hs 291;" f concurrentIS src/Dodge/Update/Input/InGame.hs 291;" f
connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f
connectionBlurb src/Dodge/Terminal.hs 103;" f connectionBlurb src/Dodge/Terminal.hs 99;" f
connectionBlurbLines src/Dodge/Terminal.hs 49;" f connectionBlurbLines src/Dodge/Terminal.hs 45;" f
constructEdges src/Polyhedra.hs 34;" f constructEdges src/Polyhedra.hs 34;" f
constructEdgesList src/Polyhedra.hs 43;" f constructEdgesList src/Polyhedra.hs 43;" f
contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f
@@ -3120,7 +3119,7 @@ dShadCol src/Dodge/Render/List.hs 215;" f
damMatSideEffect src/Dodge/Material/Damage.hs 13;" f damMatSideEffect src/Dodge/Material/Damage.hs 13;" f
damThingHitWith src/Dodge/Damage.hs 72;" f damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 49;" f damToExpBarrel src/Dodge/Barreloid.hs 49;" f
damageCodeCommand src/Dodge/Terminal.hs 227;" f damageCodeCommand src/Dodge/Terminal.hs 243;" f
damageCrWl src/Dodge/Damage.hs 29;" f damageCrWl src/Dodge/Damage.hs 29;" f
damageCrWlID src/Dodge/Damage.hs 23;" f damageCrWlID src/Dodge/Damage.hs 23;" f
damageDirection src/Dodge/Damage.hs 35;" f damageDirection src/Dodge/Damage.hs 35;" f
@@ -3161,7 +3160,7 @@ debugMenuOptions src/Dodge/Menu.hs 122;" f
debugOn src/Dodge/Data/Config.hs 151;" f debugOn src/Dodge/Data/Config.hs 151;" f
debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f
debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f
decodedtmap src/Dodge/Terminal.hs 200;" f decodedtmap src/Dodge/Terminal.hs 216;" f
decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f
decomposeTree src/Dodge/Tree/Compose.hs 57;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f
decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f
@@ -3261,7 +3260,7 @@ dim src/Color.hs 112;" f
dirtColor src/Dodge/Default/Wall.hs 81;" f dirtColor src/Dodge/Default/Wall.hs 81;" f
dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f
disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f
disconnectTerminal src/Dodge/Terminal.hs 212;" f disconnectTerminal src/Dodge/Terminal.hs 228;" f
displayConfig src/Dodge/Menu.hs 213;" f displayConfig src/Dodge/Menu.hs 213;" f
displayControls src/Dodge/Menu.hs 223;" f displayControls src/Dodge/Menu.hs 223;" f
displayFrameTicks src/Dodge/Render/Picture.hs 45;" f displayFrameTicks src/Dodge/Render/Picture.hs 45;" f
@@ -3345,7 +3344,6 @@ doScopeZoom src/Dodge/Update/Scroll.hs 85;" f
doSectionSize src/Dodge/DisplayInventory.hs 217;" f doSectionSize src/Dodge/DisplayInventory.hs 217;" f
doSideEffects appDodge/Main.hs 120;" f doSideEffects appDodge/Main.hs 120;" f
doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f
doTerminalCommandEffect src/Dodge/Terminal.hs 130;" f
doTestDrawing src/Dodge/Render.hs 41;" f doTestDrawing src/Dodge/Render.hs 41;" f
doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
@@ -3570,7 +3568,7 @@ errorNormalizeV src/Geometry.hs 55;" f
errorPointInPolygon src/Geometry.hs 47;" f errorPointInPolygon src/Geometry.hs 47;" f
evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 150;" f evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 150;" f
evenOddSplit src/Dodge/Base.hs 160;" f evenOddSplit src/Dodge/Base.hs 160;" f
exitTerminalSubInv src/Dodge/Terminal.hs 220;" f exitTerminalSubInv src/Dodge/Terminal.hs 236;" f
expandLine src/Dodge/Picture.hs 30;" f expandLine src/Dodge/Picture.hs 30;" f
expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
@@ -3701,17 +3699,16 @@ geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f geqConstr src/SameConstr.hs 21;" f
getAimZoom src/Dodge/Update/Camera.hs 136;" f getAimZoom src/Dodge/Update/Camera.hs 136;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 103;" f getAmmoLinks src/Dodge/Item/Grammar.hs 103;" f
getArguments src/Dodge/Update/Scroll.hs 180;" f
getAttachedSFLink src/Dodge/HeldUse.hs 764;" f getAttachedSFLink src/Dodge/HeldUse.hs 764;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 84;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 84;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 169;" f getBulHitDams src/Dodge/Bullet.hs 169;" f
getBulletType src/Dodge/HeldUse.hs 943;" f getBulletType src/Dodge/HeldUse.hs 943;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 516;" f getCloseObj src/Dodge/Update/Input/InGame.hs 516;" f
getCommands src/Dodge/Terminal.hs 112;" f getCommand src/Dodge/Terminal.hs 111;" f
getCommandsHelp src/Dodge/Terminal.hs 76;" f getCommands src/Dodge/Terminal.hs 108;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f
getDamageCoding src/Dodge/Terminal.hs 172;" f getDamageCoding src/Dodge/Terminal.hs 188;" f
getDistortions src/Dodge/Render.hs 435;" f getDistortions src/Dodge/Render.hs 435;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1310;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1310;" f
@@ -3729,7 +3726,7 @@ getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 6;" f getPromptTM src/Dodge/Terminal/Type.hs 6;" f
getRootItemBounds src/Dodge/Render/HUD.hs 96;" f getRootItemBounds src/Dodge/Render/HUD.hs 96;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
getSensor src/Dodge/Terminal.hs 184;" f getSensor src/Dodge/Terminal.hs 200;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f
getSplitString src/Dodge/Debug/Terminal.hs 126;" f getSplitString src/Dodge/Debug/Terminal.hs 126;" f
getTiles src/Dodge/Layout.hs 208;" f getTiles src/Dodge/Layout.hs 208;" f
@@ -3829,8 +3826,9 @@ heldItemWeight src/Dodge/Creature/Statistics.hs 72;" f
heldPositionInfo src/Dodge/Item/Info.hs 241;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f
heldTorqueAmount src/Dodge/HeldUse.hs 584;" f heldTorqueAmount src/Dodge/HeldUse.hs 584;" f
heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f
helpCommand src/Dodge/Terminal.hs 67;" f helpCommand src/Dodge/Terminal.hs 116;" f
helpPoly3D src/Polyhedra.hs 125;" f helpPoly3D src/Polyhedra.hs 125;" f
helpStrings src/Dodge/Terminal.hs 119;" f
heron src/Geometry.hs 221;" f heron src/Geometry.hs 221;" f
hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f
highBar src/Dodge/Room/Foreground.hs 89;" f highBar src/Dodge/Room/Foreground.hs 89;" f
@@ -4179,8 +4177,8 @@ makeBullet src/Dodge/HeldUse.hs 1021;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 124;" f makeColorTermLine src/Dodge/Terminal.hs 140;" f
makeColorTermPara src/Dodge/Terminal.hs 121;" f makeColorTermPara src/Dodge/Terminal.hs 137;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 45;" f makeDebris src/Dodge/Block/Debris.hs 45;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f
@@ -4216,8 +4214,8 @@ makeSourcedShader src/Shader/Compile.hs 167;" f
makeSpark src/Dodge/Spark.hs 45;" f makeSpark src/Dodge/Spark.hs 45;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
makeTermLine src/Dodge/Terminal.hs 115;" f makeTermLine src/Dodge/Terminal.hs 131;" f
makeTermPara src/Dodge/Terminal.hs 118;" f makeTermPara src/Dodge/Terminal.hs 134;" f
makeTeslaArc src/Dodge/Tesla.hs 29;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f
makeTileFromPoly src/Tile.hs 34;" f makeTileFromPoly src/Tile.hs 34;" f
@@ -4377,7 +4375,6 @@ newSounds src/Dodge/Creature/Perception.hs 171;" f
newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f
nextArc src/Dodge/Tesla.hs 61;" f nextArc src/Dodge/Tesla.hs 61;" f
nextInSectionSS src/Dodge/SelectionSections.hs 36;" f nextInSectionSS src/Dodge/SelectionSections.hs 36;" f
nextTrie src/SimpleTrie.hs 35;" f
noPic src/ShapePicture.hs 25;" f noPic src/ShapePicture.hs 25;" f
noShape src/ShapePicture.hs 29;" f noShape src/ShapePicture.hs 29;" f
noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f
@@ -4698,7 +4695,7 @@ qToV2 src/Quaternion.hs 56;" f
qToV3 src/Quaternion.hs 53;" f qToV3 src/Quaternion.hs 53;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f
quitCommand src/Dodge/Terminal.hs 58;" f quitCommand src/Dodge/Terminal.hs 128;" f
qz src/Quaternion.hs 71;" f qz src/Quaternion.hs 71;" f
rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f
rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f
@@ -4886,7 +4883,7 @@ rprShift src/Dodge/PlacementSpot.hs 102;" f
rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f
runPastStart src/Dodge/Room/Start.hs 71;" f runPastStart src/Dodge/Room/Start.hs 71;" f
runStateWorld src/Dodge/Randify.hs 17;" f runStateWorld src/Dodge/Randify.hs 17;" f
runTerminalString src/Dodge/Terminal.hs 284;" f runTerminalInput src/Dodge/Terminal.hs 297;" f
sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f
safeAngleVV src/Geometry/Vector.hs 68;" f safeAngleVV src/Geometry/Vector.hs 68;" f
safeArgV src/Geometry/Vector.hs 87;" f safeArgV src/Geometry/Vector.hs 87;" f
@@ -4956,8 +4953,8 @@ selectedItemScroll src/Dodge/Update/Scroll.hs 47;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f
senseDamage src/Dodge/Machine/Update.hs 160;" f senseDamage src/Dodge/Machine/Update.hs 160;" f
sensorCommand src/Dodge/Terminal.hs 203;" f sensorCommand src/Dodge/Terminal.hs 219;" f
sensorInfoMap src/Dodge/Terminal.hs 175;" f sensorInfoMap src/Dodge/Terminal.hs 191;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 48;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 48;" f
sensorSPic src/Dodge/Machine/Draw.hs 70;" f sensorSPic src/Dodge/Machine/Draw.hs 70;" f
@@ -5093,7 +5090,7 @@ shuffleRoomPos src/Dodge/Layout.hs 78;" f
shuffleTail src/RandomHelp.hs 59;" f shuffleTail src/RandomHelp.hs 59;" f
sigmoid src/Dodge/Base.hs 151;" f sigmoid src/Dodge/Base.hs 151;" f
simpleCrSprings src/Dodge/Update.hs 888;" f simpleCrSprings src/Dodge/Update.hs 888;" f
simpleTermMessage src/Dodge/Terminal.hs 248;" f simpleTermMessage src/Dodge/Terminal.hs 264;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f
singleAmmo src/Dodge/Item/AmmoSlots.hs 62;" f singleAmmo src/Dodge/Item/AmmoSlots.hs 62;" f
@@ -5269,10 +5266,10 @@ telRoomLev src/Dodge/Room/Teleport.hs 14;" f
teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f
termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f
termScreenColor src/Dodge/Terminal/Color.hs 10;" f termScreenColor src/Dodge/Terminal/Color.hs 10;" f
termSoundLine src/Dodge/Terminal.hs 106;" f termSoundLine src/Dodge/Terminal.hs 102;" f
termTextColor src/Dodge/Terminal.hs 109;" f termTextColor src/Dodge/Terminal.hs 105;" f
terminalColor src/Dodge/Placement/Instance/Terminal.hs 61;" f terminalColor src/Dodge/Placement/Instance/Terminal.hs 61;" f
terminalReturnEffect src/Dodge/Terminal.hs 271;" f terminalReturnEffect src/Dodge/Terminal.hs 287;" f
terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f
terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f
@@ -5339,12 +5336,12 @@ toV2 src/Geometry/Data.hs 54;" f
toV3 src/Geometry/Data.hs 57;" f toV3 src/Geometry/Data.hs 57;" f
toV4 src/Geometry/Data.hs 60;" f toV4 src/Geometry/Data.hs 60;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 317;" f toggleCombineInv src/Dodge/DisplayInventory.hs 317;" f
toggleCommand src/Dodge/Terminal.hs 191;" f toggleCommand src/Dodge/Terminal.hs 207;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f
toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" f
toggleJust src/MaybeHelp.hs 41;" f toggleJust src/MaybeHelp.hs 41;" f
toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 108;" f toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 108;" f
togglesToEffects src/Dodge/Terminal.hs 243;" f togglesToEffects src/Dodge/Terminal.hs 259;" f
tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f
tone440raiseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 664;" f tone440raiseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 664;" f
tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 606;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 606;" f