| summaryrefslogtreecommitdiff | 
diff options
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.  | 


