summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-01-23 18:43:13 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-01-23 18:43:13 +0100
commit14e79da8b8d45ef242aee34cf4376d220846f690 (patch)
treee263b48464dd95adae6fb37e25d121869c5e4b77 /src/battle/mechanic/btl_turn_actions.erl
parent366b7e737d74a79e035d6e1a40b041c015f89baa (diff)
Cleaning up a bit...
Diffstat (limited to 'src/battle/mechanic/btl_turn_actions.erl')
-rw-r--r--src/battle/mechanic/btl_turn_actions.erl83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/battle/mechanic/btl_turn_actions.erl b/src/battle/mechanic/btl_turn_actions.erl
new file mode 100644
index 0000000..d4a81fc
--- /dev/null
+++ b/src/battle/mechanic/btl_turn_actions.erl
@@ -0,0 +1,83 @@
+-module(btl_turn_actions).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ apply_requested_actions/2
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Move elsewhere
+
+%%%% TODO: move this elsewhere
+-spec finalize_character
+ (
+ btl_character_turn_update:type()
+ )
+ -> btl_character_turn_update:type().
+finalize_character (Update) ->
+ Data = btl_character_turn_update:get_data(Update),
+ Character = btl_character_turn_data:get_character(Data),
+
+ 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),
+
+ DBQuery =
+ ataxic:update_field
+ (
+ 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)
+ )
+ )
+ ),
+
+ S0Update = btl_character_turn_update:set_data(FinalizedData, Update),
+ S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update),
+
+ S1Update.
+
+-spec handle
+(
+ btl_battle_action:type(),
+ btl_character_turn_update:type()
+)
+-> btl_character_turn_update:type().
+handle (BattleAction, Update) ->
+ case btl_battle_action:get_category(BattleAction) of
+ move -> btl_turn_actions_move:handle(BattleAction, Update);
+ switch_weapon -> btl_turn_actions_switch_weapon:handle(Update);
+ attack -> btl_turn_actions_attack:handle(BattleAction, Update)
+ end.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec apply_requested_actions
+ (
+ btl_character_turn_data:type(),
+ btl_character_turn_request:type()
+ )
+ -> btl_character_turn_update:type().
+apply_requested_actions (Data, Request) ->
+ Actions = btl_character_turn_request:get_actions(Request),
+
+ EmptyUpdate = btl_character_turn_update:new(Data),
+ PostActionsUpdate = lists:foldl(fun handle/2, EmptyUpdate, Actions),
+
+ finalize_character(PostActionsUpdate).