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