From 13516911366a484ee5484166520133e056010515 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Mon, 23 Dec 2019 18:10:22 -0500 Subject: [PATCH] Don't send the welcome message when loading Don't re-send the welcome message when loading the game if it's already been sent. This is done by just tracking whether or not we've sent it as a boolean in the game state, which may be a bit of a hack but should be fine --- src/Xanthous/App.hs | 8 ++++++-- src/Xanthous/Game/Arbitrary.hs | 1 + src/Xanthous/Game/Lenses.hs | 1 + src/Xanthous/Game/State.hs | 4 ++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Xanthous/App.hs b/src/Xanthous/App.hs index 2029be6f1..2bdf6142f 100644 --- a/src/Xanthous/App.hs +++ b/src/Xanthous/App.hs @@ -77,8 +77,12 @@ startEvent = do Nothing -> prompt_ @'StringPrompt ["character", "namePrompt"] Uncancellable $ \(StringResult s) -> do character . characterName ?= s - say ["welcome"] =<< use character - Just n -> say ["welcome"] $ object [ "characterName" A..= n ] + whenM (uses sentWelcome not) $ say ["welcome"] =<< use character + sentWelcome .= True + Just n -> + whenM (uses sentWelcome not) $ do + say ["welcome"] $ object [ "characterName" A..= n ] + sentWelcome .= True initLevel :: AppM () initLevel = do diff --git a/src/Xanthous/Game/Arbitrary.hs b/src/Xanthous/Game/Arbitrary.hs index f4c83e005..a4e0255ca 100644 --- a/src/Xanthous/Game/Arbitrary.hs +++ b/src/Xanthous/Game/Arbitrary.hs @@ -28,6 +28,7 @@ instance Arbitrary GameState where let _promptState = NoPrompt -- TODO _activePanel <- arbitrary _debugState <- arbitrary + _sentWelcome <- arbitrary pure $ GameState {..} diff --git a/src/Xanthous/Game/Lenses.hs b/src/Xanthous/Game/Lenses.hs index 1f72e08b7..853f75838 100644 --- a/src/Xanthous/Game/Lenses.hs +++ b/src/Xanthous/Game/Lenses.hs @@ -50,6 +50,7 @@ initialStateFromSeed seed = _debugState = DebugState { _allRevealed = False } + _sentWelcome = False in GameState {..} diff --git a/src/Xanthous/Game/State.hs b/src/Xanthous/Game/State.hs index d8a0f0b32..0ba7b2744 100644 --- a/src/Xanthous/Game/State.hs +++ b/src/Xanthous/Game/State.hs @@ -11,6 +11,7 @@ module Xanthous.Game.State , messageHistory , randomGen , activePanel + , sentWelcome , promptState , characterEntityID , GamePromptState(..) @@ -405,6 +406,7 @@ data GameState = GameState , _characterEntityID :: !EntityID , _messageHistory :: !MessageHistory , _randomGen :: !StdGen + , _sentWelcome :: Bool -- | The active panel displayed in the UI, if any , _activePanel :: !(Maybe Panel) @@ -425,6 +427,8 @@ instance Eq GameState where , gs ^. revealedPositions , gs ^. characterEntityID , gs ^. messageHistory + , gs ^. sentWelcome + , gs ^. activePanel ) --------------------------------------------------------------------------------