| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle/query/btl_character_turn.erl')
| -rw-r--r-- | src/battle/query/btl_character_turn.erl | 93 | 
1 files changed, 85 insertions, 8 deletions
| diff --git a/src/battle/query/btl_character_turn.erl b/src/battle/query/btl_character_turn.erl index 2048391..1176355 100644 --- a/src/battle/query/btl_character_turn.erl +++ b/src/battle/query/btl_character_turn.erl @@ -60,7 +60,7 @@ fetch_data (Request) ->     ) -> 'ok'.  assert_user_is_current_player (Update, Request) ->     PlayerID = btl_character_turn_request:get_player_id(Request), -   {_SameUpdate, Battle} = btl_character_turn_update:get_battle(Update), +   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), @@ -76,8 +76,9 @@ assert_user_is_current_player (Update, Request) ->     ) -> 'ok'.  assert_user_owns_played_character (Update, Request) ->     PlayerID = btl_character_turn_request:get_player_id(Request), -   {_SameUpdateA, Battle} = btl_character_turn_update:get_battle(Update), -   {_SameUpdateB, Character} = btl_character_turn_update:get_character(Update), +   Battle = btl_character_turn_update:get_battle(Update), +   CharacterIX = btl_character_turn_update:get_character_ix(Update), +   Character = btl_battle:get_character(CharacterIX, Battle),     CharacterPlayerIX = btl_character:get_player_index(Character),     CharacterPlayer = btl_battle:get_player(CharacterPlayerIX, Battle),     CharacterPlayerID = btl_player:get_id(CharacterPlayer), @@ -88,7 +89,9 @@ assert_user_owns_played_character (Update, Request) ->  -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), +   Battle = btl_character_turn_update:get_battle(Update), +   CharacterIX = btl_character_turn_update:get_character_ix(Update), +   Character = btl_battle:get_character(CharacterIX, Battle),     true = btl_character:get_is_active(Character), @@ -138,7 +141,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), -   {_SameUpdate, Battle} = btl_character_turn_update:get_battle(Update), +   Battle = btl_character_turn_update:get_battle(Update),     shr_timed_cache:update     ( @@ -172,6 +175,72 @@ generate_reply (Update) ->     jiffy:encode([TurnResultReply]).  %%%% MAIN LOGIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec deactivate_character +   ( +      btl_character_turn_update:type() +   ) +   -> btl_character_turn_update:type(). +deactivate_character (S0Update) -> +   Battle = btl_character_turn_update:get_battle(S0Update), +   CharacterIX = btl_character_turn_update:get_character_ix(S0Update), +   Character = btl_battle:get_character(CharacterIX, Battle), + +   {UpdatedCharacter, CharacterAtaxiaUpdate} = +      btl_character:ataxia_set_is_active(false, Character), + +   {UpdatedBattle, BattleAtaxiaUpdate} = +      btl_battle:ataxia_set_character +      ( +         CharacterIX, +         UpdatedCharacter, +         CharacterAtaxiaUpdate, +         Battle +      ), + +   S1Update = +      btl_character_turn_update:ataxia_set_battle +      ( +         UpdatedBattle, +         BattleAtaxiaUpdate, +         S0Update +      ), + +   S1Update. + +-spec update_timeline +   ( +      btl_character_turn_update:type() +   ) +   -> btl_character_turn_update:type(). +update_timeline (S0Update) -> +   NewTimelineElements = btl_character_turn_update:get_timeline(S0Update), +   Battle = btl_character_turn_update:get_battle(S0Update), +   PlayerTurn = btl_battle:get_current_player_turn(Battle), +   PlayerIX = btl_player_turn:get_player_ix(PlayerTurn), +   Player = btl_battle:get_player(PlayerIX, Battle), + +   {UpdatedPlayer, PlayerAtaxiaUpdate} = +      btl_player:ataxia_add_to_timeline(NewTimelineElements, Player), + +   {UpdatedBattle, BattleAtaxiaUpdate} = +      btl_battle:ataxia_set_player +      ( +         PlayerIX, +         UpdatedPlayer, +         PlayerAtaxiaUpdate, +         Battle +      ), + +   S1Update = +      btl_character_turn_update:ataxia_set_battle +      ( +         UpdatedBattle, +         BattleAtaxiaUpdate, +         S0Update +      ), + +   S1Update. +  -spec handle (shr_query:type()) -> binary().  handle (Query) ->     Request = decode_request(Query), @@ -183,12 +252,20 @@ handle (Query) ->           S0Update = fetch_data(Request),           assert_user_permissions(S0Update, Request), -         S1Update = btl_turn_actions_management:handle(S0Update, Request), -         commit_update(S1Update, Request), +         S1Update = btl_actions_management:handle +         ( +            btl_character_turn_request:get_actions(Request), +            S0Update +         ), +         S2Update = deactivate_character(S1Update), +         S3Update = update_timeline(S2Update), +         S4Update = btl_turn_progression:handle(S3Update), + +         commit_update(S4Update, Request),           shr_security:unlock_queries(PlayerID), -         generate_reply(S1Update); +         generate_reply(S4Update);        error -> jiffy:encode([shr_disconnected:generate()])     end. | 


