| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle/struct')
| -rw-r--r-- | src/battle/struct/btl_map.erl | 22 | ||||
| -rw-r--r-- | src/battle/struct/btl_tile.erl | 92 | ||||
| -rw-r--r-- | src/battle/struct/btl_tile.erl.m4 | 68 | 
3 files changed, 92 insertions, 90 deletions
| diff --git a/src/battle/struct/btl_map.erl b/src/battle/struct/btl_map.erl index 83cf455..ce39b19 100644 --- a/src/battle/struct/btl_map.erl +++ b/src/battle/struct/btl_map.erl @@ -12,7 +12,7 @@        id :: id(),        width :: integer(),        height :: integer(), -      tile_class_ids :: array:array(btl_tile:class_id()) +      tile_ids :: array:array(btl_tile:id())     }  ). @@ -30,8 +30,8 @@        get_id/1,        get_width/1,        get_height/1, -      get_tile_class_ids/1, -      get_tile_class_id/2 +      get_tile_ids/1, +      get_tile_id/2     ]  ). @@ -72,29 +72,29 @@ get_width (Map) -> Map#map.width.  -spec get_height (type()) -> integer().  get_height (Map) -> Map#map.height. --spec get_tile_class_ids (type()) -> array:array(btl_tile:class_id()). -get_tile_class_ids (Map) -> Map#map.tile_class_ids. +-spec get_tile_ids (type()) -> array:array(btl_tile:id()). +get_tile_ids (Map) -> Map#map.tile_ids. --spec get_tile_class_id (btl_location:type(), type()) -> btl_tile:class_id(). -get_tile_class_id (Location, Map) -> +-spec get_tile_id (btl_location:type(), type()) -> btl_tile:id(). +get_tile_id (Location, Map) ->     TileIX = location_to_array_index(Map#map.width, Location), -   array:get(TileIX, Map#map.tile_class_ids). +   array:get(TileIX, Map#map.tile_ids).  -spec from_list     (        non_neg_integer(),        non_neg_integer(),        non_neg_integer(), -      list(non_neg_integer()) +      list({non_neg_integer(), non_neg_integer(), non_neg_integer()})     )     -> type().  from_list (ID, Width, Height, List) -> -   TileClassIDs = lists:map(fun btl_tile:class_id_from_int/1, List), +   TileIDs = lists:map(fun btl_tile:id_from_ints/1, List),     #map     {        id = list_to_binary(integer_to_list(ID)),        width = Width,        height = Height, -      tile_class_ids = array:from_list(TileClassIDs) +      tile_ids = array:from_list(TileIDs)     }. diff --git a/src/battle/struct/btl_tile.erl b/src/battle/struct/btl_tile.erl index 3abfb9c..60886ca 100644 --- a/src/battle/struct/btl_tile.erl +++ b/src/battle/struct/btl_tile.erl @@ -7,16 +7,15 @@  (     tile,     { -      id :: id(), +      id :: class_id(),        name :: binary(), -      cost :: non_neg_integer(), -      class_range_min :: non_neg_integer(), -      class_range_max :: non_neg_integer() +      cost :: non_neg_integer()     }  ). --opaque id() :: non_neg_integer().  -opaque class_id() :: non_neg_integer(). +-opaque id() :: {class_id(), class_id(), non_neg_integer()}. +  -opaque type() :: #tile{}.  -export_type([type/0, class_id/0, id/0]). @@ -26,12 +25,10 @@  -export  (     [ -      get_id/1, +      get_class_id/1,        get_name/1,        get_cost/1, -      get_range_minimum/1, -      get_range_maximum/1, -      from_id/1, +      from_class_id/1,        cost_when_oob/0     ]  ). @@ -39,8 +36,17 @@  -export  (     [ -      class_id_to_type_id/1, -      class_id_from_int/1 +      id_to_int_list/1, +      id_from_ints/1 +   ] +). + +-export +( +   [ +      extract_main_class_id/1, +      extract_border_class_id/1, +      extract_variant_ix/1     ]  ). @@ -52,63 +58,53 @@  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec class_id_to_type_id (class_id()) -> id(). -class_id_to_type_id (ClassID) -> -   case ClassID of +-spec extract_main_class_id (id()) -> class_id(). +extract_main_class_id ({M, _, _}) -> M. -      N when ((N >= 0) and (N =< 0)) -> 0; -      N when ((N >= 1) and (N =< 1)) -> 1; -      N when ((N >= 2) and (N =< 2)) -> 2; -      N when ((N >= 3) and (N =< 17)) -> 3; -      _ -> 0 -   end. +-spec extract_border_class_id (id()) -> class_id(). +extract_border_class_id ({_, B, _}) -> B. --spec from_id (id()) -> type(). +-spec extract_variant_ix (id()) -> class_id(). +extract_variant_ix ({_, _, V}) -> V. -from_id (0) -> +-spec from_class_id (class_id()) -> type(). + +from_class_id (0) ->     #tile     {        id = 0,        name = <<"[Grassland] Grass">>, -      cost = 6, -      class_range_min = 0, -      class_range_max = 0 +      cost = 6     }; -from_id (1) -> +from_class_id (1) ->     #tile     {        id = 1,        name = <<"[Grassland] Mushroom Infestation">>, -      cost = 12, -      class_range_min = 1, -      class_range_max = 1 +      cost = 12     }; -from_id (2) -> +from_class_id (2) ->     #tile     {        id = 2,        name = <<"[Grassland] Tree Remains">>, -      cost = 24, -      class_range_min = 2, -      class_range_max = 2 +      cost = 24     }; -from_id (3) -> +from_class_id (3) ->     #tile     {        id = 3,        name = <<"[Grassland] Clear Water">>, -      cost = 201, -      class_range_min = 3, -      class_range_max = 17 +      cost = 201     }; -from_id(_) -> -   from_id(0). +from_class_id(_) -> +   from_class_id(0).  -spec cost_when_oob () -> non_neg_integer().  cost_when_oob () -> 255. --spec get_id (type()) -> non_neg_integer(). -get_id (Tile) -> Tile#tile.id. +-spec get_class_id (type()) -> non_neg_integer(). +get_class_id (Tile) -> Tile#tile.id.  -spec get_cost (type()) -> non_neg_integer().  get_cost (Tile) -> Tile#tile.cost. @@ -116,11 +112,11 @@ get_cost (Tile) -> Tile#tile.cost.  -spec get_name (type()) -> binary().  get_name (Tile) -> Tile#tile.name. --spec get_range_minimum (type()) -> non_neg_integer(). -get_range_minimum (Tile) -> Tile#tile.class_range_min. - --spec get_range_maximum (type()) -> non_neg_integer(). -get_range_maximum (Tile) -> Tile#tile.class_range_max. +-spec id_from_ints +   ( +      {non_neg_integer(), non_neg_integer(), non_neg_integer()} +   ) -> id(). +id_from_ints ({M, B, V}) -> {M, B, V}. --spec class_id_from_int (non_neg_integer()) -> id(). -class_id_from_int (I) -> I. +-spec id_to_int_list (id()) -> list(non_neg_integer()). +id_to_int_list ({M, B, V}) -> [M, B, V]. diff --git a/src/battle/struct/btl_tile.erl.m4 b/src/battle/struct/btl_tile.erl.m4 index 7a8ea21..170b855 100644 --- a/src/battle/struct/btl_tile.erl.m4 +++ b/src/battle/struct/btl_tile.erl.m4 @@ -7,16 +7,15 @@  (     tile,     { -      id :: id(), +      id :: class_id(),        name :: binary(), -      cost :: non_neg_integer(), -      class_range_min :: non_neg_integer(), -      class_range_max :: non_neg_integer() +      cost :: non_neg_integer()     }  ). --opaque id() :: non_neg_integer().  -opaque class_id() :: non_neg_integer(). +-opaque id() :: {class_id(), class_id(), non_neg_integer()}. +  -opaque type() :: #tile{}.  -export_type([type/0, class_id/0, id/0]). @@ -26,12 +25,10 @@  -export  (     [ -      get_id/1, +      get_class_id/1,        get_name/1,        get_cost/1, -      get_range_minimum/1, -      get_range_maximum/1, -      from_id/1, +      from_class_id/1,        cost_when_oob/0     ]  ). @@ -39,8 +36,17 @@  -export  (     [ -      class_id_to_type_id/1, -      class_id_from_int/1 +      id_to_int_list/1, +      id_from_ints/1 +   ] +). + +-export +( +   [ +      extract_main_class_id/1, +      extract_border_class_id/1, +      extract_variant_ix/1     ]  ). @@ -52,27 +58,27 @@  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec class_id_to_type_id (class_id()) -> id(). -class_id_to_type_id (ClassID) -> -   case ClassID of -m4_include(__MAKEFILE_DATA_DIR/tile/global.m4.conf)m4_dnl -__TILE_CLASS_USE_ERLANG_SELECT_STYLE -m4_include(__MAKEFILE_DATA_DIR/tile/grassland.m4d)m4_dnl -      _ -> 0 -   end. +-spec extract_main_class_id (id()) -> class_id(). +extract_main_class_id ({M, _, _}) -> M. --spec from_id (id()) -> type(). +-spec extract_border_class_id (id()) -> class_id(). +extract_border_class_id ({_, B, _}) -> B. + +-spec extract_variant_ix (id()) -> class_id(). +extract_variant_ix ({_, _, V}) -> V. + +-spec from_class_id (class_id()) -> type().  m4_include(__MAKEFILE_DATA_DIR/tile/global.m4.conf)m4_dnl  __TILE_CLASS_USE_ERLANG_STYLE  m4_include(__MAKEFILE_DATA_DIR/tile/grassland.m4d)m4_dnl -from_id(_) -> -   from_id(0). +from_class_id(_) -> +   from_class_id(0).  -spec cost_when_oob () -> non_neg_integer().  cost_when_oob () -> __TILE_COST_WHEN_OOB. --spec get_id (type()) -> non_neg_integer(). -get_id (Tile) -> Tile#tile.id. +-spec get_class_id (type()) -> non_neg_integer(). +get_class_id (Tile) -> Tile#tile.id.  -spec get_cost (type()) -> non_neg_integer().  get_cost (Tile) -> Tile#tile.cost. @@ -80,11 +86,11 @@ get_cost (Tile) -> Tile#tile.cost.  -spec get_name (type()) -> binary().  get_name (Tile) -> Tile#tile.name. --spec get_range_minimum (type()) -> non_neg_integer(). -get_range_minimum (Tile) -> Tile#tile.class_range_min. - --spec get_range_maximum (type()) -> non_neg_integer(). -get_range_maximum (Tile) -> Tile#tile.class_range_max. +-spec id_from_ints +   ( +      {non_neg_integer(), non_neg_integer(), non_neg_integer()} +   ) -> id(). +id_from_ints ({M, B, V}) -> {M, B, V}. --spec class_id_from_int (non_neg_integer()) -> id(). -class_id_from_int (I) -> I. +-spec id_to_int_list (id()) -> list(non_neg_integer()). +id_to_int_list ({M, B, V}) -> [M, B, V]. | 


