summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'www/handler/battlemap')
-rw-r--r-- | www/handler/battlemap/character_turn.yaws | 93 | ||||
-rw-r--r-- | www/handler/battlemap/load_state.yaws | 8 |
2 files changed, 71 insertions, 30 deletions
diff --git a/www/handler/battlemap/character_turn.yaws b/www/handler/battlemap/character_turn.yaws index ffcf0f9..40540f6 100644 --- a/www/handler/battlemap/character_turn.yaws +++ b/www/handler/battlemap/character_turn.yaws @@ -1,34 +1,69 @@ <erl> +-record +( + input, + { + session_token, + player_id, + battlemap_id, + instance_id, + char_id, + path, + target_id + } +). + +-include("/tmp/timed_cache_data.hrl"). + +parse_input (Req) -> + JSONReqMap = jiffy:decode(Req, [return_maps]), + #input + { + session_token = maps:get(<<"session_token">>, JSONReqMap), + player_id = maps:get(<<"player_id">>, JSONReqMap), + battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap), + instance_id = maps:get(<<"instance_id">>, JSONReqMap), + path = maps:get(<<"path">>, JSONReqMap), + target_id = maps:get(<<"target_id">>, JSONReqMap) + }. + handle (Req) -> - io:format("~nReceived~p...", [Req]), - JSON_Req_Map = jiffy:decode(Req, [return_maps]), - UserToken = maps:get(<<"user_token">>, JSON_Req_Map), - io:format("~nCharacter Turn for ~p...", [UserToken]), -%% ok = users_manager:ping(UserToken), - jiffy:encode - ( - { - [ - {<<"types">>, [<<"STATUS">>]}, - { - <<"data">>, - [ - jiffy:encode - ( - { - [ - { - <<"status">>, - <<"OK">> - } - ] - } - ) - ] - } - ] - } - ). + %%%% Parse + Input = parse_input(Req), + %%%% Fetch + Battlemap = timed_cache:fetch(battlemap_db, Input#input.battlemap_id), + BattlemapInstance = + timed_cache:fetch + ( + battlemap_instance_db, + <<"0">> + ), + {ok, CharInst} = + battlemap_instance:get_char_instance + ( + BattlemapInstance, + Input#input.char_id + ), + %%%% Calc + {ok, {X, Y}} = + battlemap:cross + ( + Battlemap, + CharInst, + Input#input.path, + battlemap_instance:get_char_instances(BattlemapInstance) + ), + NewBattlemapInstance = + battlemap_instance:set_char_instance + ( + BattlemapInstance, + Input#input.char_id, + character_instance:set_location(CharInst, X, Y) + ), + %%%% Commit + database_shim:commit(battlemap_instance_db, <<"0">>, NewBattlemapInstance), + %%%% Reply + jiffy:encode([[<<"okay">>]]). out(A) -> { diff --git a/www/handler/battlemap/load_state.yaws b/www/handler/battlemap/load_state.yaws index b5a7fc7..d68c6a4 100644 --- a/www/handler/battlemap/load_state.yaws +++ b/www/handler/battlemap/load_state.yaws @@ -1,5 +1,5 @@ <erl> --record(input, {player_id, battlemap_id, instance_id}). +-record(input, {session_token, player_id, battlemap_id, instance_id}). -include("/tmp/timed_cache_data.hrl"). @@ -7,6 +7,7 @@ parse_input (Req) -> JSONReqMap = jiffy:decode(Req, [return_maps]), #input { + session_token = maps:get(<<"session_token">>, JSONReqMap), player_id = maps:get(<<"player_id">>, JSONReqMap), battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap), instance_id = maps:get(<<"instance_id">>, JSONReqMap) @@ -65,7 +66,9 @@ generate_reply (Battlemap, _BattlemapInstance, Characters) -> ). handle (Req) -> + %%%% Parse Input = parse_input(Req), + %%%% Fetch Battlemap = timed_cache:fetch(battlemap_db, Input#input.battlemap_id), BattlemapInstance = timed_cache:fetch @@ -85,6 +88,9 @@ handle (Req) -> end, dict:to_list(BattlemapInstance#battlemap_instance.chars) ), + %%%% Calc + %%%% Commit + %%%% Reply generate_reply(Battlemap, BattlemapInstance, Characters). out(A) -> |