summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-11-09 17:23:34 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-11-09 17:23:34 +0100
commitfde7249bb3b185f2447585e9406775f351133632 (patch)
treeb9c6764dedc7a2352f2c2c44aaa8b3c973a124e2
parent4ae5a0668bb06afe89f758550a38392f54a6eb45 (diff)
Implementing a shim for battlemap state loading...
-rw-r--r--src/battlemap_battlemap.erl22
-rw-r--r--src/battlemap_load_state.erl27
-rw-r--r--src/shim_battlemap_character.erl30
-rw-r--r--src/timed_caches_manager.erl48
4 files changed, 105 insertions, 22 deletions
diff --git a/src/battlemap_battlemap.erl b/src/battlemap_battlemap.erl
new file mode 100644
index 0000000..64cf10d
--- /dev/null
+++ b/src/battlemap_battlemap.erl
@@ -0,0 +1,22 @@
+-module(battlemap_battlemap).
+-export([encode_in_json/1]).
+
+encode_in_json (
+ {
+ Width,
+ Height,
+ Tiles
+ }
+) ->
+ jiffy:encode(
+ {
+ [
+ {<<"width">>, Width},
+ {<<"height">>, Height},
+ {
+ <<"content">>,
+ lists:map((fun ({ID, Cost}) -> [ID, Cost] end), Tiles)
+ }
+ ]
+ }
+ ).
diff --git a/src/battlemap_load_state.erl b/src/battlemap_load_state.erl
new file mode 100644
index 0000000..3ebdd8b
--- /dev/null
+++ b/src/battlemap_load_state.erl
@@ -0,0 +1,27 @@
+-module(battlemap_load_state).
+
+-export(
+ [
+ handle/1
+ ]
+).
+
+handle (Req) ->
+ JSONReqMap = jiffy:decode(Req, [return_maps]),
+ BattlemapID = maps:get(<<"battlemap_id">>, JSONReqMap),
+ io:format("~nLoading Battlemap ~p...", [BattlemapID]),
+ Battlemap = timed_cache_object:fetch(battlemaps_db, BattlemapID, 60000),
+%% ok = users_manager:ping(UserToken),
+ jiffy:encode(
+ {
+ [
+ {<<"types">>, [<<"STATE">>]},
+ {
+ <<"data">>,
+ [
+ battlemap_battlemap:encode_to_json(Battlemap)
+ ]
+ }
+ ]
+ }
+ ).
diff --git a/src/shim_battlemap_character.erl b/src/shim_battlemap_character.erl
index f347f08..f60566a 100644
--- a/src/shim_battlemap_character.erl
+++ b/src/shim_battlemap_character.erl
@@ -6,6 +6,32 @@
]
).
-generate_char (N, X, Y, Team, Mov, Atk) ->
+generate_char (N, X, Y, Team) ->
IDAsString = integer_to_list(N),
- {IDAsString, IDAsString, IDAsString, IDAsString, {X, Y}, Team, Mov, Atk}.
+ {
+ IDAsString, % ID
+ IDAsString, % Name
+ IDAsString, % Icon
+ IDAsString, % Portrait
+ {X, Y},
+ Team,
+ rand:uniform(10), % Movement Points
+ (rand:uniform(5) - 1) % Attack Range
+ }.
+
+generate (0, Result, _MaxX, _MaxY) ->
+ Result;
+generate (N, Prev, MaxX, MaxY) ->
+ [
+ generate_char
+ (
+ N,
+ (rand:uniform(MaxX) - 1),
+ (rand:uniform(MaxY) - 1),
+ (N rem 2)
+ )
+ | Prev
+ ].
+
+generate (MaxX, MaxY) ->
+ generate(rand:uniform(14) + 2, [], MaxX, MaxY).
diff --git a/src/timed_caches_manager.erl b/src/timed_caches_manager.erl
index a2c95f3..c1c1363 100644
--- a/src/timed_caches_manager.erl
+++ b/src/timed_caches_manager.erl
@@ -19,7 +19,8 @@
[
add_cache/3,
inherit_cache/3,
- delete_cache/2
+ delete_cache/2,
+ get_timeout/1
]
)
.
@@ -43,25 +44,6 @@ add_cache (DB, Heir) ->
]
).
-delete_cache (CacheList, DB) ->
- case lists:member(DB, CacheList) of
- true ->
- delete_cache(DB),
- lists:delete(DB, CacheList);
- false ->
- CacheList
- end.
-
-add_cache (CacheList, DB, Heir) ->
- case lists:member(DB, CacheList) of
- true ->
- ets:setopts(DB, {heir, Heir, DB}),
- CacheList;
-
- false ->
- add_cache(DB, Heir),
- [DB|CacheList]
- end.
inherit_cache (CacheList, DB, Heir) ->
case lists:member(DB, CacheList) of
@@ -113,3 +95,29 @@ format_status (_, [_, State]) ->
handle_info(_, State) ->
{noreply, State}.
+
+%%%% actual interface
+delete_cache (CacheList, DB) ->
+ case lists:member(DB, CacheList) of
+ true ->
+ delete_cache(DB),
+ lists:delete(DB, CacheList);
+ false ->
+ CacheList
+ end.
+
+add_cache (CacheList, DB, Heir) ->
+ case lists:member(DB, CacheList) of
+ true ->
+ ets:setopts(DB, {heir, Heir, DB}),
+ CacheList;
+
+ false ->
+ add_cache(DB, Heir),
+ [DB|CacheList]
+ end.
+
+get_timeout(battlemaps_db) ->
+ 60000;
+get_timeout(_) ->
+ 60000.