summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/mechanic')
-rw-r--r--src/battle/mechanic/btl_turn_actions_management.erl75
-rw-r--r--src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl47
2 files changed, 67 insertions, 55 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.
diff --git a/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl b/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl
index 119dbe7..24b361a 100644
--- a/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl
+++ b/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl
@@ -26,43 +26,30 @@
)
-> btl_character_turn_update:type().
handle (Update) ->
- Data = btl_character_turn_update:get_data(Update),
- Character = btl_character_turn_data:get_character(Data),
- CharacterCurrentData =
- btl_character_turn_data:get_character_current_data(Data),
- CharacterIX = btl_character_turn_data:get_character_ix(Data),
+ {S0Update, Character} = btl_character_turn_update:get_character(Update),
+ CharacterIX = btl_character_turn_update:get_character_ix(S0Update),
+ BaseCharacter = btl_character:get_base_character(Character),
- {PrimaryWeaponID, SecondaryWeaponID} = btl_character:get_weapon_ids(Character),
+ {UpdatedBaseCharacter, BaseCharacterAtaxiaUpdate} =
+ shr_character:ataxia_switch_weapons(BaseCharacter),
- UpdatedWeaponIDs = {SecondaryWeaponID, PrimaryWeaponID},
- UpdatedCharacter = btl_character:set_weapon_ids(UpdatedWeaponIDs, Character),
-
- S0Data = btl_character_turn_data:set_character(UpdatedCharacter, Data),
- S1Data = btl_character_turn_data:refresh_character_current_data(S0Data),
-
- S0Update = btl_character_turn_update:set_data(S1Data, Update),
- S1Update =
- btl_turn_actions_stats_change:handle_max_health_changes
+ {UpdatedCharacter, CharacterAtaxiaUpdate} =
+ btl_character:ataxia_set_base_character
(
- CharacterCurrentData,
- S0Update
+ UpdatedBaseCharacter,
+ BaseCharacterAtaxiaUpdate,
+ Character
),
TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX),
- DBQuery =
- ataxic:update_field
+ S1Update = btl_character_turn_update:add_to_timeline(TimelineItem, S0Update),
+ S2Update =
+ btl_character_turn_update:ataxia_set_character
(
- btl_battle:get_characters_field(),
- ataxic_sugar:update_orddict_element
- (
- CharacterIX,
- ataxic:update_field
- (
- btl_character:get_weapons_field(),
- ataxic:constant(UpdatedWeaponIDs)
- )
- )
+ UpdatedCharacter,
+ CharacterAtaxiaUpdate,
+ S1Update
),
- btl_character_turn_update:add_to_timeline(TimelineItem, DBQuery, S1Update).
+ S2Update.