summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-18 18:35:53 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-18 18:35:53 +0200
commitb251f5165ea3530747657b522773c4a8f44b16fa (patch)
tree68d830acec3fe8c171429ac903a16944ed31120c /src/battlemap/struct/bm_tile.erl
parenta174bc2cc95b94c0b7d786e764c48de72206d7c5 (diff)
Separates tiles from their icon images IDs.
The client has yet to be updated to support the new exchanges.
Diffstat (limited to 'src/battlemap/struct/bm_tile.erl')
-rw-r--r--src/battlemap/struct/bm_tile.erl102
1 files changed, 85 insertions, 17 deletions
diff --git a/src/battlemap/struct/bm_tile.erl b/src/battlemap/struct/bm_tile.erl
index ce04898..36c22dc 100644
--- a/src/battlemap/struct/bm_tile.erl
+++ b/src/battlemap/struct/bm_tile.erl
@@ -3,17 +3,35 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-record
+(
+ tile,
+ {
+ id :: id(),
+ name :: binary(),
+ cost :: non_neg_integer(),
+ class_range_min :: non_neg_integer(),
+ class_range_max :: non_neg_integer()
+ }
+).
+
-opaque id() :: non_neg_integer().
--opaque type() :: id().
+-opaque class_id() :: non_neg_integer().
+-opaque type() :: #tile{}.
--export_type([type/0, id/0]).
+-export_type([type/0, class_id/0, id/0]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-export
(
[
+ get_id/1,
+ get_name/1,
get_cost/1,
+ get_range_minimum/1,
+ get_range_maximum/1,
+ from_id/1,
cost_when_oob/0
]
).
@@ -21,8 +39,8 @@
-export
(
[
- random_id/0,
- id_from_int/1
+ class_id_to_type_id/1,
+ class_id_from_int/1
]
).
@@ -33,21 +51,71 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+-spec class_id_to_type_id (class_id()) -> id().
+class_id_to_type_id (ClassID) ->
+ case ClassID of
+ 0 -> 0;
+ 1 -> 1;
+ 2 -> 2;
+ N when ((N >= 3) and (N =< 16)) -> 3
+ end.
+
+-spec from_id (id()) -> type().
+from_id (0) ->
+ #tile
+ {
+ id = 0,
+ name = <<"[Grassland] Grass">>,
+ cost = 6,
+ class_range_min = 1,
+ class_range_max = 1
+ };
+from_id (1) ->
+ #tile
+ {
+ id = 1,
+ name = <<"[Grassland] Mushroom Infestation">>,
+ cost = 12,
+ class_range_min = 1,
+ class_range_max = 1
+ };
+from_id (2) ->
+ #tile
+ {
+ id = 2,
+ name = <<"[Grassland] Tree Remains">>,
+ cost = 24,
+ class_range_min = 2,
+ class_range_max = 2
+ };
+from_id (3) ->
+ #tile
+ {
+ id = 2,
+ name = <<"[Grassland] Clear Water">>,
+ cost = cost_when_oob(),
+ class_range_min = 3,
+ class_range_max = 17
+ }.
+
-spec cost_when_oob () -> non_neg_integer().
cost_when_oob () -> 255.
--spec get_cost (id()) -> non_neg_integer().
-get_cost (N) ->
- case N of
- 0 -> 6;
- 1 -> 12;
- 2 -> 24;
- _ -> cost_when_oob()
- end.
+-spec get_id (type()) -> non_neg_integer().
+get_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_range_minimum (type()) -> non_neg_integer().
+get_range_minimum (Tile) -> Tile#tile.class_range_min.
--spec random_id () -> id().
-random_id () ->
- sh_roll:between(0, 15).
+-spec get_range_maximum (type()) -> non_neg_integer().
+get_range_maximum (Tile) -> Tile#tile.class_range_max.
--spec id_from_int (non_neg_integer()) -> id().
-id_from_int (I) -> I.
+-spec class_id_from_int (non_neg_integer()) -> id().
+class_id_from_int (I) -> I.