Basic layout for turn execution

This commit is contained in:
Deukhoofd 2019-10-31 13:13:36 +01:00
parent 7da87956cf
commit ffba5fb24c
Signed by: Deukhoofd
GPG Key ID: ADF2E9256009EDCE
2 changed files with 23 additions and 0 deletions

View File

@ -1,5 +1,24 @@
#include "TurnHandler.hpp"
void CreatureLib::Battling::TurnHandler::RunTurn(CreatureLib::Battling::ChoiceQueue &queue) {
while (queue.HasNext()){
ExecuteChoice(queue.Dequeue());
}
}
void CreatureLib::Battling::TurnHandler::ExecuteChoice(const CreatureLib::Battling::BaseTurnChoice *choice) {
switch (choice->GetKind()){
case TurnChoiceKind::Pass: return;
case TurnChoiceKind::Attack:
return ExecuteAttackChoice(static_cast<const AttackTurnChoice*>(choice));
case TurnChoiceKind::Item:
case TurnChoiceKind::Switch:
case TurnChoiceKind::RunAway:
throw "Not implemented";
}
}
void CreatureLib::Battling::TurnHandler::ExecuteAttackChoice(const CreatureLib::Battling::AttackTurnChoice *choice) {
}

View File

@ -2,11 +2,15 @@
#define CREATURELIB_TURNHANDLER_HPP
#include "ChoiceQueue.hpp"
#include "../TurnChoices/AttackTurnChoice.hpp"
namespace CreatureLib::Battling {
class Battle;
class TurnHandler {
static void ExecuteChoice(const BaseTurnChoice* choice);
static void ExecuteAttackChoice(const AttackTurnChoice* choice);
public:
static void RunTurn(ChoiceQueue& queue);
};