summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/battle/mechanic/btl_turn_actions_management.erl')
-rw-r--r-- | src/battle/mechanic/btl_turn_actions_management.erl | 75 |
1 files changed, 50 insertions, 25 deletions
diff --git a/src/battle/mechanic/btl_turn_actions_management.erl b/src/battle/mechanic/btl_turn_actions_management.erl index 41d9821..d3a84bd 100644 --- a/src/battle/mechanic/btl_turn_actions_management.erl +++ b/src/battle/mechanic/btl_turn_actions_management.erl @@ -22,31 +22,19 @@ ) -> btl_character_turn_update:type(). deactivate_character (Update) -> - Data = btl_character_turn_update:get_data(Update), - Character = btl_character_turn_data:get_character(Data), + {S0Update, Character} = btl_character_turn_update:get_character(Update), - DisabledCharacter = btl_character:set_is_active(false, Character), - UpdatedData = btl_character_turn_data:set_character(DisabledCharacter, Data), - FinalizedData = btl_character_turn_data:clean_battle(UpdatedData), + {UpdatedCharacter, CharacterAtaxiaUpdate} = + btl_character:ataxia_set_is_active(false, Character), - DBQuery = - ataxic:update_field + S1Update = + btl_character_turn_update:ataxia_set_character ( - btl_battle:get_characters_field(), - ataxic_sugar:update_orddict_element - ( - btl_character_turn_data:get_character_ix(Data), - ataxic:update_field - ( - btl_character:get_is_active_field(), - ataxic:constant(false) - ) - ) + UpdatedCharacter, + CharacterAtaxiaUpdate, + S0Update ), - S0Update = btl_character_turn_update:set_data(FinalizedData, Update), - S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update), - S1Update. -spec handle_action @@ -62,19 +50,56 @@ handle_action (BattleAction, Update) -> attack -> btl_turn_actions_attack:handle(BattleAction, Update) end. +-spec update_timeline + ( + btl_character_turn_update:type() + ) + -> btl_character_turn_update:type(). +update_timeline (Update) -> + NewTimelineElements = btl_character_turn_update:get_timeline(Update), + {S0Update, Battle} = btl_character_turn_update:get_battle(Update), + 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. + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec handle ( - btl_character_turn_data:type(), + btl_character_turn_update:type(), btl_character_turn_request:type() ) -> btl_character_turn_update:type(). -handle (Data, Request) -> +handle (Update, Request) -> Actions = btl_character_turn_request:get_actions(Request), - EmptyUpdate = btl_character_turn_update:new(Data), - PostActionsUpdate = lists:foldl(fun handle_action/2, EmptyUpdate, Actions), + S0Update = lists:foldl(fun handle_action/2, Update, Actions), + S1Update = deactivate_character(S0Update), + S2Update = update_timeline(S1Update), + S3Update = btl_turn_progression:handle(S2Update), - deactivate_character(PostActionsUpdate). + S3Update. |