summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-02-15 22:29:05 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-02-15 22:29:05 +0100 |
commit | 1e3ed11d30c5c6639de10caca2eea898e506e4cf (patch) | |
tree | 4bd676ed07ca71c46506b1fc3c1b54a9847e3466 | |
parent | 11ba787cd7a9bbcd0dff71176285337375313409 (diff) |
Markers/triggers, shr_tile -> shr_tile{,_instance}
-rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_move.erl | 4 | ||||
-rw-r--r-- | src/battle/query/btl_load.erl | 9 | ||||
-rw-r--r-- | src/battle/reply/btl_add_tile.erl | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_battle.erl | 4 | ||||
-rw-r--r-- | src/battle/struct/btl_character_current_data.erl | 4 | ||||
-rw-r--r-- | src/bounty/bnt_join_battle.erl | 4 | ||||
-rw-r--r-- | src/map/query/map_load.erl | 2 | ||||
-rw-r--r-- | src/map/query/map_update.erl | 11 | ||||
-rw-r--r-- | src/shared/reply/shr_set_map.erl | 15 | ||||
-rw-r--r-- | src/shared/struct/map/shr_map.erl | 17 | ||||
-rw-r--r-- | src/shared/struct/map/shr_tile.erl.m4 | 2 | ||||
-rw-r--r-- | src/shared/struct/map/shr_tile_instance.erl | 29 | ||||
-rw-r--r-- | src/shared/util/shr_array_tuple.erl | 4 |
13 files changed, 62 insertions, 45 deletions
diff --git a/src/battle/mechanic/turn_action/btl_turn_actions_move.erl b/src/battle/mechanic/turn_action/btl_turn_actions_move.erl index 814239b..db46ef0 100644 --- a/src/battle/mechanic/turn_action/btl_turn_actions_move.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_move.erl @@ -30,8 +30,8 @@ cross (_Map, _ForbiddenLocations, [], Cost, Location) -> cross (Map, ForbiddenLocations, [Step|NextSteps], Cost, Location) -> NextLocation = shr_location:apply_direction(Step, Location), NextTileInstance = shr_map:get_tile_instance(NextLocation, Map), - NextTileClassID = shr_tile:extract_main_class_id(NextTileInstance), - NextTile = shr_tile:from_class_id(NextTileClassID), + NextTileClassID = shr_tile_instance:get_tile_id(NextTileInstance), + NextTile = shr_tile:from_id(NextTileClassID), NextCost = (Cost + shr_tile:get_cost(NextTile)), IsForbidden = lists:foldl diff --git a/src/battle/query/btl_load.erl b/src/battle/query/btl_load.erl index eec8edb..7748c68 100644 --- a/src/battle/query/btl_load.erl +++ b/src/battle/query/btl_load.erl @@ -100,7 +100,12 @@ generate_reply (QueryState, Input) -> btl_battle:get_encoded_last_turns_effects(Battle) ), - SetMap = shr_set_map:generate(btl_battle:get_map(Battle)), + SetMap = + shr_set_map:generate + ( + fun (_TriggerName) -> false end, + btl_battle:get_map(Battle) + ), AddCharList = lists:map @@ -151,7 +156,7 @@ generate_reply (QueryState, Input) -> lists:map ( fun (TileClassID) -> - btl_add_tile:generate(shr_tile:from_class_id(TileClassID)) + btl_add_tile:generate(shr_tile:from_id(TileClassID)) end, ordsets:to_list(btl_battle:get_used_tile_ids(Battle)) ), diff --git a/src/battle/reply/btl_add_tile.erl b/src/battle/reply/btl_add_tile.erl index bf76547..980628d 100644 --- a/src/battle/reply/btl_add_tile.erl +++ b/src/battle/reply/btl_add_tile.erl @@ -21,7 +21,7 @@ generate (Tile) -> { [ {<<"msg">>, <<"add_tile">>}, - {<<"id">>, shr_tile:get_class_id(Tile)}, + {<<"id">>, shr_tile:get_id(Tile)}, {<<"nam">>, shr_tile:get_name(Tile)}, {<<"ct">>, shr_tile:get_cost(Tile)}, {<<"omni">>, shr_omnimods:encode(shr_tile:get_omnimods(Tile))} diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl index 7237072..2a09244 100644 --- a/src/battle/struct/btl_battle.erl +++ b/src/battle/struct/btl_battle.erl @@ -12,7 +12,7 @@ used_armor_ids :: ordsets:ordset(shr_armor:id()), used_weapon_ids :: ordsets:ordset(shr_weapon:id()), used_portrait_ids :: ordsets:ordset(shr_portrait:id()), - used_tile_ids :: ordsets:ordset(shr_tile:class_id()), + used_tile_ids :: ordsets:ordset(shr_tile:id()), map :: shr_map:type(), characters :: orddict:orddict(non_neg_integer(), btl_character:type()), players :: orddict:orddict(non_neg_integer(), btl_player:type()), @@ -99,7 +99,7 @@ get_used_weapon_ids (Battle) -> Battle#battle.used_weapon_ids. -spec get_used_armor_ids (type()) -> ordsets:ordset(shr_armor:id()). get_used_armor_ids (Battle) -> Battle#battle.used_armor_ids. --spec get_used_tile_ids (type()) -> ordsets:ordset(shr_tile:class_id()). +-spec get_used_tile_ids (type()) -> ordsets:ordset(shr_tile:id()). get_used_tile_ids (Battle) -> Battle#battle.used_tile_ids. -spec get_map (type()) -> shr_map:type(). diff --git a/src/battle/struct/btl_character_current_data.erl b/src/battle/struct/btl_character_current_data.erl index 0be920b..3f25345 100644 --- a/src/battle/struct/btl_character_current_data.erl +++ b/src/battle/struct/btl_character_current_data.erl @@ -48,8 +48,8 @@ -> shr_omnimods:type(). location_to_omnimods (Location, Map) -> TileInstance = shr_map:get_tile_instance(Location, Map), - TileClassID = shr_tile:extract_main_class_id(TileInstance), - Tile = shr_tile:from_class_id(TileClassID), + TileClassID = shr_tile_instance:get_tile_id(TileInstance), + Tile = shr_tile:from_id(TileClassID), shr_tile:get_omnimods(Tile). diff --git a/src/bounty/bnt_join_battle.erl b/src/bounty/bnt_join_battle.erl index b89627b..78c4ea4 100644 --- a/src/bounty/bnt_join_battle.erl +++ b/src/bounty/bnt_join_battle.erl @@ -116,9 +116,9 @@ find_random_location (Map, ForbiddenLocations) -> _ -> Tile = - shr_tile:from_class_id + shr_tile:from_id ( - shr_tile:extract_main_class_id + shr_tile_instance:get_tile_id ( shr_map:get_tile_instance(Candidate, Map) ) diff --git a/src/map/query/map_load.erl b/src/map/query/map_load.erl index b8126dd..19facf6 100644 --- a/src/map/query/map_load.erl +++ b/src/map/query/map_load.erl @@ -80,7 +80,7 @@ fetch_data (Input) -> generate_reply (QueryState) -> Map = QueryState#query_state.map, - SetMap = shr_set_map:generate(Map), + SetMap = shr_set_map:generate(fun (_TriggerName) -> true end, Map), Output = jiffy:encode([SetMap]), Output. diff --git a/src/map/query/map_update.erl b/src/map/query/map_update.erl index 00f9a29..47d5ac5 100644 --- a/src/map/query/map_update.erl +++ b/src/map/query/map_update.erl @@ -12,7 +12,7 @@ map_id :: binary(), w :: non_neg_integer(), h :: non_neg_integer(), - t :: list(list(binary())) + t :: list(map()) } ). @@ -49,15 +49,6 @@ parse_input (Query) -> true = (MapWidth > 0), true = (MapHeight > 0), true = (length(MapContent) == (MapWidth * MapHeight)), - true = - lists:all - ( - fun (T) -> - [_M|[_V|B]] = T, - ((length(B) rem 2) == 0) - end, - MapContent - ), #input { diff --git a/src/shared/reply/shr_set_map.erl b/src/shared/reply/shr_set_map.erl index b335302..0096b52 100644 --- a/src/shared/reply/shr_set_map.erl +++ b/src/shared/reply/shr_set_map.erl @@ -7,7 +7,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export([generate/1]). +-export([generate/2]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,8 +16,13 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate (shr_map:type()) -> {list(any())}. -generate (Map) -> +-spec generate + ( + fun ((shr_tile_instance:trigger_name()) -> boolean()), + shr_map:type() + ) + -> {list(any())}. +generate (TriggerVisibilityFun, Map) -> { [ {<<"msg">>, <<"set_map">>}, @@ -27,7 +32,9 @@ generate (Map) -> <<"t">>, lists:map ( - fun shr_tile:instance_to_binary_list/1, + fun (E) -> + shr_tile_instance:encode(TriggerVisibilityFun, E) + end, tuple_to_list(shr_map:get_tile_instances(Map)) ) } diff --git a/src/shared/struct/map/shr_map.erl b/src/shared/struct/map/shr_map.erl index c9f01b4..227c06b 100644 --- a/src/shared/struct/map/shr_map.erl +++ b/src/shared/struct/map/shr_map.erl @@ -97,7 +97,12 @@ get_height (Map) -> Map#map.height. -> shr_array_tuple:array_tuple(shr_tile_instance:type()). get_tile_instances (Map) -> Map#map.tile_instances. --spec get_tile_instance (shr_location:type(), type()) -> shr_tile:instance(). +-spec get_tile_instance + ( + shr_location:type(), + type() + ) + -> shr_tile_instance:type(). get_tile_instance (Location, Map) -> TileIX = location_to_index(Map#map.width, Location), element((TileIX + 1), Map#map.tile_instances). @@ -128,7 +133,7 @@ get_markers_field () -> #map.markers. get_tile_instances_field () -> #map.tile_instances. %%%% Utility --spec get_used_tile_ids (type()) -> ordsets:ordset(shr_tile:class_id()). +-spec get_used_tile_ids (type()) -> ordsets:ordset(shr_tile:id()). get_used_tile_ids (Map) -> UsedTileIDs = lists:foldl @@ -136,7 +141,7 @@ get_used_tile_ids (Map) -> fun (TileInstance, CurrentTileIDs) -> ordsets:add_element ( - shr_tile:extract_main_class_id(TileInstance), + shr_tile_instance:get_tile_id(TileInstance), CurrentTileIDs ) end, @@ -152,11 +157,11 @@ get_used_tile_ids (Map) -> non_neg_integer(), non_neg_integer(), shr_map_marker:collection(), - list(list(binary())) + list(map()) ) -> type(). update_from_list (Map, Width, Height, Markers, List) -> - TileInstances = lists:map(fun shr_tile:instance_from_binary_list/1, List), + TileInstances = lists:map(fun shr_tile_instance:decode/1, List), Map#map { @@ -168,7 +173,7 @@ update_from_list (Map, Width, Height, Markers, List) -> -spec default (binary()) -> type(). default (Owner) -> - DefaultTileInstance = shr_tile:default_tile_instance(), + DefaultTileInstance = shr_tile_instance:default(), #map { diff --git a/src/shared/struct/map/shr_tile.erl.m4 b/src/shared/struct/map/shr_tile.erl.m4 index 5bd8acd..26f9645 100644 --- a/src/shared/struct/map/shr_tile.erl.m4 +++ b/src/shared/struct/map/shr_tile.erl.m4 @@ -57,7 +57,7 @@ from_id(_) -> -spec cost_when_oob () -> non_neg_integer(). cost_when_oob () -> __TILE_COST_WHEN_OOB. --spec get_id (type()) -> class_id(). +-spec get_id (type()) -> id(). get_id (Tile) -> Tile#tile.id. -spec get_cost (type()) -> non_neg_integer(). diff --git a/src/shared/struct/map/shr_tile_instance.erl b/src/shared/struct/map/shr_tile_instance.erl index 6696f35..9f95378 100644 --- a/src/shared/struct/map/shr_tile_instance.erl +++ b/src/shared/struct/map/shr_tile_instance.erl @@ -4,23 +4,24 @@ %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -type display_data() :: list(binary()). +-type trigger_name() :: binary(). -opaque type() :: { shr_tile:id(), shr_tile:variant_id(), display_data(), - list(shr_map_trigger:id()) + list(trigger_name()) }. --export_type([type/0, border/0]). +-export_type([type/0, trigger_name/0]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -export ( [ - encode/1, + encode/2, decode/1, default/0, error/0 @@ -48,11 +49,10 @@ get_tile_id ({TileID, _, _, _}) -> TileID. -spec get_variant_id (type()) -> shr_tile:variant_id(). get_variant_id ({_, VariantID, _, _}) -> VariantID. --spec decode (list(binary())) -> type(). +-spec decode (map()) -> type(). decode (Map) -> L = maps:get(<<"b">>, Map), - T = maps:get(<<"t">>, Map), - + Triggers = maps:get(<<"t">>, Map), [TileID|[VariantID|DisplayData]] = L, @@ -62,10 +62,19 @@ decode (Map) -> _ -> [] end, - {TileID, VariantID, S0DisplayData, T}. + {TileID, VariantID, S0DisplayData, Triggers}. --spec encode (instance()) -> list(binary()). -encode (I) -> I. +-spec encode (fun ((trigger_name()) -> boolean()), type()) -> {list(any())}. +encode (VisibilityFun, {TileID, VariantID, DisplayData, Triggers}) -> + { + [ + {<<"b">>, [TileID|[VariantID|DisplayData]]}, + {<<"t">>, lists:filter(VisibilityFun, Triggers)} + ] + }. -spec default () -> type(). -default () -> [<<"1">>, <<"0">>]. +default () -> {<<"1">>, <<"0">>, [], []}. + +-spec error () -> type(). +error () -> {<<"0">>, <<"0">>, [], []}. diff --git a/src/shared/util/shr_array_tuple.erl b/src/shared/util/shr_array_tuple.erl index 3effb4c..0ca9ffa 100644 --- a/src/shared/util/shr_array_tuple.erl +++ b/src/shared/util/shr_array_tuple.erl @@ -1,8 +1,8 @@ -module(shr_array_tuple). % My solution to https://stackoverflow.com/questions/53877197/are-there-erlang-arrays-with-a-defined-representation --opaque array_tuple() :: tuple(). --opaque array_tuple(_Type) :: tuple(). +-type array_tuple() :: tuple(). +-type array_tuple(_Type) :: tuple(). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |