| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-01-02 01:46:34 +0100 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-01-02 01:46:34 +0100 | 
| commit | 71c2f729208cecb039e2bd753a50b55c2788f2d0 (patch) | |
| tree | a0905159ccb3cce53419dbe48457951245af9559 /src/battle | |
| parent | a81ff643a823dde57ebd0ed5da8a91fb75d32267 (diff) | |
Bounties?
Somehow, Dialyzer does not see the type issues with
src/bounty/bnt_join_battle.erl, but there are btl_character and
rst_character mix-ups.
Diffstat (limited to 'src/battle')
| -rw-r--r-- | src/battle/query/btl_join.erl (renamed from src/battle/query/btl_join.erl.next) | 75 | ||||
| -rw-r--r-- | src/battle/reply/btl_add_portrait.erl | 29 | ||||
| -rw-r--r-- | src/battle/struct/btl_pending_battle.erl | 3 | 
3 files changed, 77 insertions, 30 deletions
| diff --git a/src/battle/query/btl_join.erl.next b/src/battle/query/btl_join.erl index 3ab7be8..a723a8b 100644 --- a/src/battle/query/btl_join.erl.next +++ b/src/battle/query/btl_join.erl @@ -16,20 +16,14 @@        mode :: mode(),        size :: non_neg_integer(),        roster_ixs :: list(non_neg_integer()), -      map_id :: string() +      map_id :: ataxia_id:type()     }  ). --record -( -   query_state, -   { -      battle :: btl_battle:type() -   } -).  -type input() :: #input{}. --type query_state() :: #query_state{}. +-type defend_query_state() :: 'ok'. +-type attack_query_state() :: 'ok'.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -48,7 +42,7 @@ parse_input (Req) ->     Mode =        case maps:get(<<"m">>, JSONReqMap) of           <<"a">> -> attack; -         <<"b">> -> defend; +         <<"d">> -> defend;           V -> {invalid, V}        end, @@ -87,13 +81,15 @@ authenticate_user (Input) ->        _ -> error     end. --spec handle_new_attack (input()) -> query_state(). -handle_new_attack (Input) -> -   PlayerID = <<"">>, +-spec handle_attack (input()) -> 'ok'. +handle_attack (Input) -> +   PlayerID = Input#input.player_id, +   SelectedCharacterIXs = Input#input.roster_ixs,     PlayerDBUser = ataxia_security:user_from_id(PlayerID), -   PartySize = 8, +   PartySize = length(SelectedCharacterIXs), -   AvailableBattle = +   % TODO: be less brutal if none is found. +   {ok, AvailablePendingBattle, _ID} =        ataxia_client:update_and_fetch_any        (           btl_pending, @@ -125,34 +121,53 @@ handle_new_attack (Input) ->           )        ), -   ... - +   bnt_join_battle:attempt +   ( +      PlayerID, +      SelectedCharacterIXs, +      AvailablePendingBattle +   ), --spec fetch_data (input()) -> query_state(). -fetch_data (Input) -> +   ok. +-spec handle_defend (input()) -> 'ok'. +handle_defend (Input) ->     PlayerID = Input#input.player_id, -   BattleID = Input#input.battle_id, +   SelectedCharacterIXs = Input#input.roster_ixs, +   MapID = Input#input.map_id, -   Battle = shr_timed_cache:fetch(battle_db, PlayerID, BattleID), +   bnt_join_battle:generate(PlayerID, MapID, SelectedCharacterIXs), -   #query_state -   { -      battle = Battle -   }. +   ok. + +-spec fetch_attack_data (input()) -> attack_query_state(). +fetch_attack_data (_Input) -> ok. % TODO +-spec fetch_defend_data (input()) -> defend_query_state(). +fetch_defend_data (_Input) -> ok. % TODO --spec generate_reply(query_state(), input()) -> binary(). -generate_reply (QueryState, Input) -> +-spec authorize_attack (attack_query_state(), input()) -> 'ok'. +authorize_attack (_QueryState, _Input) -> ok. % TODO -   Output. +-spec authorize_defend (defend_query_state(), input()) -> 'ok'. +authorize_defend (_QueryState, _Input) -> ok. % TODO  -spec handle (binary()) -> binary().  handle (Req) ->     Input = parse_input(Req),     case authenticate_user(Input) of        ok -> -         QueryState = fetch_data(Input), -         generate_reply(QueryState, Input); +         case Input#input.mode of +            attack -> +               QueryState = fetch_attack_data(Input), +               ok = authorize_attack(QueryState, Input), +               handle_attack(Input); + +            defend -> +               QueryState = fetch_defend_data(Input), +               ok = authorize_defend(QueryState, Input), +               handle_defend(Input) +         end, +         jiffy:encode([shr_okay:generate()]);        error -> jiffy:encode([shr_disconnected:generate()])     end. diff --git a/src/battle/reply/btl_add_portrait.erl b/src/battle/reply/btl_add_portrait.erl new file mode 100644 index 0000000..a634a04 --- /dev/null +++ b/src/battle/reply/btl_add_portrait.erl @@ -0,0 +1,29 @@ +-module(btl_add_portrait). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([generate/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec generate (shr_portrait:type()) -> {list(any())}. +generate (Portrait) -> +   { +      [ +         {<<"msg">>, <<"add_portrait">>}, +         {<<"id">>, shr_portrait:get_id(Portrait)}, +         {<<"nam">>, shr_portrait:get_name(Portrait)}, +         {<<"bid">>, shr_portrait:get_body_id(Portrait)}, +         {<<"iid">>, shr_portrait:get_icon_id(Portrait)} +      ] +   }. diff --git a/src/battle/struct/btl_pending_battle.erl b/src/battle/struct/btl_pending_battle.erl index 6e21f79..cecaeb5 100644 --- a/src/battle/struct/btl_pending_battle.erl +++ b/src/battle/struct/btl_pending_battle.erl @@ -18,6 +18,9 @@  -opaque type() :: #pending_battle{}.  -export_type([type/0, id/0]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 


