| 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 | |
| parent | 90cdec82cf0c29d00c0c90fd0746ae4fa00d92f3 (diff) | |
Sends updated target state upon attack.
| -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)]. | 


