| 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 /www/handler/battlemap/load_state.yaws | |
| parent | efaf3ee3f4b2478079c7b9dde8f9e879956a460f (diff) | |
Still pretty unsure what can and can't be done.
Diffstat (limited to 'www/handler/battlemap/load_state.yaws')
| -rw-r--r-- | www/handler/battlemap/load_state.yaws | 99 | 
1 files changed, 72 insertions, 27 deletions
| 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, | 


