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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |