| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-10 13:03:11 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-10 13:03:11 +0100 | 
| commit | 5621bd5d513a2be44608f09f2b821e42387dd8f0 (patch) | |
| tree | 4fc3d35b7921c970effd2725a59d9820f9309421 /src | |
| parent | fde7249bb3b185f2447585e9406775f351133632 (diff) | |
Still have to create the ETS tables...
Diffstat (limited to 'src')
| -rw-r--r-- | src/battlemap_character.erl | 30 | ||||
| -rw-r--r-- | src/battlemap_load_state.erl | 26 | ||||
| -rw-r--r-- | src/shim_battlemap_character.erl | 2 | ||||
| -rw-r--r-- | src/shim_database.erl | 12 | ||||
| -rw-r--r-- | src/timed_cache_object.erl | 30 | 
5 files changed, 82 insertions, 18 deletions
| diff --git a/src/battlemap_character.erl b/src/battlemap_character.erl new file mode 100644 index 0000000..b831340 --- /dev/null +++ b/src/battlemap_character.erl @@ -0,0 +1,30 @@ +-module(battlemap_character). +-export([encode_in_json/1]). + +encode_in_json ( +   { +      ID, +      Name, +      Icon, +      Portrait, +      {X, Y}, +      Team, +      MovementPoints, +      AttackRange +   } +) -> +   jiffy:encode( +      { +         [ +            {<<"id">>, ID}, +            {<<"name">>, Name}, +            {<<"icon">>, Icon}, +            {<<"portait">>, Portrait}, +            {<<"loc_x">>, X}, +            {<<"loc_y">>, Y}, +            {<<"team">>, Team}, +            {<<"mov_pts">>, MovementPoints}, +            {<<"atk_rg">>, AttackRange} +         ] +      } +   ). diff --git a/src/battlemap_load_state.erl b/src/battlemap_load_state.erl index 3ebdd8b..e519886 100644 --- a/src/battlemap_load_state.erl +++ b/src/battlemap_load_state.erl @@ -10,16 +10,38 @@ 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), +   {Battlemap, CharList} = +      timed_cache_object:fetch( +         battlemaps_db, +         BattlemapID +      ),  %%   ok = users_manager:ping(UserToken),     jiffy:encode(        {           [ -            {<<"types">>, [<<"STATE">>]}, +            { +               <<"types">>, +               [ +                  <<"SET_MAP">>, +                  lists:map( +                     fun (_Char) -> +                        <<"ADD_CHAR">> +                     end, +                     CharList +                  ) +               ] +            },              {                 <<"data">>,                 [                    battlemap_battlemap:encode_to_json(Battlemap) +                  | +                  lists:map( +                     fun (Char) -> +                        battlemap_character:encode_in_json(Char) +                     end, +                     CharList +                  )                 ]              }           ] diff --git a/src/shim_battlemap_character.erl b/src/shim_battlemap_character.erl index f60566a..80e91b0 100644 --- a/src/shim_battlemap_character.erl +++ b/src/shim_battlemap_character.erl @@ -1,4 +1,4 @@ --module(shim_battlemap_battlemap). +-module(shim_battlemap_character).  -export(     [ diff --git a/src/shim_database.erl b/src/shim_database.erl new file mode 100644 index 0000000..237ff4d --- /dev/null +++ b/src/shim_database.erl @@ -0,0 +1,12 @@ +-module(shim_database). +-export([fetch/2]). + +fetch(battlemaps_db, _Object_ID) -> +   Width = (rand:uniform(54) + 10), +   Height = (rand:uniform(54) + 10), +   {ok, +      { +         shim_battlemap_battlemap:generate(Width, Height), +         shim_battlemap_character:generate(Width, Height) +      } +   }. diff --git a/src/timed_cache_object.erl b/src/timed_cache_object.erl index 1dd4b1a..80127d5 100644 --- a/src/timed_cache_object.erl +++ b/src/timed_cache_object.erl @@ -17,7 +17,7 @@  %%%% actual interface  -export(     [ -      fetch/3, +      fetch/2,        invalidate/2     ]  ). @@ -25,9 +25,9 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -add_to_cache (DB, ObjectID, Timeout) -> -   {ok, TimerPID} = gen_server:start(?MODULE, [{DB, ObjectID, Timeout}], []), -   Data = nothing, %% Do the actual NoSQL Fetch here. +add_to_cache (DB, ObjectID) -> +   {ok, TimerPID} = gen_server:start(?MODULE, [{DB, ObjectID}], []), +   {ok, Data} = shim_database:fetch(DB, ObjectID),     ets:insert(DB, {ObjectID, TimerPID, Data}),     Data. @@ -36,20 +36,20 @@ add_to_cache (DB, ObjectID, Timeout) ->  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%% gen_server -init ({DB, ObjectID, Timeout}) -> -   {ok, {DB, ObjectID, Timeout}}. +init ({DB, ObjectID}) -> +   {ok, {DB, ObjectID}}.  handle_call (invalidate, _, State) ->     {stop, normal, State}; -handle_call (ping, _, {DB, ObjectID, Timeout}) -> -   {noreply, {DB, ObjectID, Timeout}, Timeout}. +handle_call (ping, _, {DB, ObjectID}) -> +   {noreply, {DB, ObjectID}, timed_caches_manager:get_timeout(DB)}.  handle_cast (invalidate, State) ->     {stop, normal, State}; -handle_cast (ping, {DB, ObjectID, Timeout}) -> -   {noreply, {DB, ObjectID, Timeout}, Timeout}. +handle_cast (ping, {DB, ObjectID}) -> +   {noreply, {DB, ObjectID}, timed_caches_manager:get_timeout(DB)}. -terminate (_, {DB, ObjectID, _Timeout}) -> +terminate (_, {DB, ObjectID}) ->     ets:delete(DB, ObjectID).  code_change (_, State, _) -> @@ -60,13 +60,13 @@ format_status (_, [_, State]) ->  handle_info(timeout, State) ->     {stop, normal, State}; -handle_info(_, {DB, ObjectID, Timeout}) -> -   {noreply, {DB, ObjectID, Timeout}, Timeout}. +handle_info(_, {DB, ObjectID}) -> +   {noreply, {DB, ObjectID}, timed_caches_manager:get_timeout(DB)}.  %%%% interface -fetch (DB, ObjectID, Timeout) -> +fetch (DB, ObjectID) ->     case ets:lookup(DB, ObjectID) of -      [] -> add_to_cache(DB, ObjectID, Timeout); +      [] -> add_to_cache(DB, ObjectID);        [{_, TimerPID, Data}] ->           gen_server:cast(TimerPID, ping), | 


