summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battlemap.erl24
-rw-r--r--src/battlemap_instance.erl33
-rw-r--r--src/character_instance.erl20
-rw-r--r--src/database_shim.erl13
4 files changed, 86 insertions, 4 deletions
diff --git a/src/battlemap.erl b/src/battlemap.erl
new file mode 100644
index 0000000..209a4ab
--- /dev/null
+++ b/src/battlemap.erl
@@ -0,0 +1,24 @@
+-module(battlemap).
+-export
+(
+ [
+ cross/4
+ ]
+).
+
+-include("timed_cache_data.hrl").
+
+calc_new_loc (X, Y, [], _Points, _Map, _OtherChars) ->
+ {X, Y};
+calc_new_loc (X, Y, [Step|Path], Points, Map, OtherChars) ->
+ case Step of
+ <<"U">> -> calc_new_loc(X, (Y - 1), Path, Points, Map, OtherChars);
+ <<"D">> -> calc_new_loc(X, (Y + 1), Path, Points, Map, OtherChars);
+ <<"L">> -> calc_new_loc((X - 1), Y, Path, Points, Map, OtherChars);
+ <<"R">> -> calc_new_loc((X + 1), Y, Path, Points, Map, OtherChars);
+ _ -> calc_new_loc(X, Y, Path, Points, Map, OtherChars)
+ end.
+
+cross (Battlemap, CharInst, Path, OtherChars) ->
+ {X, Y} = character_instance:get_location(CharInst),
+ {ok, calc_new_loc(X, Y, Path, 99, Battlemap, OtherChars)}.
diff --git a/src/battlemap_instance.erl b/src/battlemap_instance.erl
new file mode 100644
index 0000000..ef573eb
--- /dev/null
+++ b/src/battlemap_instance.erl
@@ -0,0 +1,33 @@
+-module(battlemap_instance).
+-export
+(
+ [
+ get_char_instances/1,
+ get_char_instance/2,
+ set_char_instance/3
+ ]
+).
+
+-include("timed_cache_data.hrl").
+
+get_char_instances (BattlemapInstance) ->
+ lists:map
+ (
+ fun ({_K, V}) -> V end,
+ dict:to_list(BattlemapInstance#battlemap_instance.chars)
+ ).
+
+get_char_instance (BattlemapInstance, CharInstID) ->
+ {ok, dict:fetch(CharInstID, BattlemapInstance#battlemap_instance.chars)}.
+
+set_char_instance (BattlemapInstance, CharInstID, CharInst) ->
+ BattlemapInstance#battlemap_instance
+ {
+ chars =
+ dict:store
+ (
+ CharInstID,
+ CharInst,
+ BattlemapInstance#battlemap_instance.chars
+ )
+ }.
diff --git a/src/character_instance.erl b/src/character_instance.erl
new file mode 100644
index 0000000..d8d7455
--- /dev/null
+++ b/src/character_instance.erl
@@ -0,0 +1,20 @@
+-module(character_instance).
+-export
+(
+ [
+ set_location/3,
+ get_location/1
+ ]
+).
+
+-include("timed_cache_data.hrl").
+
+set_location (CharInst, X, Y) ->
+ CharInst#character_instance
+ {
+ x = X,
+ y = Y
+ }.
+
+get_location (CharInst) ->
+ {CharInst#character_instance.x, CharInst#character_instance.y}.
diff --git a/src/database_shim.erl b/src/database_shim.erl
index 8b6cea4..0a46c00 100644
--- a/src/database_shim.erl
+++ b/src/database_shim.erl
@@ -3,7 +3,8 @@
(
[
generate_db/1,
- fetch/2
+ fetch/2,
+ commit/3
]
).
@@ -84,9 +85,13 @@ generate_db (Heir) ->
BattlemapInstance
).
-fetch (DB, Object_ID) ->
- io:format("~ndb_shim lookup: ~p.~n", [{DB, Object_ID}]),
- case ets:lookup(db_shim, {DB, Object_ID}) of
+fetch (DB, ObjectID) ->
+ io:format("~ndb_shim lookup: ~p.~n", [{DB, ObjectID}]),
+ case ets:lookup(db_shim, {DB, ObjectID}) of
[{_Key, Value}] -> {ok, Value};
[] -> nothing
end.
+
+commit (DB, ObjectID, Value) ->
+ add_to_db({DB, ObjectID}, Value),
+ timed_cache:invalidate(DB, ObjectID).