summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-02-27 17:19:59 +0100
committernsensfel <SpamShield0@noot-noot.org>2018-02-27 17:19:59 +0100
commit8ed3e625a5576b6f43b966ee77e0f6de282a074e (patch)
tree0dbd68dc9e49d02861b1c27956b31fcce2bc6677 /src/battlemap
parent292022649270d36c8ab0c813e4d7e07f3e067231 (diff)
...
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/movement.erl43
-rw-r--r--src/battlemap/roll.erl2
2 files changed, 42 insertions, 3 deletions
diff --git a/src/battlemap/movement.erl b/src/battlemap/movement.erl
index 513d032..9eb45db 100644
--- a/src/battlemap/movement.erl
+++ b/src/battlemap/movement.erl
@@ -7,7 +7,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-export
(
[
@@ -19,6 +18,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec location_after_step
+ (
+ binary(),
+ integer(),
+ integer()
+ )
+ -> {integer(), integer()}.
location_after_step (Step, X, Y) ->
case Step of
<<"L">> -> {(X - 1), Y};
@@ -27,10 +33,17 @@ location_after_step (Step, X, Y) ->
<<"D">> -> {X, (Y + 1)}
end.
+-spec location_to_array_index
+ (
+ non_neg_integer(),
+ integer(),
+ integer()
+ )
+ -> ('error' | non_neg_integer()).
location_to_array_index (ArrayWidth, X, Y) ->
if
- (X < 0) -> -1;
- (Y < 0) -> -1;
+ (X < 0) -> error;
+ (Y < 0) -> error;
(X >= ArrayWidth) -> error;
true -> ((Y * ArrayWidth) + X)
end.
@@ -38,6 +51,16 @@ location_to_array_index (ArrayWidth, X, Y) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec cross
+ (
+ battlemap:struct(),
+ array:array(non_neg_integer(), non_neg_integer()),
+ list(binary()),
+ non_neg_integer(),
+ non_neg_integer(),
+ non_neg_integer()
+ )
+ -> {{non_neg_integer(), non_neg_integer()}, non_neg_integer()}.
cross (_Battlemap, _ForbiddenLocations, [], Cost, X, Y) ->
{{X, Y}, Cost};
cross (Battlemap, ForbiddenLocations, [Step|NextSteps], Cost, X, Y) ->
@@ -63,8 +86,22 @@ cross (Battlemap, ForbiddenLocations, [Step|NextSteps], Cost, X, Y) ->
cross(Battlemap, ForbiddenLocations, NextSteps, NextCost, NextX, NextY).
+-spec cross
+ (
+ battlemap:struct(),
+ array:array(non_neg_integer(), non_neg_integer()),
+ list(binary()),
+ {non_neg_integer(), non_neg_integer()}
+ )
+ -> {{non_neg_integer(), non_neg_integer()}, non_neg_integer()}.
cross (Battlemap, ForbiddenLocations, Path, {X, Y}) ->
cross(Battlemap, ForbiddenLocations, Path, 0, X, Y).
+-spec steps_between
+ (
+ {non_neg_integer(), non_neg_integer()},
+ {non_neg_integer(), non_neg_integer()}
+ )
+ -> non_neg_integer().
steps_between ({OX, OY}, {DX, DY}) ->
(abs(DY - OY) + abs(DX - OX)).
diff --git a/src/battlemap/roll.erl b/src/battlemap/roll.erl
index 803a6de..074054b 100644
--- a/src/battlemap/roll.erl
+++ b/src/battlemap/roll.erl
@@ -22,9 +22,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec between (non_neg_integer(), non_neg_integer()) -> non_neg_integer().
between (Min, Max) ->
Diff = (Max - Min),
(Min + (rand:uniform(Diff + 1) - 1)).
+-spec percentage () -> 0..100.
percentage () ->
between(0, 100).