summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-08-29 16:24:10 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-08-29 16:24:10 +0200
commit9ffa08c3aad8e4f40b7f7d1e7845e5153f9c34ab (patch)
tree363619618b680e59ab76efa8e7db92bc57ca784a /src/battle/game-logic/btl_turn_actions_switch_weapon.erl
parent79b2d1dd4f114bc31105df0e554f9c1f18c87e5d (diff)
Still working on it...
Diffstat (limited to 'src/battle/game-logic/btl_turn_actions_switch_weapon.erl')
-rw-r--r--src/battle/game-logic/btl_turn_actions_switch_weapon.erl67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/battle/game-logic/btl_turn_actions_switch_weapon.erl b/src/battle/game-logic/btl_turn_actions_switch_weapon.erl
new file mode 100644
index 0000000..6872ff4
--- /dev/null
+++ b/src/battle/game-logic/btl_turn_actions_switch_weapon.erl
@@ -0,0 +1,67 @@
+-module(btl_turn_actions_switch_weapon).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ handle/1
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec handle
+ (
+ btl_character_turn_update:type()
+ )
+ -> 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),
+
+ {PrimaryWeaponID, SecondaryWeaponID} = btl_character:get_weapon_ids(Character),
+
+ 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:handle_max_health_changes
+ (
+ CharacterCurrentData,
+ S0Update
+ ),
+
+ TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX),
+
+ DBQuery =
+ shr_db_query:update_indexed
+ (
+ btl_battle:get_characters_field(),
+ CharacterIX,
+ [
+ shr_db_query:set_field
+ (
+ btl_character:get_weapons_field(),
+ UpdatedWeaponIDs
+ )
+ ]
+ ),
+
+ btl_character_turn_update:add_to_timeline(TimelineItem, DBQuery, S1Update).