summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-08-29 16:46:13 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-08-29 16:46:13 +0200
commite1c7e78b4b4db2f818226faf58efff82fbdfeeaa (patch)
tree40bcb27bcb157ac0301681ef365892a78efe904a /src/battle
parent9ffa08c3aad8e4f40b7f7d1e7845e5153f9c34ab (diff)
Updates TODOs, handles max health changes.
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/game-logic/btl_turn_actions_move.erl26
-rw-r--r--src/battle/game-logic/btl_victory.erl6
2 files changed, 20 insertions, 12 deletions
diff --git a/src/battle/game-logic/btl_turn_actions_move.erl b/src/battle/game-logic/btl_turn_actions_move.erl
index 5669b75..1485094 100644
--- a/src/battle/game-logic/btl_turn_actions_move.erl
+++ b/src/battle/game-logic/btl_turn_actions_move.erl
@@ -61,10 +61,9 @@ get_path_cost_and_destination (Data, Path) ->
)
-> 'ok'.
assert_character_can_move (Data, Cost) ->
- Character = btl_character_turn_data:get_character(Data),
- CharacterStatistics = btl_character:get_statistics(Character),
- CharacterMovementPoints =
- shr_statistics:get_movement_points(CharacterStatistics),
+ CharacterData = btl_character_turn_data:get_character_current_data(Data),
+ CharacterStats= btl_character_current_data:get_statistics(CharacterData),
+ CharacterMovementPoints = shr_statistics:get_movement_points(CharacterStats),
true = (Cost =< CharacterMovementPoints),
@@ -72,19 +71,24 @@ assert_character_can_move (Data, Cost) ->
-spec commit_move
(
+ btl_character_current_data:type(),
btl_character_turn_update:type(),
list(btl_direction:type()),
btl_location:type()
)
-> btl_character_turn_update:type().
-commit_move (Update, Path, NewLocation) ->
+commit_move (PreviousCurrentData, Update, Path, NewLocation) ->
Data = btl_character_turn_update:get_data(Update),
Character = btl_character_turn_data:get_character(Data),
CharacterIX = btl_character_turn_data:get_character_ix(Data),
UpdatedCharacter = btl_character:set_location(NewLocation, Character),
+ S0Data = btl_character_turn_data:set_character(UpdatedCharacter, Data),
+ S1Data = btl_character_turn_data:refresh_character_current_data(S0Data),
- UpdatedData = btl_character_turn_data:set_character(UpdatedCharacter, Data),
+ S0Update = btl_character_turn_update:set_data(S1Data, Update),
+ S1Update =
+ btl_turn_actions:handle_max_health_changes(PreviousCurrentData, S0Update),
TimelineItem =
btl_turn_result:new_character_moved(CharacterIX, Path, NewLocation),
@@ -103,15 +107,15 @@ commit_move (Update, Path, NewLocation) ->
]
),
- S0Update =
+ S2Update =
btl_character_turn_update:add_to_timeline
(
TimelineItem,
DBQuery,
- Update
+ S1Update
),
- btl_character_turn_update:set_data(UpdatedData, S0Update).
+ S2Update.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -124,9 +128,11 @@ commit_move (Update, Path, NewLocation) ->
-> btl_character_turn_update:type().
handle (BattleAction, Update) ->
Data = btl_character_turn_update:get_data(Update),
+ CharacterCurrentData =
+ btl_character_turn_data:get_character_current_data(Data),
Path = btl_battle_action:get_path(BattleAction),
{PathCost, NewLocation} = get_path_cost_and_destination(Data, Path),
assert_character_can_move(Data, PathCost),
- commit_move(Update, Path, NewLocation).
+ commit_move(CharacterCurrentData, Update, Path, NewLocation).
diff --git a/src/battle/game-logic/btl_victory.erl b/src/battle/game-logic/btl_victory.erl
index 5611302..116fdc3 100644
--- a/src/battle/game-logic/btl_victory.erl
+++ b/src/battle/game-logic/btl_victory.erl
@@ -69,7 +69,8 @@ handle_player_defeat (PlayerIX, Update) ->
Battle = btl_character_turn_data:get_battle(Data),
Characters = btl_battle:get_characters(Battle),
- %% FIXME: The controlled character might slip through.
+ %% FIXME [FUNCTION: battle][MEDIUM]: The controlled character might slip
+ %% through.
{UpdatedCharacters, ModifiedIXs} =
mark_players_characters_as_defeated(PlayerIX, Characters),
@@ -81,7 +82,8 @@ handle_player_defeat (PlayerIX, Update) ->
ModifiedIXs
),
- %% TODO: Battle.player[PlayerIX].is_active <- false
+ %% TODO [FUNCTION: battle][MEDIUM]: Battle.player[PlayerIX].is_active <-
+ %% false
UpdatedBattle = btl_battle:set_characters(UpdatedCharacters, Battle),
UpdatedData = btl_character_turn_data:set_battle(UpdatedBattle, Data),