Work on press-continue terminal prompts
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -29,6 +29,7 @@ data MouseContext
|
|||||||
| OverCombFilter
|
| OverCombFilter
|
||||||
| OverCombEscape
|
| OverCombEscape
|
||||||
| OverTerminalReturn {_mcoTermID :: Int}
|
| OverTerminalReturn {_mcoTermID :: Int}
|
||||||
|
| OverTerminalContinue {_mcoTermID :: Int}
|
||||||
| OverTerminalEscape
|
| OverTerminalEscape
|
||||||
| MouseGameRotate
|
| MouseGameRotate
|
||||||
deriving (Show)
|
deriving (Show)
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ data Terminal = Terminal
|
|||||||
, _tmStatus :: TerminalStatus
|
, _tmStatus :: TerminalStatus
|
||||||
, _tmCommandHistory :: [String]
|
, _tmCommandHistory :: [String]
|
||||||
, _tmToggles :: M.Map String TerminalToggle
|
, _tmToggles :: M.Map String TerminalToggle
|
||||||
-- , _tmPartialCommand :: Maybe TerminalCommand
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data TerminalLineString = TerminalLineConst String Color
|
data TerminalLineString = TerminalLineConst String Color
|
||||||
@@ -77,7 +76,7 @@ data TerminalCommandEffect
|
|||||||
-- , _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
|
-- , _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
|
||||||
-- }
|
-- }
|
||||||
|
|
||||||
data TCom = TCInfo String String
|
data TCom = TCInfo String String -- this may not be necessary, to revisit
|
||||||
| TCBase
|
| TCBase
|
||||||
| TCDamageCommand
|
| TCDamageCommand
|
||||||
| TCSensorInfo
|
| TCSensorInfo
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import Data.Aeson.TH
|
|||||||
|
|
||||||
data TerminalStatus
|
data TerminalStatus
|
||||||
= TerminalOff
|
= TerminalOff
|
||||||
| TerminalBusy
|
| TerminalLineRead
|
||||||
| TerminalTextInput {_tiText :: String}
|
| TerminalTextInput {_tiText :: String}
|
||||||
| TerminalPressTo {_tptString :: String}
|
| TerminalPressTo {_tptString :: String}
|
||||||
deriving (Eq)
|
deriving (Eq)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ data ItCrWdWd = ItCrWdItemHeldEffect
|
|||||||
data WdWd
|
data WdWd
|
||||||
= NoWorldEffect
|
= NoWorldEffect
|
||||||
| SetTrigger Bool Int
|
| SetTrigger Bool Int
|
||||||
| WorldEffects [WdWd]
|
| WorldEffects [WdWd] -- probably best to avoid recursive types if possible...
|
||||||
| SetLSCol Point3 Int
|
| SetLSCol Point3 Int
|
||||||
| AccessTerminal (Maybe Int)
|
| AccessTerminal (Maybe Int)
|
||||||
| UnlockInv
|
| UnlockInv
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ defaultTerminal =
|
|||||||
, _tmMachineID = 0
|
, _tmMachineID = 0
|
||||||
, _tmDisplayedLines = []
|
, _tmDisplayedLines = []
|
||||||
, _tmFutureLines = []
|
, _tmFutureLines = []
|
||||||
, _tmCommands = [TCInfo "TESA" "text 2",TCInfo "TEST" "display text",TCBase]
|
, _tmCommands = [TCBase]
|
||||||
, _tmDeathEffect = TmWdWdDoDeathTriggers
|
, _tmDeathEffect = TmWdWdDoDeathTriggers
|
||||||
, _tmStatus = TerminalOff
|
, _tmStatus = TerminalOff
|
||||||
, _tmCommandHistory = []
|
, _tmCommandHistory = []
|
||||||
|
|||||||
@@ -383,17 +383,11 @@ drawTerminalDisplay tid cfig w = fromMaybe mempty $ do
|
|||||||
$ _tmDisplayedLines tm
|
$ _tmDisplayedLines tm
|
||||||
displayTermInput tm = case _tmStatus tm of
|
displayTermInput tm = case _tmStatus tm of
|
||||||
TerminalOff -> id
|
TerminalOff -> id
|
||||||
TerminalBusy -> (++ [([cFilledRect], white)])
|
TerminalLineRead -> id
|
||||||
TerminalTextInput s ->
|
TerminalTextInput s ->
|
||||||
(++ [(getPromptTM ++ s ++ [cFilledRect], white)])
|
(++ [(getPromptTM ++ s ++ [cFilledRect], white)])
|
||||||
TerminalPressTo s ->
|
TerminalPressTo s ->
|
||||||
(++ [("PRESS TO "++s, white)])
|
(++ [(getPromptTM ++ "PRESS TO "++s, white)])
|
||||||
-- partcommand tm = maybe "" (++ " ") $ tm ^? tmPartialCommand . _Just . tcString
|
|
||||||
-- displayInputText tm s
|
|
||||||
-- | TerminalTextInput <- _tmStatus tm = getPromptTM ++ s
|
|
||||||
---- | _tmStatus tm == TerminalReady = partcommand tm ++ getPromptTM ++ s
|
|
||||||
-- | otherwise = ""
|
|
||||||
|
|
||||||
-- | hasfoc = clockCycle 10 (V.fromList [[cFilledRect] , "."]) w
|
-- | hasfoc = clockCycle 10 (V.fromList [[cFilledRect] , "."]) w
|
||||||
|
|
||||||
lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Picture
|
lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Picture
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ mouseCursorType u = case u ^. uvWorld . input . mouseContext of
|
|||||||
OverCombFilter{} -> drawJumpDown 5
|
OverCombFilter{} -> drawJumpDown 5
|
||||||
OverCombCombine{} -> drawGapPlus 5
|
OverCombCombine{} -> drawGapPlus 5
|
||||||
OverCombEscape -> rotate (pi / 4) $ drawPlus 5
|
OverCombEscape -> rotate (pi / 4) $ drawPlus 5
|
||||||
|
OverTerminalContinue{} -> drawReturn 5
|
||||||
OverTerminalReturn{} -> drawReturn 5
|
OverTerminalReturn{} -> drawReturn 5
|
||||||
OverTerminalEscape -> rotate (pi / 4) $ drawPlus 5
|
OverTerminalEscape -> rotate (pi / 4) $ drawPlus 5
|
||||||
MouseGameRotate -> rotate a (drawVerticalDoubleArrow 5)
|
MouseGameRotate -> rotate a (drawVerticalDoubleArrow 5)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
module Dodge.Room.RezBox where
|
module Dodge.Room.RezBox where
|
||||||
|
|
||||||
|
import Dodge.Default.Terminal
|
||||||
import Dodge.Terminal
|
import Dodge.Terminal
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import qualified Data.Set as S
|
import qualified Data.Set as S
|
||||||
@@ -25,12 +26,14 @@ rezBox :: LightSource -> Room
|
|||||||
rezBox ls =
|
rezBox ls =
|
||||||
roomRect 40 60 1 1
|
roomRect 40 60 1 1
|
||||||
& rmPmnts .~ [sPS (V2 20 1) 0 $ PutLS ls
|
& rmPmnts .~ [sPS (V2 20 1) 0 $ PutLS ls
|
||||||
, putMessageTerminal terminalColor (simpleTermMessage ["HELLOW","THIS"])
|
, putMessageTerminal terminalColor (defaultTerminal & tmBootLines .~ (makeTermPara s) <> tlSetStatus (TerminalPressTo "QUIT") <> [TLine 1 [] TmWdWdDisconnectTerminal])
|
||||||
& plSpot .~ PS (V2 20 0) 0
|
& plSpot .~ PS (V2 20 0) 0
|
||||||
]
|
]
|
||||||
& restrictInLinks (\(V2 _ h, _) -> h < 1)
|
& restrictInLinks (\(V2 _ h, _) -> h < 1)
|
||||||
& restrictOutLinks (\(V2 _ h, _) -> h > 59)
|
& restrictOutLinks (\(V2 _ h, _) -> h > 59)
|
||||||
& rmName .~ "rezBox"
|
& rmName .~ "rezBox"
|
||||||
|
where
|
||||||
|
s = "RESPAWN POINT SET AT THIS LOCATION."
|
||||||
|
|
||||||
rezBox' :: RandomGen g => State g (MetaTree Room String)
|
rezBox' :: RandomGen g => State g (MetaTree Room String)
|
||||||
rezBox' = do
|
rezBox' = do
|
||||||
|
|||||||
+13
-18
@@ -1,12 +1,7 @@
|
|||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
module Dodge.Terminal (
|
module Dodge.Terminal (
|
||||||
-- doTerminalCommandEffect,
|
|
||||||
makeTermLine,
|
makeTermLine,
|
||||||
-- commandFutureLines,
|
|
||||||
-- quitCommand,
|
|
||||||
-- helpCommand,
|
|
||||||
-- commandsCommand,
|
|
||||||
connectionBlurbLines,
|
connectionBlurbLines,
|
||||||
disconnectTerminal,
|
disconnectTerminal,
|
||||||
textTerminal,
|
textTerminal,
|
||||||
@@ -21,6 +16,7 @@ module Dodge.Terminal (
|
|||||||
makeColorTermPara,
|
makeColorTermPara,
|
||||||
commandColor,
|
commandColor,
|
||||||
tabComplete,
|
tabComplete,
|
||||||
|
tlSetStatus,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
--import Dodge.Data.WorldEffect
|
--import Dodge.Data.WorldEffect
|
||||||
@@ -158,9 +154,7 @@ helpCommand = PTE.singleton "HELP" (fmap makeTermPara helpStrings)
|
|||||||
helpStrings :: PTE.TrieMap Char String
|
helpStrings :: PTE.TrieMap Char String
|
||||||
helpStrings =
|
helpStrings =
|
||||||
PTE.fromList
|
PTE.fromList
|
||||||
[ ("", "THIS TERMINAL PROCESSES TEXT INPUT. USE [TAB] FOR AVAILABLE COMMANDS AND AUTOCOMPLETE.")
|
[ ("", "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.")
|
||||||
, ("HELP", "BASIC HELP. ACCEPTS A COMMAND AS AN ARGUMENT.")
|
|
||||||
, ("QUIT", "SHUTDOWN TERMINAL.")
|
|
||||||
]
|
]
|
||||||
|
|
||||||
quitCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
|
quitCommand :: PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
|
||||||
@@ -169,6 +163,9 @@ quitCommand = PTE.singleton "QUIT" (PTE.singleton "" [TLine 0 [] TmWdWdDisconnec
|
|||||||
makeTermLine :: String -> TerminalLine
|
makeTermLine :: String -> TerminalLine
|
||||||
makeTermLine = makeColorTermLine termTextColor
|
makeTermLine = makeColorTermLine termTextColor
|
||||||
|
|
||||||
|
tlSetStatus :: TerminalStatus -> [TerminalLine]
|
||||||
|
tlSetStatus x = [TLine 1 [] $ TmTmSetStatus x]
|
||||||
|
|
||||||
makeTermPara :: String -> [TerminalLine]
|
makeTermPara :: String -> [TerminalLine]
|
||||||
makeTermPara = makeColorTermPara termTextColor
|
makeTermPara = makeColorTermPara termTextColor
|
||||||
|
|
||||||
@@ -192,12 +189,13 @@ tabComplete s' tm = case PTE.lookup s $ getCommands tm of
|
|||||||
a = fromMaybe "" $ ss ^? ix 1
|
a = fromMaybe "" $ ss ^? ix 1
|
||||||
f y m' = case fmap fst m' of
|
f y m' = case fmap fst m' of
|
||||||
[] -> tm
|
[] -> tm
|
||||||
[x] -> tm & tmStatus .~ TerminalTextInput (y ++ x)
|
[x] -> tm & tmStatus . tiText .~ (y ++ x)
|
||||||
xs ->
|
xs ->
|
||||||
tm & tmFutureLines
|
tm & tmStatus .~ TerminalLineRead
|
||||||
.~ makeColorTermPara
|
& tmFutureLines
|
||||||
|
.~ (makeColorTermPara
|
||||||
commandColor
|
commandColor
|
||||||
(unwords xs)
|
(unwords xs) <> [TLine 1 [] . TmTmSetStatus $ TerminalTextInput s])
|
||||||
|
|
||||||
--doTerminalCommandEffect :: TerminalCommandEffect -> Terminal -> World -> EffectArguments
|
--doTerminalCommandEffect :: TerminalCommandEffect -> Terminal -> World -> EffectArguments
|
||||||
--doTerminalCommandEffect tce = case tce of
|
--doTerminalCommandEffect tce = case tce of
|
||||||
@@ -274,8 +272,7 @@ disconnectTerminal :: Terminal -> World -> World
|
|||||||
disconnectTerminal tm =
|
disconnectTerminal tm =
|
||||||
(cWorld . lWorld . terminals . ix (_tmID tm) . tmStatus .~ TerminalOff)
|
(cWorld . lWorld . terminals . ix (_tmID tm) . tmStatus .~ TerminalOff)
|
||||||
. exitTerminalSubInv
|
. exitTerminalSubInv
|
||||||
. ( cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines
|
. ( cWorld . lWorld . terminals . ix (_tmID tm) . tmDisplayedLines .~ []
|
||||||
.~ [TLine 0 [] TmTmClearDisplayedLines]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
exitTerminalSubInv :: World -> World
|
exitTerminalSubInv :: World -> World
|
||||||
@@ -342,11 +339,9 @@ terminalReturnEffect tmid w = fromMaybe w $ do
|
|||||||
runTerminalInput :: String -> Terminal -> World -> World
|
runTerminalInput :: String -> Terminal -> World -> World
|
||||||
runTerminalInput 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)})
|
%~ ( (tmFutureLines ++.~ ss <> [TLine 1 [] (TmTmSetStatus $ TerminalTextInput "")])
|
||||||
|
|
||||||
(tmFutureLines ++.~ ss)
|
|
||||||
. (tmCommandHistory %~ take 10 . (s :))
|
. (tmCommandHistory %~ take 10 . (s :))
|
||||||
. (tmStatus .~ TerminalTextInput "")
|
. (tmStatus .~ TerminalLineRead)
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
ss = fromMaybe [makeTermLine "ERROR: INPUT NOT RECOGNISED"] $ do
|
ss = fromMaybe [makeTermLine "ERROR: INPUT NOT RECOGNISED"] $ do
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ 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
|
TerminalLineRead -> Just white
|
||||||
|
|||||||
+41
-34
@@ -7,10 +7,6 @@ Description : Simulation update
|
|||||||
-}
|
-}
|
||||||
module Dodge.Update (updateUniverse) where
|
module Dodge.Update (updateUniverse) where
|
||||||
|
|
||||||
import Dodge.SpawnAt
|
|
||||||
import Dodge.Prop.Moving
|
|
||||||
import Dodge.WorldEvent.Explosion
|
|
||||||
import Dodge.Data.Object
|
|
||||||
import Color
|
import Color
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
@@ -27,6 +23,7 @@ import Dodge.Creature.Radius
|
|||||||
import Dodge.Creature.Update
|
import Dodge.Creature.Update
|
||||||
import Dodge.Damage
|
import Dodge.Damage
|
||||||
import Dodge.Data.CrWlID
|
import Dodge.Data.CrWlID
|
||||||
|
import Dodge.Data.Object
|
||||||
import Dodge.Data.Universe
|
import Dodge.Data.Universe
|
||||||
import Dodge.Debug
|
import Dodge.Debug
|
||||||
import Dodge.DisplayInventory
|
import Dodge.DisplayInventory
|
||||||
@@ -44,6 +41,7 @@ import Dodge.Machine.Update
|
|||||||
import Dodge.ModificationEffect
|
import Dodge.ModificationEffect
|
||||||
import Dodge.PressPlate
|
import Dodge.PressPlate
|
||||||
import Dodge.Projectile.Update
|
import Dodge.Projectile.Update
|
||||||
|
import Dodge.Prop.Moving
|
||||||
import Dodge.Prop.Update
|
import Dodge.Prop.Update
|
||||||
import Dodge.RadarBlip
|
import Dodge.RadarBlip
|
||||||
import Dodge.RadarSweep
|
import Dodge.RadarSweep
|
||||||
@@ -54,6 +52,7 @@ import Dodge.Shockwave.Update
|
|||||||
import Dodge.SmoothScroll
|
import Dodge.SmoothScroll
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Spark
|
import Dodge.Spark
|
||||||
|
import Dodge.SpawnAt
|
||||||
import Dodge.Terminal.Type
|
import Dodge.Terminal.Type
|
||||||
import Dodge.TractorBeam.Update
|
import Dodge.TractorBeam.Update
|
||||||
import Dodge.Update.Camera
|
import Dodge.Update.Camera
|
||||||
@@ -64,6 +63,7 @@ import Dodge.Update.Scroll
|
|||||||
import Dodge.Update.WallDamage
|
import Dodge.Update.WallDamage
|
||||||
import Dodge.WallCreatureCollisions
|
import Dodge.WallCreatureCollisions
|
||||||
import Dodge.WorldEffect
|
import Dodge.WorldEffect
|
||||||
|
import Dodge.WorldEvent.Explosion
|
||||||
import Dodge.WorldEvent.ThingsHit
|
import Dodge.WorldEvent.ThingsHit
|
||||||
import Dodge.Zoning.Cloud
|
import Dodge.Zoning.Cloud
|
||||||
import Dodge.Zoning.Creature
|
import Dodge.Zoning.Creature
|
||||||
@@ -467,27 +467,27 @@ updatePulseLasers w = f w & cWorld . lWorld . pulseLasers .~ pzs
|
|||||||
updatePulseBall :: PulseBall -> World -> World
|
updatePulseBall :: PulseBall -> World -> World
|
||||||
updatePulseBall pb w
|
updatePulseBall pb w
|
||||||
| Just (_, ecrwl) <- thit =
|
| Just (_, ecrwl) <- thit =
|
||||||
w & cWorld . lWorld . pulseBalls . at (pb ^. pbID) .~ Nothing
|
w & cWorld . lWorld . pulseBalls . at (pb ^. pbID) .~ Nothing
|
||||||
& cWorld . lWorld %~ dodam ecrwl
|
& cWorld . lWorld %~ dodam ecrwl
|
||||||
| pb ^. pbTimer <= 0 =
|
| pb ^. pbTimer <= 0 =
|
||||||
w & cWorld . lWorld . pulseBalls . at (pb ^. pbID) .~ Nothing
|
w & cWorld . lWorld . pulseBalls . at (pb ^. pbID) .~ Nothing
|
||||||
| otherwise =
|
| otherwise =
|
||||||
w & cWorld . lWorld . pulseBalls . ix (pb ^. pbID) . pbTimer -~ 1
|
w & cWorld . lWorld . pulseBalls . ix (pb ^. pbID) . pbTimer -~ 1
|
||||||
& cWorld . lWorld . pulseBalls . ix (pb ^. pbID) . pbPos .~ ep
|
& cWorld . lWorld . pulseBalls . ix (pb ^. pbID) . pbPos .~ ep
|
||||||
& pbFlicker pb
|
& pbFlicker pb
|
||||||
where
|
where
|
||||||
dodam = \case
|
dodam = \case
|
||||||
Left cr -> creatures . ix (_crID cr) . crDamage .:~ thedam
|
Left cr -> creatures . ix (_crID cr) . crDamage .:~ thedam
|
||||||
Right wl -> wallDamages . at (_wlID wl) . non mempty .:~ thedam
|
Right wl -> wallDamages . at (_wlID wl) . non mempty .:~ thedam
|
||||||
thedam = Lasering 100 ep (pb ^. pbVel)
|
thedam = Lasering 100 ep (pb ^. pbVel)
|
||||||
sp = pb ^. pbPos
|
sp = pb ^. pbPos
|
||||||
ep = sp + pb ^. pbVel
|
ep = sp + pb ^. pbVel
|
||||||
thit = thingHit sp ep w
|
thit = thingHit sp ep w
|
||||||
|
|
||||||
pbFlicker :: PulseBall -> World -> World
|
pbFlicker :: PulseBall -> World -> World
|
||||||
pbFlicker pt =
|
pbFlicker pt =
|
||||||
cWorld . lWorld . lights
|
cWorld . lWorld . lights
|
||||||
.:~ LSParam (addZ 5 $ _pbPos pt) d (0.5 * xyzV4 chartreuse)
|
.:~ LSParam (addZ 5 $ _pbPos pt) d (0.5 * xyzV4 chartreuse)
|
||||||
where
|
where
|
||||||
d = 4 * fromIntegral (10 + abs ((_pbTimer pt `mod` 20) - 10))
|
d = 4 * fromIntegral (10 + abs ((_pbTimer pt `mod` 20) - 10))
|
||||||
|
|
||||||
@@ -501,20 +501,23 @@ displayTerminalLineString :: TerminalLineString -> (String, Color)
|
|||||||
displayTerminalLineString (TerminalLineConst str col) = (str, col)
|
displayTerminalLineString (TerminalLineConst str col) = (str, col)
|
||||||
|
|
||||||
tmUpdate :: Terminal -> World -> World
|
tmUpdate :: Terminal -> World -> World
|
||||||
tmUpdate tm w = case w ^? cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines . ix 0 of
|
tmUpdate tm w = fromMaybe w $ do
|
||||||
Nothing -> w
|
guard $ tm ^. tmStatus == TerminalLineRead
|
||||||
Just tl | _tlPause tl > 0 -> w & pointTermParams . tmFutureLines . ix 0 . tlPause -~ 1
|
tl <- w ^? cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines . ix 0
|
||||||
Just (TLine _ tls g) ->
|
return $ case tl of
|
||||||
w & pointTermParams
|
_ | _tlPause tl > 0 -> w & pointTermParams . tmFutureLines . ix 0 . tlPause -~ 1
|
||||||
%~ ( (tmFutureLines %~ tail)
|
(TLine _ tls g) ->
|
||||||
. (tmDisplayedLines %~ (map displayTerminalLineString tls ++))
|
w & pointTermParams
|
||||||
)
|
%~ ( (tmFutureLines %~ tail)
|
||||||
& doTmWdWd g tm
|
. (tmDisplayedLines %~ (map displayTerminalLineString tls ++))
|
||||||
-- Just (TerminalLineEffect _ eff) ->
|
)
|
||||||
-- w
|
& doTmWdWd g tm
|
||||||
-- & pointTermParams . tmFutureLines %~ tail
|
|
||||||
-- & doTmWdWd eff tm
|
|
||||||
where
|
where
|
||||||
|
-- Just (TerminalLineEffect _ eff) ->
|
||||||
|
-- w
|
||||||
|
-- & pointTermParams . tmFutureLines %~ tail
|
||||||
|
-- & doTmWdWd eff tm
|
||||||
|
|
||||||
pointTermParams = cWorld . lWorld . terminals . ix (_tmID tm)
|
pointTermParams = cWorld . lWorld . terminals . ix (_tmID tm)
|
||||||
|
|
||||||
setOldPos :: Creature -> Creature
|
setOldPos :: Creature -> Creature
|
||||||
@@ -641,22 +644,24 @@ updatePulseLaser pz = case pz ^. pzTimer of
|
|||||||
5 -> (Endo f, [pz & pzTimer -~ 1])
|
5 -> (Endo f, [pz & pzTimer -~ 1])
|
||||||
_ -> (Endo g, [pz & pzTimer -~ 1])
|
_ -> (Endo g, [pz & pzTimer -~ 1])
|
||||||
where
|
where
|
||||||
f w = dodam thHit
|
f w =
|
||||||
|
dodam
|
||||||
|
thHit
|
||||||
w
|
w
|
||||||
& cWorld . lWorld . flares <>~ drawLaser cyan (sp : ps)
|
& cWorld . lWorld . flares <>~ drawLaser cyan (sp : ps)
|
||||||
where
|
where
|
||||||
(thHit, ps) = reflectPulseLaserAlong phasev sp xp w
|
(thHit, ps) = reflectPulseLaserAlong phasev sp xp w
|
||||||
dodam thit = case thit of
|
dodam thit = case thit of
|
||||||
((p, OCreature cr):_) ->
|
((p, OCreature cr) : _) ->
|
||||||
cWorld . lWorld . creatures . ix (_crID cr) . crDamage
|
cWorld . lWorld . creatures . ix (_crID cr) . crDamage
|
||||||
.:~ Lasering (pz ^. pzDamage) p (xp - sp)
|
.:~ Lasering (pz ^. pzDamage) p (xp - sp)
|
||||||
((p, OWall wl):_) ->
|
((p, OWall wl) : _) ->
|
||||||
cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty
|
cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty
|
||||||
.:~ Lasering (pz ^. pzDamage) p (xp - sp)
|
.:~ Lasering (pz ^. pzDamage) p (xp - sp)
|
||||||
((_, OPulseBall pb):xs) -> dodam xs
|
((_, OPulseBall pb) : xs) ->
|
||||||
.
|
dodam xs
|
||||||
(cWorld . lWorld . pulseBalls . ix (_pbID pb) . pbTimer .~ 0)
|
. (cWorld . lWorld . pulseBalls . ix (_pbID pb) . pbTimer .~ 0)
|
||||||
. makeExplosionAt (_pbPos pb `v2z` 20) 0
|
. makeExplosionAt (_pbPos pb `v2z` 20) 0
|
||||||
_ -> id
|
_ -> id
|
||||||
phasev = _pzPhaseV pz
|
phasev = _pzPhaseV pz
|
||||||
sp = _pzPos pz
|
sp = _pzPos pz
|
||||||
@@ -796,9 +801,11 @@ ppEvents w = IM.foldl' (flip $ \pp -> doPressPlateEvent (_ppEvent pp) pp) w $ w
|
|||||||
|
|
||||||
checkEndGame :: Universe -> Universe
|
checkEndGame :: Universe -> Universe
|
||||||
checkEndGame uv = case w ^? timeFlow . respawnDelay of
|
checkEndGame uv = case w ^? timeFlow . respawnDelay of
|
||||||
Just x | x < 0 -> uv -- & uvScreenLayers .~ [gameOverMenu uv]
|
Just x
|
||||||
& uvWorld . timeFlow .~ NormalTimeFlow
|
| x < 0 ->
|
||||||
& uvWorld %~ respawn
|
uv -- & uvScreenLayers .~ [gameOverMenu uv]
|
||||||
|
& uvWorld . timeFlow .~ NormalTimeFlow
|
||||||
|
& uvWorld %~ respawn
|
||||||
Just _ -> uv & uvWorld . timeFlow . respawnDelay -~ 1
|
Just _ -> uv & uvWorld . timeFlow . respawnDelay -~ 1
|
||||||
_ | _crHP (you w) < 1 -> uv & uvWorld . timeFlow .~ RespawnDelay 50
|
_ | _crHP (you w) < 1 -> uv & uvWorld . timeFlow .~ RespawnDelay 50
|
||||||
_ -> uv
|
_ -> uv
|
||||||
|
|||||||
@@ -219,6 +219,7 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of
|
|||||||
w & input . mouseContext .~ OverInvDragSelect x (Just $ snd x)
|
w & input . mouseContext .~ OverInvDragSelect x (Just $ snd x)
|
||||||
OverInvSelect x -> startDrag x cfig w
|
OverInvSelect x -> startDrag x cfig w
|
||||||
OverTerminalReturn tmid -> terminalReturnEffect tmid w
|
OverTerminalReturn tmid -> terminalReturnEffect tmid w
|
||||||
|
OverTerminalContinue tmid -> undefined
|
||||||
OverTerminalEscape -> w & hud . hudElement . subInventory .~ NoSubInventory
|
OverTerminalEscape -> w & hud . hudElement . subInventory .~ NoSubInventory
|
||||||
OverCombSelect x ->
|
OverCombSelect x ->
|
||||||
w & hud . hudElement . subInventory . ciSelection ?~ f x
|
w & hud . hudElement . subInventory . ciSelection ?~ f x
|
||||||
@@ -381,7 +382,19 @@ updateFunctionKey uv ScancodeF4 _ = doDebugTest2 uv
|
|||||||
updateFunctionKey uv _ _ = uv
|
updateFunctionKey uv _ _ = uv
|
||||||
|
|
||||||
updateKeysInTerminal :: Int -> Universe -> Universe
|
updateKeysInTerminal :: Int -> Universe -> Universe
|
||||||
updateKeysInTerminal tmid u =
|
updateKeysInTerminal tmid u = fromMaybe u $ do
|
||||||
|
tm <- u ^? uvWorld . cWorld . lWorld . terminals . ix tmid
|
||||||
|
return $ case tm ^. tmStatus of
|
||||||
|
TerminalTextInput{} -> updateKeysTextInputTerminal tmid u
|
||||||
|
TerminalPressTo{} -> updateKeyContinueTerminal tmid u
|
||||||
|
_ -> u
|
||||||
|
updateKeyContinueTerminal :: Int -> Universe -> Universe
|
||||||
|
updateKeyContinueTerminal tmid u
|
||||||
|
| any (==0) $ u ^. uvWorld . input . pressedKeys =
|
||||||
|
u & uvWorld . cWorld . lWorld . terminals . ix tmid . tmStatus .~ TerminalLineRead
|
||||||
|
| otherwise = u
|
||||||
|
updateKeysTextInputTerminal :: Int -> Universe -> Universe
|
||||||
|
updateKeysTextInputTerminal tmid u =
|
||||||
u
|
u
|
||||||
& doTextInputOverUniverse
|
& doTextInputOverUniverse
|
||||||
(uvWorld . cWorld . lWorld . terminals . ix tmid . tmStatus . tiText)
|
(uvWorld . cWorld . lWorld . terminals . ix tmid . tmStatus . tiText)
|
||||||
|
|||||||
@@ -60,12 +60,12 @@ accessTerminal mtmid w = fromMaybe w $ do
|
|||||||
where
|
where
|
||||||
tryToBoot tm = case _tmStatus tm of
|
tryToBoot tm = case _tmStatus tm of
|
||||||
TerminalTextInput{} -> tm
|
TerminalTextInput{} -> tm
|
||||||
TerminalBusy -> tm
|
TerminalLineRead -> tm
|
||||||
TerminalPressTo{} -> tm
|
TerminalPressTo{} -> tm
|
||||||
TerminalOff ->
|
TerminalOff ->
|
||||||
tm
|
tm
|
||||||
& tmFutureLines .~ _tmBootLines tm
|
& tmFutureLines .~ _tmBootLines tm
|
||||||
& tmStatus .~ TerminalBusy
|
& tmStatus .~ TerminalLineRead
|
||||||
|
|
||||||
torqueCr :: Float -> Int -> World -> World
|
torqueCr :: Float -> Int -> World -> World
|
||||||
torqueCr x cid w
|
torqueCr x cid w
|
||||||
|
|||||||
Reference in New Issue
Block a user