Support turn queue return prematurely when a creature is recalled, and the ability to resume it later.

This commit is contained in:
2019-11-06 18:04:00 +01:00
parent f184572837
commit 5fc2bf564a
5 changed files with 52 additions and 21 deletions

View File

@@ -1,18 +1,23 @@
#include "TurnHandler.hpp"
#include "../Models/Battle.hpp"
#include "../Models/ExecutingAttack.hpp"
#include "../../Core/Exceptions/NotImplementedException.hpp"
void CreatureLib::Battling::TurnHandler::RunTurn(CreatureLib::Battling::ChoiceQueue &queue) {
using namespace CreatureLib::Battling;
void TurnHandler::RunTurn(Battle* battle, ChoiceQueue* queue) {
//HOOK: On Before Turn hook for all choices
while (queue.HasNext()){
auto item = queue.Dequeue();
while (queue->HasNext()){
if (!battle->HasRecalledSlots()){
return;
}
auto item = queue->Dequeue();
ExecuteChoice(item);
delete item;
}
queue->HasCompletedQueue = true;
}
void CreatureLib::Battling::TurnHandler::ExecuteChoice(const CreatureLib::Battling::BaseTurnChoice *choice) {
void TurnHandler::ExecuteChoice(const BaseTurnChoice *choice) {
if (choice == nullptr)
{
return;
@@ -47,7 +52,7 @@ void CreatureLib::Battling::TurnHandler::ExecuteChoice(const CreatureLib::Battli
}
}
void CreatureLib::Battling::TurnHandler::ExecuteAttackChoice(const CreatureLib::Battling::AttackTurnChoice *choice) {
void TurnHandler::ExecuteAttackChoice(const AttackTurnChoice *choice) {
//HOOK: Change attack
//HOOK: Prevent attack
@@ -71,9 +76,7 @@ void CreatureLib::Battling::TurnHandler::ExecuteAttackChoice(const CreatureLib::
}
}
void CreatureLib::Battling::TurnHandler::HandleAttackForTarget(CreatureLib::Battling::ExecutingAttack &attack,
CreatureLib::Battling::Creature *target,
CreatureLib::Battling::ExecutingAttack::TargetData &targetData) {
void TurnHandler::HandleAttackForTarget(ExecutingAttack &attack, Creature *target, ExecutingAttack::TargetData &targetData) {
//HOOK: Check if attack fails on target
//HOOK: Check if target is invulnerable