summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battlemap/struct/bm_turn_result.erl')
-rw-r--r--src/battlemap/struct/bm_turn_result.erl75
1 files changed, 74 insertions, 1 deletions
diff --git a/src/battlemap/struct/bm_turn_result.erl b/src/battlemap/struct/bm_turn_result.erl
index c3440bd..79fd7f3 100644
--- a/src/battlemap/struct/bm_turn_result.erl
+++ b/src/battlemap/struct/bm_turn_result.erl
@@ -32,7 +32,38 @@
}
).
--opaque type() :: (#switched_weapon{} | #moved{} | #attacked{}).
+-record
+(
+ player_won,
+ {
+ player_ix :: non_neg_integer()
+ }
+).
+
+-record
+(
+ player_lost,
+ {
+ player_ix :: non_neg_integer()
+ }
+).
+
+-record
+(
+ player_turn_started,
+ {
+ player_ix :: non_neg_integer()
+ }
+).
+
+-opaque type() :: (
+ #switched_weapon{}
+ | #moved{}
+ | #attacked{}
+ | #player_won{}
+ | #player_lost{}
+ | #player_turn_started{}
+).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -42,6 +73,9 @@
-export
(
[
+ new_player_won/1,
+ new_player_lost/1,
+ new_player_turn_started/1,
new_character_switched_weapons/1,
new_character_moved/3,
new_character_attacked/3
@@ -62,6 +96,18 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec new_player_won (non_neg_integer()) -> type().
+new_player_won (PlayerIX) ->
+ #player_won { player_ix = PlayerIX }.
+
+-spec new_player_lost (non_neg_integer()) -> type().
+new_player_lost (PlayerIX) ->
+ #player_lost { player_ix = PlayerIX }.
+
+-spec new_player_turn_started (non_neg_integer()) -> type().
+new_player_turn_started (PlayerIX) ->
+ #player_turn_started { player_ix = PlayerIX }.
+
-spec new_character_switched_weapons (bm_character:id()) -> type().
new_character_switched_weapons (CharacterIX) ->
#switched_weapon { character_ix = CharacterIX }.
@@ -137,6 +183,33 @@ encode (TurnResult) when is_record(TurnResult, attacked) ->
{<<"seq">>, EncodedSequence}
]
};
+encode (TurnResult) when is_record(TurnResult, player_won) ->
+ PlayerIX = TurnResult#player_won.player_ix,
+
+ {
+ [
+ {<<"t">>, <<"pwo">>},
+ {<<"ix">>, PlayerIX}
+ ]
+ };
+encode (TurnResult) when is_record(TurnResult, player_lost) ->
+ PlayerIX = TurnResult#player_lost.player_ix,
+
+ {
+ [
+ {<<"t">>, <<"plo">>},
+ {<<"ix">>, PlayerIX}
+ ]
+ };
+encode (TurnResult) when is_record(TurnResult, player_turn_started) ->
+ PlayerIX = TurnResult#player_turn_started.player_ix,
+
+ {
+ [
+ {<<"t">>, <<"pts">>},
+ {<<"ix">>, PlayerIX}
+ ]
+ };
encode (Other) ->
io:format("~n invalid encode param\"~p\"~n", [Other]),
true = Other.