about summary refs log tree commit diff
path: root/src/Xanthous/Game.hs
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2019-09-02T14·36-0400
committerGriffin Smith <root@gws.fyi>2019-09-02T14·52-0400
commit18551cdf30c0a13bce40fae9be829e5318612e71 (patch)
treeabb2c73133a4ae99852bd5865c78b4c301943d05 /src/Xanthous/Game.hs
parentadb3b74c0c3a3bffa0d47f52036fde3623f859f7 (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.hs12
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