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 ) --------------------------------------------------------------------------------