summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-12-17 17:44:38 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-12-17 17:44:38 +0100
commit0db9aabba95a33fd23c192343721559f9ca15581 (patch)
treea32f83b1d9640f969ee4be25d2bf034f7ad36bb1 /src/battle
parenta22cf9ed01111999a8397ed4a9723d97ea407bdd (diff)
...
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/src/Struct/MessageBoard.elm72
-rw-r--r--src/battle/src/Struct/Model.elm22
2 files changed, 82 insertions, 12 deletions
diff --git a/src/battle/src/Struct/MessageBoard.elm b/src/battle/src/Struct/MessageBoard.elm
new file mode 100644
index 0000000..9ddecf0
--- /dev/null
+++ b/src/battle/src/Struct/MessageBoard.elm
@@ -0,0 +1,72 @@
+module Struct.MessageBoard exposing
+ (
+ Type,
+ Message(..),
+ display,
+ try_getting_current_message,
+ clear_current_message,
+ new,
+ clear
+ )
+
+-- Elm -------------------------------------------------------------------------
+
+-- Local Module ----------------------------------------------------------------
+import Struct.Attack
+import Struct.Error
+import Struct.HelpRequest
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+type Message =
+ Help Struct.HelpRequest.Type
+ | Error Struct.Error.Type
+ | AttackReport Struct.Attack.Type
+
+type alias Type =
+ {
+ secondary_messages = (List Message),
+ main_message = (Maybe Message)
+ }
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+display : Message -> Type -> Type
+display message board =
+ case message of
+ (AttackReport _) -> {board | main_message = (Just message)}
+ _ ->
+ {board |
+ secondary_messages = [message|board.secondary_messages]
+ }
+
+try_getting_current_message : Type -> (Maybe Message)
+try_getting_current_message board =
+ case secondary_messages of
+ [] -> board.main_message
+ [secondary_message|_] -> (Just secondary_message)
+
+clear_current_message : Type -> Type
+clear_current_message board =
+ case secondary_messages of
+ [] -> {board | main_message = Nothing}
+ [_|remaining_secondary_messages] ->
+ {board |
+ secondary_messages = remaining_secondary_messages
+ }
+
+new : Type
+new =
+ {
+ secondary_messages = [],
+ main_message = Nothing
+ }
+
+clear : Type -> Type
+clear board = (new)
diff --git a/src/battle/src/Struct/Model.elm b/src/battle/src/Struct/Model.elm
index a53b4df..989f66d 100644
--- a/src/battle/src/Struct/Model.elm
+++ b/src/battle/src/Struct/Model.elm
@@ -19,9 +19,9 @@ import BattleMap.Struct.DataSet
-- Local Module ----------------------------------------------------------------
import Struct.CharacterTurn
import Struct.Error
-import Struct.HelpRequest
-import Struct.TurnResult
+import Struct.MessageBoard
import Struct.Puppeteer
+import Struct.TurnResult
import Struct.UI
--------------------------------------------------------------------------------
@@ -30,11 +30,10 @@ import Struct.UI
type alias Type =
{
flags : Struct.Flags.Type,
- help_request : Struct.HelpRequest.Type,
puppeteer : Struct.Puppeteer.Type,
ui : Struct.UI.Type,
char_turn : Struct.CharacterTurn.Type,
- error : (Maybe Struct.Error.Type),
+ message_board : Struct.MessageBoard.Type,
battle : Struct.Battle.Type,
@@ -56,11 +55,10 @@ new flags =
model =
{
flags = flags,
- help_request = Struct.HelpRequest.None,
puppeteer = (Struct.Puppeteer.new),
ui = (Struct.UI.default),
char_turn = (Struct.CharacterTurn.new),
- error = Nothing,
+ message_board = (Struct.MessageBoard.new),
characters_data_set = (BattleCharacters.Struct.DataSet.new),
map_data_set = (BattleMap.Struct.DataSet.new),
@@ -86,8 +84,7 @@ new flags =
clear : Type -> Type
clear model =
{model |
- help_request = Struct.HelpRequest.None,
- error = Nothing,
+ message_board = (Struct.MessageBoard.clear),
ui =
(Struct.UI.reset_displayed_nav
(Struct.UI.set_previous_action Nothing model.ui)
@@ -98,8 +95,9 @@ clear model =
invalidate : Struct.Error.Type -> Type -> Type
invalidate err model =
{model |
- error = (Just err)
+ message_board =
+ (Struct.MessageBoard.display
+ (Struct.MessageBoard.Error err)
+ model.message_board
+ )
}
-
-clear_error : Type -> Type
-clear_error model = {model | error = Nothing}