summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.erl29
-rw-r--r--src/battle/struct/btl_pending_battle.erl3
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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%