summaryrefslogtreecommitdiff
path: root/src/query
diff options
context:
space:
mode:
Diffstat (limited to 'src/query')
-rw-r--r--src/query/character_turn.erl39
-rw-r--r--src/query/load_state.erl71
2 files changed, 47 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
)