From 583dfe90bd9ff99c9de67eeb8438f3b4e826c8a4 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Fri, 1 Dec 2017 13:23:53 +0100 Subject: Sends updated target state upon attack. --- src/query/character_turn.erl | 39 +++++++++++++++++++----- src/query/load_state.erl | 71 ++++++++++---------------------------------- 2 files changed, 47 insertions(+), 63 deletions(-) (limited to 'src/query') diff --git a/src/query/character_turn.erl b/src/query/character_turn.erl index 6bb3c0e..bee8bf3 100644 --- a/src/query/character_turn.erl +++ b/src/query/character_turn.erl @@ -49,7 +49,7 @@ parse_input (Req) -> database_shim:assert_session_is_valid(PlayerID, SessionToken), Target = case maps:get(<<"targets_id">>, JSONReqMap) of - [] -> ""; + [] -> <<"">>; [T] -> T end, #input @@ -186,6 +186,13 @@ handle_target (QueryState) -> ] ), true = (Dist =< AttackRange), + NewTargetCharInst = + character_instance:mod_health + ( + QueryState#query_state.target_char_inst, + character:get_max_health(QueryState#query_state.main_char), + -1 + ), %% TODO: test for (and handle) riposte. QueryState#query_state { @@ -194,14 +201,32 @@ handle_target (QueryState) -> ( QueryState#query_state.battlemap_inst, QueryState#query_state.input#input.target_id, - character_instance:mod_health + NewTargetCharInst + ), + target_char_inst = NewTargetCharInst + }. + +generate_reply (QueryState) -> + case QueryState#query_state.target_char_inst of + nothing -> [<<"okay">>]; + + CharInst -> + add_char:generate + ( + QueryState#query_state.target_char, + CharInst, ( - QueryState#query_state.target_char_inst, - character:get_max_health(QueryState#query_state.main_char), - -1 + battlemap_instance:can_play_char_instance + ( + QueryState#query_state.battlemap_inst, + QueryState#query_state.input#input.player_id, + QueryState#query_state.input#input.target_id + ) + and + (not character_instance:is_dead(CharInst)) ) ) - }. + end. handle (Req) -> %%%% Parse @@ -220,7 +245,7 @@ handle (Req) -> NQueryState#query_state.battlemap_inst ), %%%% Reply - jiffy:encode([[<<"okay">>]]). + jiffy:encode([generate_reply(NQueryState)]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/query/load_state.erl b/src/query/load_state.erl index d82c2c6..c738a4c 100644 --- a/src/query/load_state.erl +++ b/src/query/load_state.erl @@ -36,71 +36,30 @@ parse_input (Req) -> instance_id = maps:get(<<"instance_id">>, JSONReqMap) }. -generate_set_map (Battlemap) -> - jiffy:encode - ( - { - [ - {<<"width">>, battlemap:get_width(Battlemap)}, - {<<"height">>, battlemap:get_height(Battlemap)}, - {<<"content">>, battlemap:list_tiles(Battlemap)} - ] - } - ). - -generate_add_char (Char, CharInstance, BattlemapInstance, PlayerID) -> - {X, Y} = character_instance:get_location(CharInstance), - CharID = character:get_id(Char), - jiffy:encode - ( - { - [ - {<<"id">>, character:get_id(Char)}, - {<<"name">>, character:get_name(Char)}, - {<<"icon">>, character:get_icon(Char)}, - {<<"portrait">>, character:get_portrait(Char)}, - {<<"health">>, character_instance:get_current_health(CharInstance)}, - {<<"max_health">>, character:get_max_health(Char)}, - {<<"loc_x">>, X}, - {<<"loc_y">>, Y}, - {<<"team">>, character_instance:get_owner(CharInstance)}, - {<<"mov_pts">>, character:get_movement_points(Char)}, - {<<"atk_rg">>, character:get_attack_range(Char)}, - { - <<"enabled">>, - battlemap_instance:can_play_char_instance - ( - BattlemapInstance, - PlayerID, - CharID - ) - } - ] - } - ). - generate_reply (Battlemap, BattlemapInstance, Characters, PlayerID) -> jiffy:encode ( [ - [ - <<"set_map">>, - generate_set_map(Battlemap) - ] + set_map:generate(Battlemap) | lists:map ( - fun ({CharID, CharInstance}) -> - [ - <<"add_char">>, - generate_add_char + fun ({Char, CharInstance}) -> + add_char:generate + ( + Char, + CharInstance, ( - CharID, - CharInstance, - BattlemapInstance, - PlayerID + battlemap_instance:can_play_char_instance + ( + BattlemapInstance, + PlayerID, + character:get_id(Char) + ) + and + (not character_instance:is_dead(CharInstance)) ) - ] + ) end, Characters ) -- cgit v1.2.3-70-g09d2