summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | src/battlemap_battlemap.erl | 22 | ||||
-rw-r--r-- | src/battlemap_load_state.erl | 27 | ||||
-rw-r--r-- | src/shim_battlemap_character.erl | 30 | ||||
-rw-r--r-- | src/timed_caches_manager.erl | 48 |
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. |