| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-09-04 18:21:16 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-09-04 18:21:16 +0200 | 
| commit | 08a3d1e624d9fc935c81cb7c2d07d7daacfbbba9 (patch) | |
| tree | e50e77f5124b5dee407feb078b578d57475262b1 | |
| parent | b02f349872c01f94e5234d4d122fa7ec18382068 (diff) | |
Adds plr_load.
| -rw-r--r-- | conf/yaws.conf.m4 | 2 | ||||
| -rw-r--r-- | src/player/plr_handler.erl | 21 | ||||
| -rw-r--r-- | src/player/query/plr_load.erl | 99 | ||||
| -rw-r--r-- | src/player/reply/plr_set_player.erl | 61 | ||||
| -rw-r--r-- | src/query/qry_handler.erl | 1 | ||||
| -rw-r--r-- | src/shared/struct/shr_battle_summary.erl | 134 | ||||
| -rw-r--r-- | src/shared/struct/shr_map_summary.erl | 102 | ||||
| -rw-r--r-- | src/shared/struct/shr_player.erl | 92 | 
8 files changed, 500 insertions, 12 deletions
| 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  </server> 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. | 


