summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-04-26 17:45:48 +0200
committernsensfel <SpamShield0@noot-noot.org>2019-04-26 17:45:48 +0200
commita7c6455285cfd3a671078be4e58df0afae07bf0c (patch)
treeb06531c2423e0fa6a1f60ace83b5e03a40067262 /src/roster/query/rst_update.erl
parentec6eec260d6383ae948505c3d42b3055ae3dd94c (diff)
...
Diffstat (limited to 'src/roster/query/rst_update.erl')
-rw-r--r--src/roster/query/rst_update.erl37
1 files changed, 15 insertions, 22 deletions
diff --git a/src/roster/query/rst_update.erl b/src/roster/query/rst_update.erl
index bbae76e..933c52c 100644
--- a/src/roster/query/rst_update.erl
+++ b/src/roster/query/rst_update.erl
@@ -3,7 +3,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--type decoded_character() :: {non_neg_integer(), rst_character:type()}.
+-type decoded_character() :: {non_neg_integer(), shr_character:unresolved()}.
-record
(
@@ -41,7 +41,7 @@ decode_character_list (EncodedCharactersList) ->
lists:map
(
fun (Map) ->
- {maps:get(<<"ix">>, Map), rst_character:decode(Map)}
+ {maps:get(<<"ix">>, Map), shr_character:decode(Map)}
end,
EncodedCharactersList
).
@@ -102,15 +102,19 @@ update_data (QueryState, Input) ->
Inventory = QueryState#query_state.inventory,
Characters = Input#input.characters,
- lists:map
+ %% TODO: Assert true, once inventories are put in place.
+ lists:all
(
fun ({_IX, Character}) ->
- rst_character:validate(Inventory, Character)
+ shr_inventory:allows_equipment
+ (
+ shr_character:get_equipment(Character),
+ Inventory
+ )
end,
Characters
),
- %% TODO [FUNCTION: chr][REQUIRED]: unimplemented.
QueryState.
-spec commit_update (query_state(), input()) -> 'ok'.
@@ -122,21 +126,14 @@ commit_update (QueryState, Input) ->
RosterID = shr_player:get_roster_id(Player),
- {UpdatedRoster, QueryList} =
+ {UpdatedRoster, RosterAtaxiaUpdates} =
lists:foldl
(
fun ({IX, Character}, {CurrentRoster, UpdateList}) ->
- {
- rst_roster:set_character(IX, Character, CurrentRoster),
- [
- ataxic_sugar:update_orddict_element
- (
- IX,
- ataxic:constant(Character)
- )
- | UpdateList
- ]
- }
+ {UpdatedRoster, NewUpdate} =
+ rst_roster:ataxia_set_character(IX, Character, CurrentRoster),
+
+ {UpdatedRoster, [NewUpdate|UpdateList]}
end,
{Roster, []},
Characters
@@ -149,11 +146,7 @@ commit_update (QueryState, Input) ->
ataxia_security:user_from_id(PlayerID),
ataxic:update_value
(
- ataxic:update_field
- (
- rst_roster:get_characters_field(),
- ataxic:sequence(QueryList)
- )
+ ataxic:optimize(ataxic:sequence(RosterAtaxiaUpdates))
),
RosterID
),