| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-16 21:53:38 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-16 21:53:38 +0100 | 
| commit | f4bd9fdf0e9555837d5c1306fb629372c9a4c0f1 (patch) | |
| tree | fadd79232d0b04ee7772c3915af516636738f678 | |
| parent | efaf3ee3f4b2478079c7b9dde8f9e879956a460f (diff) | |
Still pretty unsure what can and can't be done.
| -rw-r--r-- | src/battlemap.erl | 22 | ||||
| -rw-r--r-- | src/character.erl | 30 | ||||
| -rw-r--r-- | src/handler.erl | 1 | ||||
| -rw-r--r-- | src/timed_cache_data.hrl | 5 | ||||
| -rw-r--r-- | www/handler/battlemap/character_turn.yaws | 3 | ||||
| -rw-r--r-- | www/handler/battlemap/load_state.yaws | 99 | 
6 files changed, 78 insertions, 82 deletions
| diff --git a/src/battlemap.erl b/src/battlemap.erl deleted file mode 100644 index 4366852..0000000 --- a/src/battlemap.erl +++ /dev/null @@ -1,22 +0,0 @@ --module(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/character.erl b/src/character.erl deleted file mode 100644 index aa0d5f0..0000000 --- a/src/character.erl +++ /dev/null @@ -1,30 +0,0 @@ --module(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}, -            {<<"portrait">>, Portrait}, -            {<<"loc_x">>, X}, -            {<<"loc_y">>, Y}, -            {<<"team">>, Team}, -            {<<"mov_pts">>, MovementPoints}, -            {<<"atk_rg">>, AttackRange} -         ] -      } -   ). diff --git a/src/handler.erl b/src/handler.erl index 9270aa4..5f6ced4 100644 --- a/src/handler.erl +++ b/src/handler.erl @@ -6,7 +6,6 @@ start(_YawsParams) ->     gen_server:cast(Pid, {add, battlemap_db, none}),     gen_server:cast(Pid, {add, battlemap_instance_db, none}),     gen_server:cast(Pid, {add, character_db, none}), -   gen_server:cast(Pid, {add, character_instance_db, none}),     gen_server:cast(Pid, {add, character_turn_db, none}),     gen_server:cast(Pid, {add, player_data_db, none}),     ok. diff --git a/src/timed_cache_data.hrl b/src/timed_cache_data.hrl index b0d7ba6..e91be25 100644 --- a/src/timed_cache_data.hrl +++ b/src/timed_cache_data.hrl @@ -1,6 +1,9 @@ +%% TODO: add types.  -record(battlemap, {id, width, height, content, instances}).  -record(battlemap_instance, {id, chars, curr_player, rem_chars, last_turn}).  -record(character, {id, name, icon, portrait, mov_pts, atk_rg}). --record(character_instance, {id, x, y, team}).  -record(character_turn, {id, path, target}).  -record(player, {id, battlemaps, characters}). + +%% Not stored in its own timed cache. +-record(character_instance, {x, y, team}). diff --git a/www/handler/battlemap/character_turn.yaws b/www/handler/battlemap/character_turn.yaws index c42e26b..ffcf0f9 100644 --- a/www/handler/battlemap/character_turn.yaws +++ b/www/handler/battlemap/character_turn.yaws @@ -5,7 +5,8 @@ handle (Req) ->     UserToken = maps:get(<<"user_token">>, JSON_Req_Map),     io:format("~nCharacter Turn for ~p...", [UserToken]),  %%   ok = users_manager:ping(UserToken), -   jiffy:encode( +   jiffy:encode +   (        {           [              {<<"types">>, [<<"STATUS">>]}, diff --git a/www/handler/battlemap/load_state.yaws b/www/handler/battlemap/load_state.yaws index fb7cda6..a9be563 100644 --- a/www/handler/battlemap/load_state.yaws +++ b/www/handler/battlemap/load_state.yaws @@ -1,42 +1,87 @@  <erl> --record(input, {battlemap_id}). +-record(input, {battlemap_id, instance_id}).  parse_input (Req) ->     JSONReqMap = jiffy:decode(Req, [return_maps]), -   #input { -      battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap) +   #input +   { +      player_id = maps:get(<<"player_id">>, JSONReqMap), +      battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap), +      instance_id = maps:get(<<"instance_id">>, JSONReqMap)     }. -fetch_battlemap (Input) -> -   {Battlemap, CharList} = -      timed_cache:fetch( -         battlemap_db, -         Input#input.battlemap_id -      ), +generate_set_map (Battlemap) -> +   jiffy:encode +   ( +      { +         [ +            {<<"width">>, Battlemap#battlemap.width}, +            {<<"height">>, Battlemap#battlemap.height}, +            {<<"content">>, array:to_list(Battlemap#battlemap.content)} +         ] +      } +   ). -handle (Req) -> -   Input = parse_input(Req), -   io:format("~nLoading Battlemap ~p...~n", [Input#input.battlemap_id]), -%%   ok = users_manager:ping(UserToken), -   jiffy:encode( -      [ +generate_add_char (Char, CharInstance) -> +   jiffy:encode +   ( +      {           [ -            <<"set_map">>, -            battlemap:encode_in_json(Battlemap) +            {<<"id">>, Char#character.id}, +            {<<"name">>, Char#character.name}, +            {<<"icon">>, Char#character.icon}, +            {<<"portrait">>, Char#character.portrait}, +            {<<"loc_x">>, CharInstance#character_instance.x}, +            {<<"loc_y">>, CharInstance#character_instance.y}, +            {<<"team">>, CharInstance#character_instance.team}, +            {<<"mov_pts">>, Char#character.mov_pts}, +            {<<"atk_rg">>, Char#character.atk_rg}           ] -         | -         lists:map( -            fun (Char) -> -               [ -                  <<"add_char">>, -                  character:encode_in_json(Char) -               ] -            end, -            CharList -         ) +      } +   ). + +generate_reply (Battlemap, _BattlemapInstance, Characters) -> +   jiffy:encode +   ( +      [ +         <<"set_map">>, +         generate_set_map(Battlemap)        ] +      | +      lists:map +      ( +         fun ({CharID, CharInstance}) -> +            [ +               <<"add_char">>, +               generate_add_char(CharID, CharInstance) +            ] +         end, +         Characters +      )     ). +handle (Req) -> +   Input = parse_input(Req), +   Battlemap = timed_cache:fetch(battlemap_db, Input#input.battlemap_id), +   BattlemapInstance = +      timed_cache:fetch +      ( +         battlemap_instances_db, +         {Input#input.battlemap_id, Input#input.battlemap_instance_id} +      ), +   Characters = +      list:map +      ( +         fun ({CharID, CharInst}) -> +            { +               timed_cache:fetch(character_db, CharID), +               CharInst +            } +         end, +         dict:to_list(BattlemapInstance#battlemap_instance.chars) +      ), +   generate_reply(Battlemap, BattlemapInstance, Characters). +  out(A) ->     {        content, | 


