summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/struct/btl_map.erl')
-rw-r--r--src/battle/struct/btl_map.erl31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/battle/struct/btl_map.erl b/src/battle/struct/btl_map.erl
index c784bca..157382d 100644
--- a/src/battle/struct/btl_map.erl
+++ b/src/battle/struct/btl_map.erl
@@ -3,13 +3,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--type id() :: binary().
-
-record
(
map,
{
- id :: id(),
width :: integer(),
height :: integer(),
tile_ids :: array:array(shr_tile:instance())
@@ -18,7 +15,7 @@
-opaque type() :: #map{}.
--export_type([type/0, id/0]).
+-export_type([type/0]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -27,7 +24,6 @@
-export
(
[
- get_id/1,
get_width/1,
get_height/1,
get_tile_instances/1,
@@ -38,7 +34,8 @@
-export
(
[
- from_list/4
+ from_list/3,
+ from_array/3
]
).
@@ -63,9 +60,6 @@ location_to_array_index (ArrayWidth, {X, Y}) ->
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Accessors
--spec get_id (type()) -> id().
-get_id (Map) -> Map#map.id.
-
-spec get_width (type()) -> integer().
get_width (Map) -> Map#map.width.
@@ -84,17 +78,30 @@ get_tile_instance (Location, Map) ->
(
non_neg_integer(),
non_neg_integer(),
- non_neg_integer(),
list(list(non_neg_integer()))
)
-> type().
-from_list (ID, Width, Height, List) ->
+from_list (Width, Height, List) ->
TileInstances = lists:map(fun shr_tile:instance_from_ints/1, List),
#map
{
- id = list_to_binary(integer_to_list(ID)),
width = Width,
height = Height,
tile_ids = array:from_list(TileInstances)
}.
+
+-spec from_array
+ (
+ non_neg_integer(),
+ non_neg_integer(),
+ array:array(shr_tile:instance())
+ )
+ -> type().
+from_array (Width, Height, TileInstances) ->
+ #map
+ {
+ width = Width,
+ height = Height,
+ tile_ids = TileInstances
+ }.