Adds support for script owner to clone command.
continuous-integration/drone/push Build is failing Details

Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
This commit is contained in:
Deukhoofd 2021-10-29 21:55:49 +02:00
parent be7a5fe6bd
commit cb6725ab5e
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
8 changed files with 12 additions and 12 deletions

View File

@ -213,7 +213,7 @@ Battle* Battle::Clone() const {
battle->_hasEnded = _hasEnded;
battle->_battleResult = _battleResult;
battle->_currentTurn = _currentTurn;
_volatile.Clone(battle->_volatile);
_volatile.Clone(battle, battle->_volatile);
return battle;
}

View File

@ -131,7 +131,7 @@ bool BattleSide::SwapPositions(u8 a, u8 b) {
BattleSide* BattleSide::CloneWithoutCreatures(ArbUt::BorrowedPtr<Battle> battle) const {
auto* side = new BattleSide(_index, battle, _creaturesPerSide);
side->_choicesSet = _choicesSet;
_volatile.Clone(side->_volatile);
_volatile.Clone(side, side->_volatile);
side->_hasFled = _hasFled;
return side;
}

View File

@ -366,14 +366,14 @@ namespace CreatureLib::Battling {
c->_battleData.OnBattleField = _battleData.OnBattleField;
c->_battleData.Index = _battleData.Index;
if (_activeTalent != nullptr) {
c->_activeTalent = std::unique_ptr<BattleScript>(_activeTalent->Clone());
c->_activeTalent = std::unique_ptr<BattleScript>(_activeTalent->Clone(c));
}
c->_hasOverridenTalent = _hasOverridenTalent;
c->_overridenTalentName = _overridenTalentName;
if (_status != nullptr) {
c->_status = std::unique_ptr<BattleScript>(_status->Clone());
c->_status = std::unique_ptr<BattleScript>(_status->Clone(c));
}
_volatile.Clone(c->_volatile);
_volatile.Clone(c, c->_volatile);
c->_types = std::vector<u8>(_types);
c->RecalculateFlatStats();

View File

@ -15,14 +15,14 @@ namespace CreatureLib::Battling {
ArbUt::OptionalBorrowedPtr<void> _owner;
public:
BattleScript(ArbUt::OptionalBorrowedPtr<void> owner) { _owner = owner; };
BattleScript(const ArbUt::OptionalBorrowedPtr<void>& owner) { _owner = owner; };
NO_COPY_OR_MOVE(BattleScript);
inline ArbUt::OptionalBorrowedPtr<void> GetOwner() const noexcept { return _owner; }
virtual ~BattleScript() = default;
virtual BattleScript* Clone() = 0;
virtual BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>& owner) = 0;
virtual void Stack(){};
virtual void OnRemove(){};

View File

@ -15,9 +15,9 @@ namespace CreatureLib::Battling {
static constexpr size_t defaultCapacity = 8;
ScriptSet() : _scripts(defaultCapacity), _lookup(defaultCapacity){};
void Clone(ScriptSet& s) const {
void Clone(const ArbUt::OptionalBorrowedPtr<void>& owner, ScriptSet& s) const {
for (auto* script : _scripts) {
s.Add(script->Clone());
s.Add(script->Clone(owner));
}
}

View File

@ -18,7 +18,7 @@ public:
void TestMethod(int& runCount) { runCount++; }
BattleScript* Clone() override { return new TestScript(_name); }
BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>&) override { return new TestScript(_name); }
};
TEST_CASE("Script Aggregator properly iterates containing script.") {

View File

@ -15,7 +15,7 @@ public:
explicit TestScript(const ArbUt::StringView& name) : BattleScript(nullptr), _name(name){};
const ArbUt::StringView& GetName() const noexcept override { return _name; }
BattleScript* Clone() override { return new TestScript(_name); }
BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>&) override { return new TestScript(_name); }
};
TEST_CASE("Empty script set count == 0") {

View File

@ -15,7 +15,7 @@ public:
const ArbUt::StringView& GetName() const noexcept override { return _name; }
void TestMethod(int& runCount) { runCount++; }
BattleScript* Clone() override { return new TestScript(_name); }
BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>&) override { return new TestScript(_name); }
};
class ScriptSourceWithScriptPtr : public ScriptSource {