summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battlemap/struct')
-rw-r--r--src/battlemap/struct/bm_battlemap.erl22
-rw-r--r--src/battlemap/struct/bm_tile.erl14
2 files changed, 31 insertions, 5 deletions
diff --git a/src/battlemap/struct/bm_battlemap.erl b/src/battlemap/struct/bm_battlemap.erl
index c3eabb0..6c9fbf9 100644
--- a/src/battlemap/struct/bm_battlemap.erl
+++ b/src/battlemap/struct/bm_battlemap.erl
@@ -38,7 +38,8 @@
-export
(
[
- random/3
+ random/3,
+ from_list/4
]
).
@@ -119,3 +120,22 @@ random (ID, Width, Height) ->
height = Height,
tile_ids = array:from_list(TileIDs)
}.
+
+-spec from_list
+ (
+ non_neg_integer(),
+ non_neg_integer(),
+ non_neg_integer(),
+ list(non_neg_integer())
+ )
+ -> type().
+from_list (ID, Width, Height, List) ->
+ TileIDs = lists:map(fun bm_tile:id_from_int/1, List),
+
+ #battlemap
+ {
+ id = list_to_binary(integer_to_list(ID)),
+ width = Width,
+ height = Height,
+ tile_ids = array:from_list(TileIDs)
+ }.
diff --git a/src/battlemap/struct/bm_tile.erl b/src/battlemap/struct/bm_tile.erl
index c1dd448..ce04898 100644
--- a/src/battlemap/struct/bm_tile.erl
+++ b/src/battlemap/struct/bm_tile.erl
@@ -21,7 +21,8 @@
-export
(
[
- random_id/0
+ random_id/0,
+ id_from_int/1
]
).
@@ -37,11 +38,16 @@ cost_when_oob () -> 255.
-spec get_cost (id()) -> non_neg_integer().
get_cost (N) ->
- if
- (N =< 200) -> (N + 8);
- true -> cost_when_oob()
+ case N of
+ 0 -> 6;
+ 1 -> 12;
+ 2 -> 24;
+ _ -> cost_when_oob()
end.
-spec random_id () -> id().
random_id () ->
sh_roll:between(0, 15).
+
+-spec id_from_int (non_neg_integer()) -> id().
+id_from_int (I) -> I.