| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-09 17:23:34 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-09 17:23:34 +0100 | 
| commit | fde7249bb3b185f2447585e9406775f351133632 (patch) | |
| tree | b9c6764dedc7a2352f2c2c44aaa8b3c973a124e2 /src | |
| parent | 4ae5a0668bb06afe89f758550a38392f54a6eb45 (diff) | |
Implementing a shim for battlemap state loading...
Diffstat (limited to 'src')
| -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. | 


