summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/struct/battlemap.erl')
-rw-r--r--src/struct/battlemap.erl31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/struct/battlemap.erl b/src/struct/battlemap.erl
index 733f76c..76f8fd4 100644
--- a/src/struct/battlemap.erl
+++ b/src/struct/battlemap.erl
@@ -3,17 +3,23 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-opaque id() :: binary().
+
-record
(
battlemap,
{
- id,
- width,
- height,
- tile_ids
+ id :: id(),
+ width :: integer(),
+ height :: integer(),
+ tile_ids :: array:array(tile:id())
}
).
+-opaque struct() :: #battlemap{}.
+
+-export_type([struct/0, id/0]).
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38,6 +44,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec generate_random_tile_ids
+ (
+ tile:id(),
+ list(tile:id()),
+ non_neg_integer(),
+ non_neg_integer(),
+ non_neg_integer()
+ )
+ -> list(tile:id()).
generate_random_tile_ids (_PreviousTileID, Result, _X, 0, _Width) ->
Result;
generate_random_tile_ids (PreviousTileID, Result, 0, Y, Width) ->
@@ -54,11 +69,19 @@ generate_random_tile_ids (PreviousTileID, Result, X, Y, Width) ->
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Accessors
+-spec get_id (struct()) -> id().
get_id (Battlemap) -> Battlemap#battlemap.id.
+
+-spec get_width (struct()) -> integer().
get_width (Battlemap) -> Battlemap#battlemap.width.
+
+-spec get_height (struct()) -> integer().
get_height (Battlemap) -> Battlemap#battlemap.height.
+
+-spec get_tile_ids (struct()) -> array:array(tile:id()).
get_tile_ids (Battlemap) -> Battlemap#battlemap.tile_ids.
+-spec random (id(), non_neg_integer(), non_neg_integer()) -> struct().
random (ID, Width, Height) ->
InitialTile = tile:random_id(),
TileIDs = generate_random_tile_ids(InitialTile, [], Width, Height, Width),