summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-04-25 17:26:34 +0200
committernsensfel <SpamShield0@noot-noot.org>2019-04-25 17:26:34 +0200
commitfa540d6d07e430789809435741e6cd1d98111c50 (patch)
tree890c376b5684593f972ec81cf8c4fbf9455b8342 /src/battle/query/btl_character_turn.erl
parent4fb024b4ee52ccbb9f25b17eaa606ce0b5e0296a (diff)
...
Diffstat (limited to 'src/battle/query/btl_character_turn.erl')
-rw-r--r--src/battle/query/btl_character_turn.erl115
1 files changed, 26 insertions, 89 deletions
diff --git a/src/battle/query/btl_character_turn.erl b/src/battle/query/btl_character_turn.erl
index b911ae9..455dd13 100644
--- a/src/battle/query/btl_character_turn.erl
+++ b/src/battle/query/btl_character_turn.erl
@@ -37,7 +37,7 @@ authenticate_user (Request) ->
(
btl_character_turn_request:type()
)
- -> btl_character_turn_data:type().
+ -> btl_character_turn_update:type().
fetch_data (Request) ->
PlayerID = btl_character_turn_request:get_player_id(Request),
BattleID = btl_character_turn_request:get_battle_id(Request),
@@ -50,17 +50,17 @@ fetch_data (Request) ->
BattleID
),
- btl_character_turn_data:new(Battle, CharacterIX).
+ btl_character_turn_update:new(Battle, CharacterIX).
%%%% ASSERTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec assert_user_is_current_player
(
- btl_character_turn_data:type(),
+ btl_character_turn_update:type(),
btl_character_turn_request:type()
) -> 'ok'.
-assert_user_is_current_player (Data, Request) ->
+assert_user_is_current_player (Update, Request) ->
PlayerID = btl_character_turn_request:get_player_id(Request),
- Battle = btl_character_turn_data:get_battle(Data),
+ {_SameUpdate, Battle} = btl_character_turn_update:get_battle(Update),
CurrentPlayerTurn = btl_battle:get_current_player_turn(Battle),
CurrentPlayerIX = btl_player_turn:get_player_ix(CurrentPlayerTurn),
CurrentPlayer = btl_battle:get_player(CurrentPlayerIX, Battle),
@@ -71,25 +71,24 @@ assert_user_is_current_player (Data, Request) ->
-spec assert_user_owns_played_character
(
- btl_character_turn_data:type(),
+ btl_character_turn_update:type(),
btl_character_turn_request:type()
) -> 'ok'.
-assert_user_owns_played_character (Data, Request) ->
+assert_user_owns_played_character (Update, Request) ->
PlayerID = btl_character_turn_request:get_player_id(Request),
- Battle = btl_character_turn_data:get_battle(Data),
- Players = btl_battle:get_players(Battle),
- Character = btl_character_turn_data:get_character(Data),
+ {_SameUpdateA, Battle} = btl_character_turn_update:get_battle(Update),
+ {_SameUpdateB, Character} = btl_character_turn_update:get_character(Update),
CharacterPlayerIX = btl_character:get_player_index(Character),
- CharacterPlayer = orddict:fetch(CharacterPlayerIX, Players),
+ CharacterPlayer = btl_battle:get_player(CharacterPlayerIX, Battle),
CharacterPlayerID = btl_player:get_id(CharacterPlayer),
true = (PlayerID == CharacterPlayerID),
ok.
--spec assert_character_can_be_played (btl_character_turn_data:type()) -> 'ok'.
-assert_character_can_be_played (Data) ->
- Character = btl_character_turn_data:get_character(Data),
+-spec assert_character_can_be_played (btl_character_turn_update:type()) -> 'ok'.
+assert_character_can_be_played (Update) ->
+ {_SameUpdate, Character} = btl_character_turn_update:get_character(Update),
true = btl_character:get_is_active(Character),
@@ -97,77 +96,16 @@ assert_character_can_be_played (Data) ->
-spec assert_user_permissions
(
- btl_character_turn_data:type(),
+ btl_character_turn_update:type(),
btl_character_turn_request:type()
) -> 'ok'.
-assert_user_permissions (Data, Request) ->
- assert_user_is_current_player(Data, Request),
- assert_user_owns_played_character(Data, Request),
- assert_character_can_be_played(Data),
+assert_user_permissions (Update, Request) ->
+ assert_user_is_current_player(Update, Request),
+ assert_user_owns_played_character(Update, Request),
+ assert_character_can_be_played(Update),
ok.
-%%%% QUERY LOGIC HANDLING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%% TODO: move this elsewhere
--spec update_timeline
- (
- btl_character_turn_update:type()
- )
- -> btl_character_turn_update:type().
-update_timeline (Update) ->
- NewTimelineElements = btl_character_turn_update:get_timeline(Update),
- Data = btl_character_turn_update:get_data(Update),
- Battle = btl_character_turn_data:get_battle(Data),
- PlayerTurn = btl_battle:get_current_player_turn(Battle),
- PlayerIX = btl_player_turn:get_player_ix(PlayerTurn),
- Player = btl_battle:get_player(PlayerIX, Battle),
-
- UpdatedPlayer = btl_player:add_to_timeline(NewTimelineElements, Player),
- UpdatedBattle = btl_battle:set_player(PlayerIX, UpdatedPlayer, Battle),
- UpdatedData = btl_character_turn_data:set_battle(UpdatedBattle, Data),
-
- DBQuery =
- ataxic:update_field
- (
- btl_battle:get_players_field(),
- ataxic_sugar:update_orddict_element
- (
- PlayerIX,
- ataxic:update_field
- (
- btl_player:get_timeline_field(),
- ataxic:apply_function
- (
- lists,
- append,
- [
- ataxic:constant(NewTimelineElements),
- ataxic:current_value()
- ]
- )
- )
- )
- ),
-
- S0Update = btl_character_turn_update:set_data(UpdatedData, Update),
- S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update),
-
- S1Update.
-
-
--spec update_data
- (
- btl_character_turn_data:type(),
- btl_character_turn_request:type()
- )
- -> btl_character_turn_update:type().
-update_data (Data, Request) ->
- PostActionsUpdate = btl_turn_actions:apply_requested_actions(Data, Request),
- PostCharacterTurnUpdate = update_timeline(PostActionsUpdate),
-
- btl_next_turn:update_if_needed(PostCharacterTurnUpdate).
-
%%%% DATABASE UPDATES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec send_to_database
(
@@ -178,14 +116,14 @@ update_data (Data, Request) ->
send_to_database (Update, Request) ->
PlayerID = btl_character_turn_request:get_player_id(Request),
BattleID = btl_character_turn_request:get_battle_id(Request),
- Ops = btl_character_turn_update:get_db(Update),
+ BattleAtaxicUpdate = btl_character_turn_update:get_battle_update(Update),
ok =
ataxia_client:update
(
battle_db,
ataxia_security:user_from_id(PlayerID),
- ataxic:update_value(ataxic:sequence(Ops)),
+ ataxic:update_value(ataxic:optimize(BattleAtaxicUpdate)),
BattleID
),
@@ -200,8 +138,7 @@ send_to_database (Update, Request) ->
send_to_cache (Update, Request) ->
PlayerID = btl_character_turn_request:get_player_id(Request),
BattleID = btl_character_turn_request:get_battle_id(Request),
- Data = btl_character_turn_update:get_data(Update),
- Battle = btl_character_turn_data:get_battle(Data),
+ {_SameUpdate, Battle} = btl_character_turn_update:get_battle(Update),
shr_timed_cache:update
(
@@ -244,14 +181,14 @@ handle (Query) ->
shr_security:lock_queries(PlayerID),
- Data = fetch_data(Request),
- assert_user_permissions(Data, Request),
- Update = update_data(Data, Request),
- commit_update(Update, Request),
+ S0Update = fetch_data(Request),
+ assert_user_permissions(S0Update, Request),
+ S1Update = btl_turn_actions:apply_requested_actions(S0Update, Request),
+ commit_update(S1Update, Request),
shr_security:unlock_queries(PlayerID),
- generate_reply(Update);
+ generate_reply(S1Update);
error -> jiffy:encode([shr_disconnected:generate()])
end.