summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/mechanic/btl_turn_actions_management.erl')
-rw-r--r--src/battle/mechanic/btl_turn_actions_management.erl75
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.