summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
commitee9c2ac044cc77b80f30420c8f0788cad4281084 (patch)
tree6ce9c45b6c0f0c556839b6f462f84eab06e26594 /src/battlemap/struct/bm_character_turn_request.erl
parent97f7511e61cebae3676a83aa9c0dc2efb15d8d8c (diff)
Figuring out how to organize the src folder(s)...
Diffstat (limited to 'src/battlemap/struct/bm_character_turn_request.erl')
-rw-r--r--src/battlemap/struct/bm_character_turn_request.erl84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/battlemap/struct/bm_character_turn_request.erl b/src/battlemap/struct/bm_character_turn_request.erl
new file mode 100644
index 0000000..d141d7e
--- /dev/null
+++ b/src/battlemap/struct/bm_character_turn_request.erl
@@ -0,0 +1,84 @@
+-module(bm_character_turn_request).
+
+-define(PLAYER_ID_FIELD, <<"pid">>).
+-define(SESSION_TOKEN_FIELD, <<"stk">>).
+-define(BATTLE_ID_FIELD, <<"bid">>).
+-define(CHAR_IX_FIELD, <<"cix">>).
+-define(ACTIONS_FIELD, <<"act">>).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-record
+(
+ type,
+ {
+ player_id :: bm_player:id(),
+ session_token :: binary(),
+ battle_id :: binary(),
+ character_ix :: non_neg_integer(),
+ actions :: list(bm_battle_action:type())
+ }
+).
+
+-opaque type() :: #type{}.
+
+-export_type([type/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ decode/1
+ ]
+).
+
+-export
+(
+ [
+ get_player_id/1,
+ get_session_token/1,
+ get_battle_id/1,
+ get_character_ix/1,
+ get_actions/1
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec decode (map()) -> type().
+decode (Map) ->
+ CharacterIX = binary_to_integer(maps:get(?CHAR_IX_FIELD, Map)),
+ EncodedActions = maps:get(?ACTIONS_FIELD, Map),
+ Actions = lists:map(fun bm_battle_action:decode/1, EncodedActions),
+
+ #type
+ {
+ player_id = maps:get(?PLAYER_ID_FIELD, Map),
+ session_token = maps:get(?SESSION_TOKEN_FIELD, Map),
+ battle_id = maps:get(?BATTLE_ID_FIELD, Map),
+ character_ix = CharacterIX,
+ actions = Actions
+ }.
+
+-spec get_player_id (type()) -> player:id().
+get_player_id (Request) -> Request#type.player_id.
+
+-spec get_session_token (type()) -> binary().
+get_session_token (Request) -> Request#type.session_token.
+
+-spec get_battle_id (type()) -> binary().
+get_battle_id (Request) -> Request#type.battle_id.
+
+-spec get_character_ix (type()) -> non_neg_integer().
+get_character_ix (Request) -> Request#type.character_ix.
+
+-spec get_actions (type()) -> list(bm_battle_action:type()).
+get_actions (Request) -> Request#type.actions.