From aa356d74d75aca2256c7eb4a12156ffe02a63c67 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 24 Nov 2019 11:06:51 +0100 Subject: [PATCH] Set data for executing attacks. --- src/Battling/Flow/TurnHandler.cpp | 6 +++++- src/Battling/Models/ExecutingAttack.hpp | 10 ++++++++++ src/Battling/TurnChoices/AttackTurnChoice.hpp | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Battling/Flow/TurnHandler.cpp b/src/Battling/Flow/TurnHandler.cpp index 9e2c901..169be10 100644 --- a/src/Battling/Flow/TurnHandler.cpp +++ b/src/Battling/Flow/TurnHandler.cpp @@ -62,8 +62,12 @@ void TurnHandler::ExecuteAttackChoice(AttackTurnChoice *choice) { //TODO: Change attack } + // FIXME: Resolve all targets + auto target = choice->GetUser()->GetBattle()->GetTarget(choice->GetTarget()); + std::vector targets = {target}; + //TODO: Set ExecutingAttack data - auto attack = new ExecutingAttack(); + auto attack = new ExecutingAttack(targets, 1, choice->GetUser(), choice->GetAttack(), choice->GetAttackScript()); bool prevented = false; HOOK(PreventAttack, attack, attack, prevented); if (prevented){ diff --git a/src/Battling/Models/ExecutingAttack.hpp b/src/Battling/Models/ExecutingAttack.hpp index e61ee09..d871f9d 100644 --- a/src/Battling/Models/ExecutingAttack.hpp +++ b/src/Battling/Models/ExecutingAttack.hpp @@ -67,6 +67,16 @@ namespace CreatureLib::Battling { LearnedAttack* _attack; Script* _script; public: + ExecutingAttack(const std::vector& targets, uint8_t numberHits, Creature* user, LearnedAttack* attack, + Script* script) + : _user(user), _attack(attack), _script(script) + { + _targets.reserve(targets.size()); + for (auto target: targets){ + _targets.insert({target, TargetData(numberHits)}); + } + } + virtual ~ExecutingAttack() = default; TargetData& GetAttackDataForTarget(Creature* creature){ diff --git a/src/Battling/TurnChoices/AttackTurnChoice.hpp b/src/Battling/TurnChoices/AttackTurnChoice.hpp index b5dacfa..813e859 100644 --- a/src/Battling/TurnChoices/AttackTurnChoice.hpp +++ b/src/Battling/TurnChoices/AttackTurnChoice.hpp @@ -31,6 +31,10 @@ namespace CreatureLib::Battling{ return _target; } + Script* GetAttackScript(){ + return _attackScript; + } + protected: void GetActiveScripts(std::vector &scripts) override { scripts.emplace_back(&_attackScript);