summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-20 17:25:37 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-20 17:25:37 +0100 |
commit | b984be19b36226b02cb2d58d8597d2cff4be1eaf (patch) | |
tree | 96493a00a29ec934297acf073ee431bf6174f1e8 /src | |
parent | c3c8f24ebde2370d8314b1f0e571a26fbcff9450 (diff) |
Trying to get character turns to register.
Diffstat (limited to 'src')
-rw-r--r-- | src/battlemap.erl | 24 | ||||
-rw-r--r-- | src/battlemap_instance.erl | 33 | ||||
-rw-r--r-- | src/character_instance.erl | 20 | ||||
-rw-r--r-- | src/database_shim.erl | 13 |
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). |