summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-11-21 17:35:32 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-11-21 17:35:32 +0100
commitf633e4d5320806f13b4cffa8dbef0f59a08ae90f (patch)
tree00759914fa79b18577e0cc0368403db4ee60d8f4 /src/battlemap
parenteea0d1d6d519bba540c261787a6223536abf237b (diff)
Server/client disagreement on tile crossing cost.
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/cross.erl62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/battlemap/cross.erl b/src/battlemap/cross.erl
new file mode 100644
index 0000000..add9c27
--- /dev/null
+++ b/src/battlemap/cross.erl
@@ -0,0 +1,62 @@
+-export([cross/5]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+next_loc (X, Y, <<"L">>) -> {(X - 1), Y};
+next_loc (X, Y, <<"R">>) -> {(X + 1), Y};
+next_loc (X, Y, <<"U">>) -> {X, (Y - 1)};
+next_loc (X, Y, <<"D">>) -> {X, (Y + 1)}.
+
+loc_to_index(X, Y, Map) ->
+ if
+ (X < 0) -> error;
+ (Y < 0) -> error;
+ (X >= Map#battlemap.width) -> error;
+ true -> ((Y * Map#battlemap.width) + X)
+ end.
+
+calc_new_loc (X, Y, [], Points, _Map, _CharInstsLocs) ->
+ io:format("~nPoints remaining: ~p ~n", [Points]),
+ true = (Points >= 0),
+ {X, Y};
+calc_new_loc (X, Y, [Step|Path], Points, Map, CharInstsLocs) ->
+ io:format("~nStep - Points remaining: ~p ~n", [Points]),
+ {NX, NY} = next_loc(X, Y, Step),
+ TileCost =
+ tile:get_cost
+ (
+ array:get
+ (
+ loc_to_index(NX, NY, Map),
+ Map#battlemap.content
+ )
+ ),
+ io:format("~nStep cost: ~p ~n", [TileCost]),
+ NPoints =
+ (
+ Points
+ -
+ TileCost
+ ),
+ false = lists:member({NX, NY}, CharInstsLocs),
+ calc_new_loc(NX, NY, Path, NPoints, Map, CharInstsLocs).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+cross (Battlemap, {X, Y}, Points, Path, CharInsts) ->
+ calc_new_loc
+ (
+ X,
+ Y,
+ Path,
+ Points,
+ Battlemap,
+ lists:map
+ (
+ fun character_instance:get_location/1,
+ CharInsts
+ )
+ ).