summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-02-15 18:18:54 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-02-15 18:18:54 +0100 |
commit | 85b1e04a22e7564b702aa27c5f6467ad4d5f4416 (patch) | |
tree | d0a408eb97412feccdbcfe20b951669b6f6e6588 /src/shared/struct/map/shr_tile.erl.m4 | |
parent | 9b91ff37a1e39f48631b5bee338c31318d1e2336 (diff) |
Re-organizing shr_ structs.
Diffstat (limited to 'src/shared/struct/map/shr_tile.erl.m4')
-rw-r--r-- | src/shared/struct/map/shr_tile.erl.m4 | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/shared/struct/map/shr_tile.erl.m4 b/src/shared/struct/map/shr_tile.erl.m4 new file mode 100644 index 0000000..7876f8f --- /dev/null +++ b/src/shared/struct/map/shr_tile.erl.m4 @@ -0,0 +1,133 @@ +-module(shr_tile). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-type class_id() :: binary(). +-type variant_id() :: binary(). +-type instances_tuple() :: tuple(). + +-record +( + tile, + { + id :: class_id(), + name :: binary(), + cost :: non_neg_integer(), + omnimods :: shr_omnimods:type(), + family :: variant_id(), + depth :: non_neg_integer() + } +). + +-opaque instance() :: list(binary()). +-opaque border() :: list(binary()). + +-opaque type() :: #tile{}. + +-export_type([type/0, class_id/0, variant_id/0, instance/0, border/0]). +-export_type([instances_tuple/0]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( + [ + get_class_id/1, + get_name/1, + get_cost/1, + get_omnimods/1, + from_class_id/1, + cost_when_oob/0 + ] +). + +-export +( + [ + instance_to_binary_list/1, + instance_from_binary_list/1, + default_tile_instance/0 + ] +). + +-export +( + [ + extract_main_class_id/1, + extract_variant_id/1, + extract_borders/1 + ] +). + +-export +( + [ + extract_border_main_class_id/1, + extract_border_variant_id/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +-spec extract_main_class_id (instance()) -> class_id(). +extract_main_class_id (I) -> lists:nth(1, I). + +-spec extract_borders (instance()) -> list(border()). +extract_borders (I) -> + [_|[_|Result]] = I, + Result. + +-spec extract_variant_id (instance()) -> variant_id(). +extract_variant_id (I) -> lists:nth(2, I). + +-spec extract_border_main_class_id (border()) -> class_id(). +extract_border_main_class_id (B) -> lists:nth(1, B). + +-spec extract_border_variant_id (border()) -> variant_id(). +extract_border_variant_id (B) -> lists:nth(2, B). + +-spec from_class_id (class_id()) -> type(). +m4_include(__MAKEFILE_DATA_DIR/tile/global.m4.conf)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/tile/special.m4d)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/tile/grassland.m4d)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/tile/mud.m4d)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/tile/water.m4d)m4_dnl +from_class_id(_) -> + from_class_id(<<"0">>). + +-spec cost_when_oob () -> non_neg_integer(). +cost_when_oob () -> __TILE_COST_WHEN_OOB. + +-spec get_class_id (type()) -> class_id(). +get_class_id (Tile) -> Tile#tile.id. + +-spec get_cost (type()) -> non_neg_integer(). +get_cost (Tile) -> Tile#tile.cost. + +-spec get_name (type()) -> binary(). +get_name (Tile) -> Tile#tile.name. + +-spec get_omnimods (type()) -> shr_omnimods:type(). +get_omnimods (Tile) -> Tile#tile.omnimods. + +-spec instance_from_binary_list (list(binary())) -> instance(). +instance_from_binary_list (L) -> + LLength = length(L), + + case (((LLength rem 2) == 0) and (LLength /= 0)) of + true -> L; + _ -> [<<"0">>, <<"0">>] + end. + +-spec instance_to_binary_list (instance()) -> list(binary()). +instance_to_binary_list (I) -> I. + +-spec default_tile_instance () -> instance(). +default_tile_instance () -> [<<"1">>, <<"0">>]. |