| 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 


