Renamed Target class to CreatureIndex
This commit is contained in:
parent
a8730d983f
commit
5d6ac316eb
|
@ -6,7 +6,7 @@
|
||||||
#include "../Library/BattleLibrary.hpp"
|
#include "../Library/BattleLibrary.hpp"
|
||||||
#include "../TurnChoices/BaseTurnChoice.hpp"
|
#include "../TurnChoices/BaseTurnChoice.hpp"
|
||||||
#include "BattleSide.hpp"
|
#include "BattleSide.hpp"
|
||||||
#include "Target.hpp"
|
#include "CreatureIndex.hpp"
|
||||||
|
|
||||||
namespace CreatureLib::Battling {
|
namespace CreatureLib::Battling {
|
||||||
class Battle : public ScriptSource {
|
class Battle : public ScriptSource {
|
||||||
|
@ -33,7 +33,7 @@ namespace CreatureLib::Battling {
|
||||||
|
|
||||||
bool CreatureInField(const Creature* creature) const;
|
bool CreatureInField(const Creature* creature) const;
|
||||||
|
|
||||||
Creature* GetTarget(const Target& target) {
|
Creature* GetTarget(const CreatureIndex& target) {
|
||||||
return _sides[target.GetSideIndex()]->GetCreature(target.GetCreatureIndex());
|
return _sides[target.GetSideIndex()]->GetCreature(target.GetCreatureIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
#ifndef CREATURELIB_TARGET_HPP
|
#ifndef CREATURELIB_CREATUREINDEX_HPP
|
||||||
#define CREATURELIB_TARGET_HPP
|
#define CREATURELIB_CREATUREINDEX_HPP
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include "Creature.hpp"
|
#include "Creature.hpp"
|
||||||
|
|
||||||
namespace CreatureLib::Battling {
|
namespace CreatureLib::Battling {
|
||||||
class Target {
|
class CreatureIndex {
|
||||||
uint8_t _side;
|
uint8_t _side;
|
||||||
uint8_t _creature;
|
uint8_t _creature;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Target(uint8_t side, uint8_t creature) : _side(side), _creature(creature) {}
|
CreatureIndex(uint8_t side, uint8_t creature) : _side(side), _creature(creature) {}
|
||||||
|
|
||||||
uint8_t GetSideIndex() const { return _side; }
|
uint8_t GetSideIndex() const { return _side; }
|
||||||
|
|
||||||
|
@ -18,4 +18,4 @@ namespace CreatureLib::Battling {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // CREATURELIB_TARGET_HPP
|
#endif // CREATURELIB_CREATUREINDEX_HPP
|
|
@ -1,18 +1,18 @@
|
||||||
#ifndef CREATURELIB_ATTACKTURNCHOICE_HPP
|
#ifndef CREATURELIB_ATTACKTURNCHOICE_HPP
|
||||||
#define CREATURELIB_ATTACKTURNCHOICE_HPP
|
#define CREATURELIB_ATTACKTURNCHOICE_HPP
|
||||||
|
|
||||||
|
#include "../Models/CreatureIndex.hpp"
|
||||||
#include "../Models/LearnedAttack.hpp"
|
#include "../Models/LearnedAttack.hpp"
|
||||||
#include "../Models/Target.hpp"
|
|
||||||
#include "BaseTurnChoice.hpp"
|
#include "BaseTurnChoice.hpp"
|
||||||
|
|
||||||
namespace CreatureLib::Battling {
|
namespace CreatureLib::Battling {
|
||||||
class AttackTurnChoice : public BaseTurnChoice {
|
class AttackTurnChoice : public BaseTurnChoice {
|
||||||
LearnedAttack* _attack;
|
LearnedAttack* _attack;
|
||||||
Target _target;
|
CreatureIndex _target;
|
||||||
Script* _attackScript;
|
Script* _attackScript;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AttackTurnChoice(Creature* user, LearnedAttack* attack, const Target& target)
|
AttackTurnChoice(Creature* user, LearnedAttack* attack, const CreatureIndex& target)
|
||||||
: BaseTurnChoice(user), _attack(attack), _target(target) {}
|
: BaseTurnChoice(user), _attack(attack), _target(target) {}
|
||||||
|
|
||||||
inline LearnedAttack* GetAttack() const { return _attack; }
|
inline LearnedAttack* GetAttack() const { return _attack; }
|
||||||
|
@ -24,7 +24,7 @@ namespace CreatureLib::Battling {
|
||||||
return _attack->GetAttack()->GetPriority();
|
return _attack->GetAttack()->GetPriority();
|
||||||
}
|
}
|
||||||
|
|
||||||
const Target& GetTarget() const { return _target; }
|
const CreatureIndex& GetTarget() const { return _target; }
|
||||||
|
|
||||||
Script* GetAttackScript() { return _attackScript; }
|
Script* GetAttackScript() { return _attackScript; }
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ using namespace CreatureLib::Battling;
|
||||||
|
|
||||||
TEST_CASE("Turn ordering: Attack before pass", "[Battling]") {
|
TEST_CASE("Turn ordering: Attack before pass", "[Battling]") {
|
||||||
auto choice1 = new PassTurnChoice(nullptr);
|
auto choice1 = new PassTurnChoice(nullptr);
|
||||||
auto choice2 = new AttackTurnChoice(nullptr, nullptr, Target(0, 0));
|
auto choice2 = new AttackTurnChoice(nullptr, nullptr, CreatureIndex(0, 0));
|
||||||
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
||||||
auto rand = Core::Random();
|
auto rand = Core::Random();
|
||||||
TurnOrdering::OrderChoices(vec, rand);
|
TurnOrdering::OrderChoices(vec, rand);
|
||||||
|
@ -29,8 +29,8 @@ TEST_CASE("Turn ordering: High priority goes before no priority", "[Battling]")
|
||||||
auto l = GetLibrary()->GetAttackLibrary();
|
auto l = GetLibrary()->GetAttackLibrary();
|
||||||
auto a1 = new LearnedAttack(l->GetAttack("standard"), AttackLearnMethod::Unknown);
|
auto a1 = new LearnedAttack(l->GetAttack("standard"), AttackLearnMethod::Unknown);
|
||||||
auto a2 = new LearnedAttack(l->GetAttack("highPriority"), AttackLearnMethod::Unknown);
|
auto a2 = new LearnedAttack(l->GetAttack("highPriority"), AttackLearnMethod::Unknown);
|
||||||
auto choice1 = new AttackTurnChoice(nullptr, a1, Target(0, 0));
|
auto choice1 = new AttackTurnChoice(nullptr, a1, CreatureIndex(0, 0));
|
||||||
auto choice2 = new AttackTurnChoice(nullptr, a2, Target(0, 0));
|
auto choice2 = new AttackTurnChoice(nullptr, a2, CreatureIndex(0, 0));
|
||||||
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
||||||
auto rand = Core::Random();
|
auto rand = Core::Random();
|
||||||
TurnOrdering::OrderChoices(vec, rand);
|
TurnOrdering::OrderChoices(vec, rand);
|
||||||
|
@ -51,8 +51,8 @@ TEST_CASE("Turn ordering: Higher priority goes before high priority", "[Battling
|
||||||
auto l = GetLibrary()->GetAttackLibrary();
|
auto l = GetLibrary()->GetAttackLibrary();
|
||||||
auto a1 = new LearnedAttack(l->GetAttack("highPriority"), AttackLearnMethod::Unknown);
|
auto a1 = new LearnedAttack(l->GetAttack("highPriority"), AttackLearnMethod::Unknown);
|
||||||
auto a2 = new LearnedAttack(l->GetAttack("higherPriority"), AttackLearnMethod::Unknown);
|
auto a2 = new LearnedAttack(l->GetAttack("higherPriority"), AttackLearnMethod::Unknown);
|
||||||
auto choice1 = new AttackTurnChoice(nullptr, a1, Target(0, 0));
|
auto choice1 = new AttackTurnChoice(nullptr, a1, CreatureIndex(0, 0));
|
||||||
auto choice2 = new AttackTurnChoice(nullptr, a2, Target(0, 0));
|
auto choice2 = new AttackTurnChoice(nullptr, a2, CreatureIndex(0, 0));
|
||||||
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
||||||
auto rand = Core::Random();
|
auto rand = Core::Random();
|
||||||
TurnOrdering::OrderChoices(vec, rand);
|
TurnOrdering::OrderChoices(vec, rand);
|
||||||
|
@ -73,8 +73,8 @@ TEST_CASE("Turn ordering: High priority goes before low priority", "[Battling]")
|
||||||
auto l = GetLibrary()->GetAttackLibrary();
|
auto l = GetLibrary()->GetAttackLibrary();
|
||||||
auto a1 = new LearnedAttack(l->GetAttack("lowPriority"), AttackLearnMethod::Unknown);
|
auto a1 = new LearnedAttack(l->GetAttack("lowPriority"), AttackLearnMethod::Unknown);
|
||||||
auto a2 = new LearnedAttack(l->GetAttack("higherPriority"), AttackLearnMethod::Unknown);
|
auto a2 = new LearnedAttack(l->GetAttack("higherPriority"), AttackLearnMethod::Unknown);
|
||||||
auto choice1 = new AttackTurnChoice(nullptr, a1, Target(0, 0));
|
auto choice1 = new AttackTurnChoice(nullptr, a1, CreatureIndex(0, 0));
|
||||||
auto choice2 = new AttackTurnChoice(nullptr, a2, Target(0, 0));
|
auto choice2 = new AttackTurnChoice(nullptr, a2, CreatureIndex(0, 0));
|
||||||
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
||||||
auto rand = Core::Random();
|
auto rand = Core::Random();
|
||||||
TurnOrdering::OrderChoices(vec, rand);
|
TurnOrdering::OrderChoices(vec, rand);
|
||||||
|
@ -95,8 +95,8 @@ TEST_CASE("Turn ordering: No priority goes before low priority", "[Battling]") {
|
||||||
auto l = GetLibrary()->GetAttackLibrary();
|
auto l = GetLibrary()->GetAttackLibrary();
|
||||||
auto a1 = new LearnedAttack(l->GetAttack("lowPriority"), AttackLearnMethod::Unknown);
|
auto a1 = new LearnedAttack(l->GetAttack("lowPriority"), AttackLearnMethod::Unknown);
|
||||||
auto a2 = new LearnedAttack(l->GetAttack("standard"), AttackLearnMethod::Unknown);
|
auto a2 = new LearnedAttack(l->GetAttack("standard"), AttackLearnMethod::Unknown);
|
||||||
auto choice1 = new AttackTurnChoice(nullptr, a1, Target(0, 0));
|
auto choice1 = new AttackTurnChoice(nullptr, a1, CreatureIndex(0, 0));
|
||||||
auto choice2 = new AttackTurnChoice(nullptr, a2, Target(0, 0));
|
auto choice2 = new AttackTurnChoice(nullptr, a2, CreatureIndex(0, 0));
|
||||||
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
auto vec = std::vector<BaseTurnChoice*>{choice1, choice2};
|
||||||
auto rand = Core::Random();
|
auto rand = Core::Random();
|
||||||
TurnOrdering::OrderChoices(vec, rand);
|
TurnOrdering::OrderChoices(vec, rand);
|
||||||
|
|
Loading…
Reference in New Issue