summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-01-07 18:43:09 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-01-07 18:43:09 +0100
commiteb78c5f52310b1eaa64a7bc376f119536270a887 (patch)
tree6cade2f10b36738c7e8a225d7e94783ce7b2c9cc /src
parent40b20e4355bf753f9a20d387f9c7929ef72450bc (diff)
Player maps & battles: lists -> orddicts.
Diffstat (limited to 'src')
-rw-r--r--src/bounty/bnt_grant_land.erl15
-rw-r--r--src/player/reply/plr_set_battles.erl6
-rw-r--r--src/player/reply/plr_set_player.erl8
-rw-r--r--src/shared/struct/shr_battle_summary.erl14
-rw-r--r--src/shared/struct/shr_map_summary.erl5
-rw-r--r--src/shared/struct/shr_player.erl124
6 files changed, 107 insertions, 65 deletions
diff --git a/src/bounty/bnt_grant_land.erl b/src/bounty/bnt_grant_land.erl
index d12d30c..aa2a62f 100644
--- a/src/bounty/bnt_grant_land.erl
+++ b/src/bounty/bnt_grant_land.erl
@@ -39,9 +39,18 @@ attempt (OwnerID) ->
shr_player:get_map_summaries_field(),
ataxic:apply_function
(
- lists,
- append,
- [ataxic:constant([MapSummary]), ataxic:current_value()]
+ orddict,
+ store,
+ [
+ ataxic:apply_function
+ (
+ orddict,
+ size,
+ [ataxic:current_value()]
+ ),
+ ataxic:constant([MapSummary]),
+ ataxic:current_value()
+ ]
)
)
),
diff --git a/src/player/reply/plr_set_battles.erl b/src/player/reply/plr_set_battles.erl
index a0e6919..4b16ed3 100644
--- a/src/player/reply/plr_set_battles.erl
+++ b/src/player/reply/plr_set_battles.erl
@@ -22,21 +22,21 @@ generate (Player) ->
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_campaign_summaries(Player)
+ orddict:to_list(shr_player:get_campaign_summaries(Player))
),
InvasionList =
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_invasion_summaries(Player)
+ orddict:to_list(shr_player:get_invasion_summaries(Player))
),
EventList =
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_event_summaries(Player)
+ orddict:to_list(shr_player:get_event_summaries(Player))
),
{
diff --git a/src/player/reply/plr_set_player.erl b/src/player/reply/plr_set_player.erl
index 2a4b7f6..d946938 100644
--- a/src/player/reply/plr_set_player.erl
+++ b/src/player/reply/plr_set_player.erl
@@ -22,28 +22,28 @@ generate (PlayerID, Player) ->
lists:map
(
fun shr_map_summary:encode/1,
- shr_player:get_map_summaries(Player)
+ orddict:to_list(shr_player:get_map_summaries(Player))
),
CampaignList =
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_campaign_summaries(Player)
+ orddict:to_list(shr_player:get_campaign_summaries(Player))
),
InvasionList =
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_invasion_summaries(Player)
+ orddict:to_list(shr_player:get_invasion_summaries(Player))
),
EventList =
lists:map
(
fun shr_battle_summary:encode/1,
- shr_player:get_event_summaries(Player)
+ orddict:to_list(shr_player:get_event_summaries(Player))
),
{
diff --git a/src/shared/struct/shr_battle_summary.erl b/src/shared/struct/shr_battle_summary.erl
index 9af72b4..5169b2c 100644
--- a/src/shared/struct/shr_battle_summary.erl
+++ b/src/shared/struct/shr_battle_summary.erl
@@ -3,11 +3,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-type category() :: (attack | defend | none).
+
-record
(
battle_summary,
{
- id :: binary(),
+ id :: ataxia_id:type(),
+ category :: category(),
name :: binary(),
last_edit :: binary(),
is_players_turn :: boolean()
@@ -16,7 +19,7 @@
-opaque type() :: #battle_summary{}.
--export_type([type/0]).
+-export_type([type/0, category/0]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -80,6 +83,7 @@ new (ID, Name, Time, IsPlayersTurn) ->
{
id = ID,
name = Name,
+ category = none,
last_edit = Time,
is_players_turn = IsPlayersTurn
}.
@@ -90,6 +94,7 @@ none () ->
{
id = <<"">>,
name = <<"">>,
+ category = none,
last_edit = <<"">>,
is_players_turn = false
}.
@@ -133,10 +138,11 @@ 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) ->
+-spec encode ({non_neg_integer(), type()}) -> {list(any())}.
+encode ({IX, BattleSummary}) ->
{
[
+ {<<"ix">>, IX},
{<<"id">>, BattleSummary#battle_summary.id},
{<<"nme">>, BattleSummary#battle_summary.name},
{<<"ldt">>, BattleSummary#battle_summary.last_edit},
diff --git a/src/shared/struct/shr_map_summary.erl b/src/shared/struct/shr_map_summary.erl
index a7a1283..554b988 100644
--- a/src/shared/struct/shr_map_summary.erl
+++ b/src/shared/struct/shr_map_summary.erl
@@ -92,10 +92,11 @@ 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) ->
+-spec encode ({non_neg_integer(), type()}) -> {list(any())}.
+encode ({IX, MapSummary}) ->
{
[
+ {<<"ix">>, IX},
{<<"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 076c685..6ef6f1f 100644
--- a/src/shared/struct/shr_player.erl
+++ b/src/shared/struct/shr_player.erl
@@ -15,10 +15,10 @@
token :: binary(), % salt(crypto:strong_rand_bytes(512))
email :: binary(),
last_active :: integer(),
- maps :: list(shr_map_summary:type()),
- campaigns :: list(shr_battle_summary:type()),
- invasions :: list(shr_battle_summary:type()),
- events :: list(shr_battle_summary:type()),
+ maps :: orddict:orddict(non_neg_integer(), shr_map_summary:type()),
+ campaigns :: orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
+ invasions :: orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
+ events :: orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
roster_id :: binary(),
inventory_id :: binary()
}
@@ -112,6 +112,37 @@ secure_value (Salt, Val) ->
-spec new (binary(), binary(), binary()) -> type().
new (Username, Password, Email) ->
EmptyBattleSlot = shr_battle_summary:none(),
+ SixEmptyBattleSlots =
+ orddict:from_list
+ (
+ [
+ {0, EmptyBattleSlot},
+ {1, EmptyBattleSlot},
+ {2, EmptyBattleSlot},
+ {3, EmptyBattleSlot},
+ {4, EmptyBattleSlot},
+ {5, EmptyBattleSlot}
+ ]
+ ),
+
+ NineEmptyBattleSlots =
+ orddict:store
+ (
+ 6,
+ EmptyBattleSlot,
+ orddict:store
+ (
+ 7,
+ EmptyBattleSlot,
+ orddict:store
+ (
+ 8,
+ EmptyBattleSlot,
+ SixEmptyBattleSlots
+ )
+ )
+ ),
+
Result =
#player
{
@@ -120,41 +151,10 @@ new (Username, Password, Email) ->
token = <<"">>,
email = Email,
last_active = 0,
- maps = [],
- campaigns =
- [
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot,
-
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot
- ],
- invasions =
- [
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot,
-
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot,
-
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot
- ],
- events =
- [
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot,
-
- EmptyBattleSlot,
- EmptyBattleSlot,
- EmptyBattleSlot
- ],
+ maps = orddict:new(),
+ campaigns = SixEmptyBattleSlots,
+ invasions = NineEmptyBattleSlots,
+ events = SixEmptyBattleSlots,
inventory_id = ataxia_id:null(),
roster_id = ataxia_id:null()
},
@@ -181,22 +181,38 @@ get_email (Player) -> Player#player.email.
-spec get_last_active (type()) -> integer().
get_last_active (Player) -> Player#player.last_active.
--spec get_map_summaries (type()) -> list(shr_map_summary:type()).
+-spec get_map_summaries
+ (
+ type()
+ )
+ -> orddict:orddict(non_neg_integer(), shr_map_summary:type()).
get_map_summaries (Player) -> Player#player.maps.
--spec get_campaign_summaries (type()) -> list(shr_battle_summary:type()).
+-spec get_campaign_summaries
+ (
+ type()
+ )
+ -> orddict:orddict(non_neg_integer(), shr_battle_summary:type()).
get_campaign_summaries (Player) -> Player#player.campaigns.
--spec get_invasion_summaries (type()) -> list(shr_battle_summary:type()).
+-spec get_invasion_summaries
+ (
+ type()
+ )
+ -> orddict:orddict(non_neg_integer(), shr_battle_summary:type()).
get_invasion_summaries (Player) -> Player#player.invasions.
--spec get_event_summaries (type()) -> list(shr_battle_summary:type()).
+-spec get_event_summaries
+ (
+ type()
+ )
+ -> orddict:orddict(non_neg_integer(), shr_battle_summary:type()).
get_event_summaries (Player) -> Player#player.events.
--spec get_roster_id (type()) -> binary().
+-spec get_roster_id (type()) -> ataxia_id:type().
get_roster_id (Player) -> Player#player.roster_id.
--spec get_inventory_id (type()) -> binary().
+-spec get_inventory_id (type()) -> ataxia_id:type().
get_inventory_id (Player) -> Player#player.inventory_id.
-spec set_username (binary(), type()) -> type().
@@ -229,12 +245,17 @@ refresh_active (Player) ->
last_active = erlang:system_time(second)
}.
--spec set_map_summaries (list(shr_map_summary:type()), type()) -> type().
+-spec set_map_summaries
+ (
+ orddict:orddict(non_neg_integer(), shr_map_summary:type()),
+ type()
+ )
+ -> type().
set_map_summaries (Maps, Player) -> Player#player{ maps = Maps }.
-spec set_campaign_summaries
(
- list(shr_battle_summary:type()),
+ orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
type()
)
-> type().
@@ -246,7 +267,7 @@ set_campaign_summaries (Campaigns, Player) ->
-spec set_invasion_summaries
(
- list(shr_battle_summary:type()),
+ orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
type()
)
-> type().
@@ -256,7 +277,12 @@ set_invasion_summaries (Invasions, Player) ->
invasions = Invasions
}.
--spec set_event_summaries (list(shr_battle_summary:type()), type()) -> type().
+-spec set_event_summaries
+ (
+ orddict:orddict(non_neg_integer(), shr_battle_summary:type()),
+ type()
+ )
+ -> type().
set_event_summaries (Events, Player) ->
Player#player
{