diff options
author | Griffin Smith <root@gws.fyi> | 2019-09-02T14·36-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-09-02T14·52-0400 |
commit | 18551cdf30c0a13bce40fae9be829e5318612e71 (patch) | |
tree | abb2c73133a4ae99852bd5865c78b4c301943d05 /src/Xanthous/Game.hs | |
parent | adb3b74c0c3a3bffa0d47f52036fde3623f859f7 (diff) |
Add a previous message command
Add a "previous message" command, triggered via ctrl+p. I attempted here to get the message area to still take up a row of space post-hiding the message, but failed - should revisit that at some point
Diffstat (limited to 'src/Xanthous/Game.hs')
-rw-r--r-- | src/Xanthous/Game.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Xanthous/Game.hs b/src/Xanthous/Game.hs index 39066c23b622..dffd0a9c6a6d 100644 --- a/src/Xanthous/Game.hs +++ b/src/Xanthous/Game.hs @@ -14,6 +14,8 @@ module Xanthous.Game , MessageHistory(..) , pushMessage + , popMessage + , hideMessage ) where import Data.List.NonEmpty ( NonEmpty((:|))) @@ -43,6 +45,16 @@ pushMessage :: Text -> MessageHistory -> MessageHistory pushMessage msg NoMessageHistory = MessageHistory (msg :| []) True pushMessage msg (MessageHistory msgs _) = MessageHistory (NonEmpty.cons msg msgs) True +popMessage :: MessageHistory -> MessageHistory +popMessage NoMessageHistory = NoMessageHistory +popMessage (MessageHistory msgs False) = MessageHistory msgs True +popMessage (MessageHistory msgs@(_ :| []) _) = MessageHistory msgs True +popMessage (MessageHistory (_ :| (msg : msgs)) True) = MessageHistory (msg :| msgs) True + +hideMessage :: MessageHistory -> MessageHistory +hideMessage NoMessageHistory = NoMessageHistory +hideMessage (MessageHistory msgs _) = MessageHistory msgs False + data GameState = GameState { _entities :: EntityMap SomeEntity , _characterEntityID :: EntityID |