summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-04-23 10:02:00 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-04-23 10:02:00 +0200 |
commit | c5422c4f90e135dbae1968db4b7fe996890e0efc (patch) | |
tree | 05e678f0046f535cc2963669923956b845757cc7 /src | |
parent | d85264c80cf23d1e13ffed091141c3ab929e7f4a (diff) | |
parent | fbd24da759636897ae224eea8627424bec4d6ed5 (diff) |
Merge branch 'master' of dreamhost:~/repositories/git/tacticians-server
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/query/btl_character_turn.erl | 3 | ||||
-rw-r--r-- | src/battle/query/btl_load.erl | 13 | ||||
-rw-r--r-- | src/battle/struct/btl_battle.erl | 17 | ||||
-rw-r--r-- | src/battle/struct/btl_character_turn_data.erl | 2 | ||||
-rw-r--r-- | src/shared/struct/inventory/shr_equipment.erl | 64 |
5 files changed, 80 insertions, 19 deletions
diff --git a/src/battle/query/btl_character_turn.erl b/src/battle/query/btl_character_turn.erl index b30f02f..b911ae9 100644 --- a/src/battle/query/btl_character_turn.erl +++ b/src/battle/query/btl_character_turn.erl @@ -14,9 +14,6 @@ %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%-spec send_to_database (list(database_diff:type()), character_turn_request:type()) -> 'ok'. - - %%%% REQUEST DECODING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec decode_request (shr_query:type()) -> btl_character_turn_request:type(). decode_request (Query) -> diff --git a/src/battle/query/btl_load.erl b/src/battle/query/btl_load.erl index dae6fbe..583cd4b 100644 --- a/src/battle/query/btl_load.erl +++ b/src/battle/query/btl_load.erl @@ -83,6 +83,7 @@ generate_reply (QueryState, Input) -> PlayerID = Input#input.player_id, PUser = ataxia_security:user_from_id(PlayerID), Battle = QueryState#query_state.battle, + RelevantInventory = btl_battle:get_relevant_inventory(Battle), Players = btl_battle:get_players(Battle), {value, {PlayerIX, _Player}} = @@ -134,7 +135,7 @@ generate_reply (QueryState, Input) -> fun (PortraitID) -> btl_add_portrait:generate(shr_portrait:from_id(PortraitID)) end, - ordsets:to_list(btl_battle:get_used_portrait_ids(Battle)) + ordsets:to_list(shr_inventory:get_portraits(RelevantInventory)) ), AddWeaponList = @@ -143,7 +144,7 @@ generate_reply (QueryState, Input) -> fun (WeaponID) -> btl_add_weapon:generate(shr_weapon:from_id(WeaponID)) end, - ordsets:to_list(btl_battle:get_used_weapon_ids(Battle)) + ordsets:to_list(shr_inventory:get_weapons(RelevantInventory)) ), AddArmorList = @@ -152,7 +153,7 @@ generate_reply (QueryState, Input) -> fun (ArmorID) -> btl_add_armor:generate(shr_armor:from_id(ArmorID)) end, - ordsets:to_list(btl_battle:get_used_armor_ids(Battle)) + ordsets:to_list(shr_inventory:get_armors(RelevantInventory)) ), AddGlyphList = @@ -161,7 +162,7 @@ generate_reply (QueryState, Input) -> fun (GlyphID) -> btl_add_glyph:generate(shr_glyph:from_id(GlyphID)) end, - ordsets:to_list(btl_battle:get_used_glyph_ids(Battle)) + ordsets:to_list(shr_inventory:get_glyphs(RelevantInventory)) ), AddGlyphBoardList = @@ -170,7 +171,7 @@ generate_reply (QueryState, Input) -> fun (GlyphBoardID) -> btl_add_glyph_board:generate(shr_glyph_board:from_id(GlyphBoardID)) end, - ordsets:to_list(btl_battle:get_used_glyph_board_ids(Battle)) + ordsets:to_list(shr_inventory:get_glyph_boards(RelevantInventory)) ), AddTileList = @@ -179,7 +180,7 @@ generate_reply (QueryState, Input) -> fun (TileClassID) -> btl_add_tile:generate(shr_tile:from_id(TileClassID)) end, - ordsets:to_list(btl_battle:get_used_tile_ids(Battle)) + ordsets:to_list(btl_battle:get_related_tile_ids(Battle)) ), OutputList = diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl index a5b5a06..46f8c10 100644 --- a/src/battle/struct/btl_battle.erl +++ b/src/battle/struct/btl_battle.erl @@ -12,7 +12,8 @@ related_inventory :: shr_inventory:type(), related_tile_ids :: ordsets:ordset(shr_tile:id()), map :: shr_map:type(), - characters :: orddict:orddict(non_neg_integer(), btl_character:type()), + characters :: + orddict:orddict(non_neg_integer(), btl_character:unresolved()), players :: orddict:orddict(non_neg_integer(), btl_player:type()), current_player_turn :: btl_player_turn:type() } @@ -96,10 +97,10 @@ get_map (Battle) -> Battle#battle.map. ( type() ) - -> orddict:orddict(non_neg_integer(), btl_character:type()). + -> orddict:orddict(non_neg_integer(), btl_character:unresolved()). get_characters (Battle) -> Battle#battle.characters. --spec get_character (non_neg_integer(), type()) -> btl_character:type(). +-spec get_character (non_neg_integer(), type()) -> btl_character:unresolved(). get_character (IX, Battle) -> orddict:fetch(IX, Battle#battle.characters). @@ -139,7 +140,7 @@ set_map (Map, Battle) -> -spec set_characters ( - orddict:orddict(non_neg_integer(), btl_character:type()), + orddict:orddict(non_neg_integer(), btl_character:unresolved()), type() ) -> type(). @@ -149,7 +150,13 @@ set_characters (Characters, Battle) -> characters = Characters }. --spec set_character (non_neg_integer(), btl_character:type(), type()) -> type(). +-spec set_character + ( + non_neg_integer(), + btl_character:unresolved(), + type() + ) + -> type(). set_character (IX, Character, Battle) -> Battle#battle { diff --git a/src/battle/struct/btl_character_turn_data.erl b/src/battle/struct/btl_character_turn_data.erl index 5f44f8a..bd6fcac 100644 --- a/src/battle/struct/btl_character_turn_data.erl +++ b/src/battle/struct/btl_character_turn_data.erl @@ -113,7 +113,7 @@ clean_battle (Data) -> btl_battle:set_character ( Data#type.character_ix, - Data#type.character, + btl_character:to_unresolved(Data#type.character), Data#type.battle ) }. diff --git a/src/shared/struct/inventory/shr_equipment.erl b/src/shared/struct/inventory/shr_equipment.erl index 11dc19e..4de05fd 100644 --- a/src/shared/struct/inventory/shr_equipment.erl +++ b/src/shared/struct/inventory/shr_equipment.erl @@ -1,5 +1,12 @@ -module(shr_equipment). +-define(PRIMARY_WEAPON_FIELD, <<"pr">>). +-define(SECONDARY_WEAPON_FIELD, <<"sc">>). +-define(ARMOR_FIELD, <<"ar">>). +-define(PORTRAIT_FIELD, <<"pt">>). +-define(GLYPH_BOARD_FIELD, <<"gb">>). +-define(GLYPHS_FIELD, <<"gl">>). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -286,8 +293,8 @@ set_glyphs (V, Eq) when is_record(Eq, shr_eq_ref) -> Eq#shr_eq_ref{ glyphs = lists:map(fun shr_glyph:get_id/1, V) }. -spec ataxia_set_glyphs - (shr_glyph:type(), type()) -> {type(), ataxic:basic()}; - (shr_glyph:type(), unresolved()) -> {unresolved(), ataxic:basic()}. + (list(shr_glyph:type()), type()) -> {type(), ataxic:basic()}; + (list(shr_glyph:type()), unresolved()) -> {unresolved(), ataxic:basic()}. ataxia_set_glyphs (V, Eq) -> { set_glyphs(V, Eq), @@ -412,8 +419,8 @@ set_glyph_ids (V, Eq) when is_record(Eq, shr_eq) -> Eq#shr_eq{ glyphs = lists:map(fun shr_glyph:from_id/1, V) }. -spec ataxia_set_glyph_ids - (shr_glyph:id(), type()) -> {type(), ataxic:basic()}; - (shr_glyph:id(), unresolved()) -> {unresolved(), ataxic:basic()}. + (list(shr_glyph:id()), type()) -> {type(), ataxic:basic()}; + (list(shr_glyph:id()), unresolved()) -> {unresolved(), ataxic:basic()}. ataxia_set_glyph_ids (V, Eq) -> { set_glyph_ids(V, Eq), @@ -448,6 +455,55 @@ default_unresolved () -> glyphs = [] }. +-spec decode (map()) -> unresolved(). +decode (Map) -> + #shr_eq_ref + { + primary = maps:get(?PRIMARY_WEAPON_FIELD, Map), + secondary = maps:get(?SECONDARY_WEAPON_FIELD, Map), + armor = maps:get(?ARMOR_FIELD, Map), + portrait = maps:get(?PORTRAIT_FIELD, Map), + glyph_board = maps:get(?GLYPH_BOARD_FIELD, Map), + glyphs = maps:get(?GLYPHS_FIELD, Map) + }. + +-spec encode (unresolved()) -> {list({binary(), any()})}. +encode (EqRef) -> + { + [ + {?PRIMARY_WEAPON_FIELD, EqRef#shr_eq_ref.primary}, + {?SECONDARY_WEAPON_FIELD, EqRef#shr_eq_ref.secondary}, + {?ARMOR_FIELD, EqRef#shr_eq_ref.armor}, + {?PORTRAIT_FIELD, EqRef#shr_eq_ref.portrait}, + {?GLYPH_BOARD_FIELD, EqRef#shr_eq_ref.glyph_board}, + {?GLYPHS_FIELD, EqRef#shr_eq_ref.glyphs} + ] + }. + +-spec resolve (unresolved()) -> type(). +resolve (EqRef) -> + #shr_eq + { + primary = shr_weapon:from_id(EqRef#shr_eq_ref.primary), + secondary = shr_weapon:from_id(EqRef#shr_eq_ref.secondary), + armor = shr_armor:from_id(EqRef#shr_eq_ref.armor), + portrait = shr_portrait:from_id(EqRef#shr_eq_ref.portrait), + glyph_board = shr_glyph_board:from_id(EqRef#shr_eq_ref.glyph_board), + glyphs = lists:map(fun shr_glyph:from_id/1, EqRef#shr_eq_ref.glyphs) + }. + +-spec to_unresolved (type()) -> unresolved(). +to_unresolved (Eq) -> + #shr_eq_ref + { + primary = shr_weapon:get_id(Eq#shr_eq.primary), + secondary = shr_weapon:get_id(Eq#shr_eq.secondary), + armor = shr_armor:get_id(Eq#shr_eq.armor), + portrait = shr_portrait:get_id(Eq#shr_eq.portrait), + glyph_board = shr_glyph_board:get_id(Eq#shr_eq.glyph_board), + glyphs = lists:map(fun shr_glyph:get_id/1, Eq#shr_eq.glyphs) + }. + -spec get_primary_weapon_field () -> non_neg_integer(). get_primary_weapon_field () -> #shr_eq_ref.primary. |