summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-12-01 13:23:53 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-12-01 13:23:53 +0100 |
commit | 583dfe90bd9ff99c9de67eeb8438f3b4e826c8a4 (patch) | |
tree | f3813f0d63446f992a6bcc15b8369203120a172b /src | |
parent | 90cdec82cf0c29d00c0c90fd0746ae4fa00d92f3 (diff) |
Sends updated target state upon attack.
Diffstat (limited to 'src')
-rw-r--r-- | src/query/character_turn.erl | 39 | ||||
-rw-r--r-- | src/query/load_state.erl | 71 | ||||
-rw-r--r-- | src/reply/add_char.erl | 41 | ||||
-rw-r--r-- | src/reply/set_map.erl | 31 |
4 files changed, 119 insertions, 63 deletions
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 ) diff --git a/src/reply/add_char.erl b/src/reply/add_char.erl new file mode 100644 index 0000000..959c70f --- /dev/null +++ b/src/reply/add_char.erl @@ -0,0 +1,41 @@ +-module(add_char). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([generate/3]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +encode (Char, CharInstance, IsEnabled) -> + {X, Y} = character_instance:get_location(CharInstance), + 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">>, IsEnabled} + ] + } + ). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +generate (Char, CharInstance, IsEnabled) -> + [<<"add_char">>, encode(Char, CharInstance, IsEnabled)]. diff --git a/src/reply/set_map.erl b/src/reply/set_map.erl new file mode 100644 index 0000000..7def653 --- /dev/null +++ b/src/reply/set_map.erl @@ -0,0 +1,31 @@ +-module(set_map). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([generate/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +encode (Battlemap) -> + jiffy:encode + ( + { + [ + {<<"width">>, battlemap:get_width(Battlemap)}, + {<<"height">>, battlemap:get_height(Battlemap)}, + {<<"content">>, battlemap:list_tiles(Battlemap)} + ] + } + ). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +generate (Battlemap) -> + [<<"set_map">>, encode(Battlemap)]. |