From 08a3d1e624d9fc935c81cb7c2d07d7daacfbbba9 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Tue, 4 Sep 2018 18:21:16 +0200 Subject: Adds plr_load. --- conf/yaws.conf.m4 | 2 +- src/player/plr_handler.erl | 21 +++++ src/player/query/plr_load.erl | 99 +++++++++++++++++++++++ src/player/reply/plr_set_player.erl | 61 ++++++++++++++ src/query/qry_handler.erl | 1 + src/shared/struct/shr_battle_summary.erl | 134 +++++++++++++++++++++++++++++++ src/shared/struct/shr_map_summary.erl | 102 +++++++++++++++++++++++ src/shared/struct/shr_player.erl | 92 ++++++++++++++++++--- 8 files changed, 500 insertions(+), 12 deletions(-) create mode 100644 src/player/plr_handler.erl create mode 100644 src/player/query/plr_load.erl create mode 100644 src/player/reply/plr_set_player.erl create mode 100644 src/shared/struct/shr_battle_summary.erl create mode 100644 src/shared/struct/shr_map_summary.erl diff --git a/conf/yaws.conf.m4 b/conf/yaws.conf.m4 index d3c9578..544e1eb 100644 --- a/conf/yaws.conf.m4 +++ b/conf/yaws.conf.m4 @@ -110,6 +110,6 @@ keepalive_timeout = 30000 listen = 0.0.0.0 docroot = __MAKEFILE_WWW_DIR auth_log = true - appmods = btl_character_turn btl_load map_load map_update lgn_sign_in lgn_sign_up lgn_recovery chr_load chr_update + appmods = btl_character_turn btl_load map_load map_update lgn_sign_in lgn_sign_up lgn_recovery chr_load chr_update plr_load start_mod = qry_handler diff --git a/src/player/plr_handler.erl b/src/player/plr_handler.erl new file mode 100644 index 0000000..e4dc07e --- /dev/null +++ b/src/player/plr_handler.erl @@ -0,0 +1,21 @@ +-module(plr_handler). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([start/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec start (pid()) -> 'ok'. +start (_TimedCachesManagerPid) -> + ok. diff --git a/src/player/query/plr_load.erl b/src/player/query/plr_load.erl new file mode 100644 index 0000000..7adb114 --- /dev/null +++ b/src/player/query/plr_load.erl @@ -0,0 +1,99 @@ +-module(plr_load). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-include("../../../include/yaws_api.hrl"). + +-record +( + input, + { + player_id :: btl_player:id(), + session_token :: binary(), + target_id :: binary() + } +). + +-record +( + query_state, + { + player :: shr_player:type() + } +). + +-type input() :: #input{}. +-type query_state() :: #query_state{}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([out/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec parse_input (binary()) -> input(). +parse_input (Req) -> + JSONReqMap = jiffy:decode(Req, [return_maps]), + PlayerID = maps:get(<<"pid">>, JSONReqMap), + SessionToken = maps:get(<<"stk">>, JSONReqMap), + TargetID = maps:get(<<"id">>, JSONReqMap), + + #input + { + player_id = PlayerID, + session_token = SessionToken, + target_id = TargetID + }. + +-spec authenticate_user (input()) -> 'ok'. +authenticate_user (Input) -> + PlayerID = Input#input.player_id, + SessionToken = Input#input.session_token, + + Player = shr_timed_cache:fetch(player_db, any, PlayerID), + + shr_security:assert_identity(SessionToken, Player), + + ok. + +-spec fetch_data (input()) -> query_state(). +fetch_data (Input) -> + TargetID = Input#input.target_id, + + Player = shr_timed_cache:fetch(player_db, any, TargetID), + + #query_state + { + player = Player + }. + + +-spec generate_reply(query_state(), input()) -> binary(). +generate_reply (QueryState, _Input) -> + Player = QueryState#query_state.player, + + Output = jiffy:encode([plr_set_player:generate(Player)]), + + Output. + +-spec handle (binary()) -> binary(). +handle (Req) -> + Input = parse_input(Req), + authenticate_user(Input), + shr_security:lock_queries(Input#input.player_id), + QueryState = fetch_data(Input), + shr_security:unlock_queries(Input#input.player_id), + generate_reply(QueryState, Input). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +out(A) -> + { + content, + "application/json; charset=UTF-8", + handle(A#arg.clidata) + }. diff --git a/src/player/reply/plr_set_player.erl b/src/player/reply/plr_set_player.erl new file mode 100644 index 0000000..46f3747 --- /dev/null +++ b/src/player/reply/plr_set_player.erl @@ -0,0 +1,61 @@ +-module(plr_set_player). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([generate/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec generate (shr_player:type()) -> {list(any())}. +generate (Player) -> + MapList = + lists:map + ( + fun shr_map_summary:encode/1, + array:to_list(shr_player:get_map_summaries(Player)) + ), + + CampaignList = + lists:map + ( + fun shr_battle_summary:encode/1, + array:to_list(shr_player:get_campaign_summaries(Player)) + ), + + InvasionList = + lists:map + ( + fun shr_battle_summary:encode/1, + array:to_list(shr_player:get_invasion_summaries(Player)) + ), + + EventList = + lists:map + ( + fun shr_battle_summary:encode/1, + array:to_list(shr_player:get_event_summaries(Player)) + ), + + { + [ + {<<"msg">>, <<"set_plr">>}, + {<<"id">>, shr_player:get_id(Player)}, + {<<"nme">>, shr_player:get_username(Player)}, + {<<"maps">>, MapList}, + {<<"cmps">>, CampaignList}, + {<<"invs">>, InvasionList}, + {<<"evts">>, EventList}, + {<<"rtid">>, shr_player:get_roster_id(Player)}, + {<<"ivid">>, shr_player:get_inventory_id(Player)} + ] + }. diff --git a/src/query/qry_handler.erl b/src/query/qry_handler.erl index e6f05ac..a6caf89 100644 --- a/src/query/qry_handler.erl +++ b/src/query/qry_handler.erl @@ -19,6 +19,7 @@ -spec start (any()) -> 'ok'. start (_YawsParams) -> {ok, TimedCachesManagerPid} = shr_timed_caches_manager:start(), + ok = plr_handler:start(TimedCachesManagerPid), ok = lgn_handler:start(TimedCachesManagerPid), ok = btl_handler:start(TimedCachesManagerPid), ok = map_handler:start(TimedCachesManagerPid), diff --git a/src/shared/struct/shr_battle_summary.erl b/src/shared/struct/shr_battle_summary.erl new file mode 100644 index 0000000..3470575 --- /dev/null +++ b/src/shared/struct/shr_battle_summary.erl @@ -0,0 +1,134 @@ +-module(shr_battle_summary). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-record +( + battle_summary, + { + id :: binary(), + name :: binary(), + last_edit :: binary(), + is_players_turn :: boolean() + } +). + +-opaque type() :: #battle_summary{}. + +-export_type([type/0]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( + [ + new/4 + ] +). + +%%%% Accessors +-export +( + [ + get_id/1, + get_name/1, + get_last_edit/1, + is_players_turn/1 + ] +). +-export +( + [ + set_id/2, + set_name/2, + set_last_edit/2, + set_is_players_turn/2 + ] +). + +-export +( + [ + get_id_field/0, + get_name_field/0, + get_last_edit_field/0, + get_is_players_turn_field/0 + ] +). + +%%%% Export +-export +( + [ + encode/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec new (binary(), binary(), binary(), boolean()) -> type(). +new (ID, Name, Time, IsPlayersTurn) -> + #battle_summary + { + id = ID, + name = Name, + last_edit = Time, + is_players_turn = IsPlayersTurn + }. + +%%%% Accessors +-spec get_id (type()) -> binary(). +get_id (BattleSummary) -> BattleSummary#battle_summary.id. + +-spec get_name (type()) -> binary(). +get_name (BattleSummary) -> BattleSummary#battle_summary.name. + +-spec get_last_edit (type()) -> binary(). +get_last_edit (BattleSummary) -> BattleSummary#battle_summary.last_edit. + +-spec is_players_turn (type()) -> boolean(). +is_players_turn (BattleSummary) -> BattleSummary#battle_summary.is_players_turn. + +-spec set_id (binary(), type()) -> type(). +set_id (Val, BattleSummary) -> BattleSummary#battle_summary{ id = Val }. + +-spec set_name (binary(), type()) -> type(). +set_name (Val, BattleSummary) -> BattleSummary#battle_summary{ name = Val }. + +-spec set_last_edit (binary(), type()) -> type(). +set_last_edit (Val, BattleSummary) -> + BattleSummary#battle_summary{ last_edit = Val }. + +-spec set_is_players_turn (boolean(), type()) -> type(). +set_is_players_turn (Val, BattleSummary) -> + BattleSummary#battle_summary{ is_players_turn = Val }. + +-spec get_id_field () -> non_neg_integer(). +get_id_field () -> #battle_summary.id. + +-spec get_name_field () -> non_neg_integer(). +get_name_field () -> #battle_summary.name. + +-spec get_last_edit_field () -> non_neg_integer(). +get_last_edit_field () -> #battle_summary.last_edit. + +-spec get_is_players_turn_field () -> non_neg_integer(). +get_is_players_turn_field () -> #battle_summary.is_players_turn. + +-spec encode (type()) -> {list(any())}. +encode (BattleSummary) -> + { + [ + {<<"id">>, BattleSummary#battle_summary.id}, + {<<"nme">>, BattleSummary#battle_summary.name}, + {<<"ldt">>, BattleSummary#battle_summary.last_edit}, + {<<"ipt">>, BattleSummary#battle_summary.is_players_turn} + ] + }. diff --git a/src/shared/struct/shr_map_summary.erl b/src/shared/struct/shr_map_summary.erl new file mode 100644 index 0000000..a7a1283 --- /dev/null +++ b/src/shared/struct/shr_map_summary.erl @@ -0,0 +1,102 @@ +-module(shr_map_summary). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-record +( + map_summary, + { + id :: binary(), + name :: binary() + } +). + +-opaque type() :: #map_summary{}. + +-export_type([type/0]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( + [ + new/2 + ] +). + +%%%% Accessors +-export +( + [ + get_id/1, + get_name/1 + ] +). +-export +( + [ + set_id/2, + set_name/2 + ] +). + +-export +( + [ + get_id_field/0, + get_name_field/0 + ] +). + +%%%% Export +-export +( + [ + encode/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec new (binary(), binary()) -> type(). +new (ID, Name) -> + #map_summary + { + id = ID, + name = Name + }. + +%%%% Accessors +-spec get_id (type()) -> binary(). +get_id (MapSummary) -> MapSummary#map_summary.id. + +-spec get_name (type()) -> binary(). +get_name (MapSummary) -> MapSummary#map_summary.name. + +-spec set_id (binary(), type()) -> type(). +set_id (Val, MapSummary) -> MapSummary#map_summary{ id = Val }. + +-spec set_name (binary(), type()) -> type(). +set_name (Val, MapSummary) -> MapSummary#map_summary{ name = Val }. + +-spec get_id_field () -> non_neg_integer(). +get_id_field () -> #map_summary.id. + +-spec get_name_field () -> non_neg_integer(). +get_name_field () -> #map_summary.name. + +-spec encode (type()) -> {list(any())}. +encode (MapSummary) -> + { + [ + {<<"id">>, MapSummary#map_summary.id}, + {<<"nme">>, MapSummary#map_summary.name} + ] + }. diff --git a/src/shared/struct/shr_player.erl b/src/shared/struct/shr_player.erl index 0843e87..7cd60d7 100644 --- a/src/shared/struct/shr_player.erl +++ b/src/shared/struct/shr_player.erl @@ -16,7 +16,10 @@ token :: binary(), % salt(crypto:strong_rand_bytes(512)) email :: binary(), last_active :: integer(), - maps :: list(binary()), + maps :: array:array(shr_map_summary:type()), + campaigns :: array:array(shr_battle_summary:type()), + invasions :: array:array(shr_battle_summary:type()), + events :: array:array(shr_battle_summary:type()), roster_id :: binary(), inventory_id :: binary() } @@ -46,7 +49,10 @@ get_token/1, get_email/1, get_last_active/1, - get_maps/1, + get_map_summaries/1, + get_campaign_summaries/1, + get_invasion_summaries/1, + get_event_summaries/1, get_inventory_id/1, get_roster_id/1, @@ -56,7 +62,10 @@ new_token/1, set_email/2, refresh_active/1, - set_maps/2, + set_map_summaries/2, + set_campaign_summaries/2, + set_invasion_summaries/2, + set_event_summaries/2, set_inventory_id/2, set_roster_id/2 ] @@ -71,7 +80,10 @@ get_token_field/0, get_email_field/0, get_last_active_field/0, - get_maps_field/0, + get_map_summaries_field/0, + get_campaign_summaries_field/0, + get_invasion_summaries_field/0, + get_event_summaries_field/0, get_inventory_id_field/0, get_roster_id_field/0 ] @@ -103,6 +115,7 @@ secure_value (Salt, Val) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec new (binary(), binary(), binary(), binary()) -> type(). new (ID, Username, Password, Email) -> + EmptyArray = array:new(), Result = #player { @@ -112,7 +125,10 @@ new (ID, Username, Password, Email) -> token = <<"">>, email = Email, last_active = 0, - maps = [], + maps = EmptyArray, + campaigns = EmptyArray, + invasions = EmptyArray, + events = EmptyArray, inventory_id = <<"0">>, roster_id = <<"0">> }, @@ -142,8 +158,17 @@ get_email (Player) -> Player#player.email. -spec get_last_active (type()) -> integer(). get_last_active (Player) -> Player#player.last_active. --spec get_maps (type()) -> list(binary()). -get_maps (Player) -> Player#player.maps. +-spec get_map_summaries (type()) -> array:array(shr_map_summary:type()). +get_map_summaries (Player) -> Player#player.maps. + +-spec get_campaign_summaries (type()) -> array:array(shr_battle_summary:type()). +get_campaign_summaries (Player) -> Player#player.campaigns. + +-spec get_invasion_summaries (type()) -> array:array(shr_battle_summary:type()). +get_invasion_summaries (Player) -> Player#player.invasions. + +-spec get_event_summaries (type()) -> array:array(shr_battle_summary:type()). +get_event_summaries (Player) -> Player#player.events. -spec get_roster_id (type()) -> binary(). get_roster_id (Player) -> Player#player.roster_id. @@ -184,8 +209,44 @@ refresh_active (Player) -> last_active = erlang:system_time(second) }. --spec set_maps (list(binary()), type()) -> type(). -set_maps (Maps, Player) -> Player#player{ maps = Maps }. +-spec set_map_summaries (array:array(shr_map_summary:type()), type()) -> type(). +set_map_summaries (Maps, Player) -> Player#player{ maps = Maps }. + +-spec set_campaign_summaries + ( + array:array(shr_battle_summary:type()), + type() + ) + -> type(). +set_campaign_summaries (Campaigns, Player) -> + Player#player + { + campaigns = Campaigns + }. + +-spec set_invasion_summaries + ( + array:array(shr_battle_summary:type()), + type() + ) + -> type(). +set_invasion_summaries (Invasions, Player) -> + Player#player + { + invasions = Invasions + }. + +-spec set_event_summaries + ( + array:array(shr_battle_summary:type()), + type() + ) + -> type(). +set_event_summaries (Events, Player) -> + Player#player + { + events = Events + }. -spec set_roster_id (binary(), type()) -> type(). set_roster_id (RosterID, Player) -> Player#player{ roster_id = RosterID }. @@ -211,8 +272,17 @@ get_email_field () -> #player.email. -spec get_last_active_field () -> non_neg_integer(). get_last_active_field () -> #player.last_active. --spec get_maps_field () -> non_neg_integer(). -get_maps_field () -> #player.maps. +-spec get_map_summaries_field () -> non_neg_integer(). +get_map_summaries_field () -> #player.maps. + +-spec get_campaign_summaries_field () -> non_neg_integer(). +get_campaign_summaries_field () -> #player.campaigns. + +-spec get_invasion_summaries_field () -> non_neg_integer(). +get_invasion_summaries_field () -> #player.invasions. + +-spec get_event_summaries_field () -> non_neg_integer(). +get_event_summaries_field () -> #player.events. -spec get_roster_id_field () -> non_neg_integer(). get_roster_id_field () -> #player.roster_id. -- cgit v1.2.3-70-g09d2