From 7262ae9e8b085cc87607eedffda9944b49b40dcd Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Tue, 2 Jun 2020 18:02:37 +0200 Subject: [PATCH] Make ExecutingAttack use smart pointers. --- CInterface/Battling/ExecutingAttack.cpp | 2 +- src/Battling/Library/DamageLibrary.cpp | 2 +- src/Battling/Models/Creature.cpp | 2 +- src/Battling/Models/Creature.hpp | 8 +++++--- src/Battling/Models/ExecutingAttack.hpp | 15 +++++++-------- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CInterface/Battling/ExecutingAttack.cpp b/CInterface/Battling/ExecutingAttack.cpp index e68e141..746686e 100644 --- a/CInterface/Battling/ExecutingAttack.cpp +++ b/CInterface/Battling/ExecutingAttack.cpp @@ -21,7 +21,7 @@ export bool CreatureLib_ExecutingAttack_IsCreatureTarget(ExecutingAttack* p, Cre return p->IsCreatureTarget(target); } -export Creature* CreatureLib_ExecutingAttack_GetUser(ExecutingAttack* p) { return p->GetUser(); } +export Creature* CreatureLib_ExecutingAttack_GetUser(ExecutingAttack* p) { return p->GetUser().GetRaw(); } export LearnedAttack* CreatureLib_ExecutingAttack_GetAttack(ExecutingAttack* p) { return p->GetAttack().operator->(); } #define HITDATA_GET_FUNC(name, returnType) \ diff --git a/src/Battling/Library/DamageLibrary.cpp b/src/Battling/Library/DamageLibrary.cpp index 78e4927..69cf28c 100644 --- a/src/Battling/Library/DamageLibrary.cpp +++ b/src/Battling/Library/DamageLibrary.cpp @@ -30,7 +30,7 @@ float DamageLibrary::GetStatModifier(ExecutingAttack* attack, Creature* target, const ExecutingAttack::HitData& hitData) const { AssertNotNull(attack) AssertNotNull(target) - auto user = attack->GetUser(); + auto user = attack->GetUser().GetRaw(); AssertNotNull(user) HOOK(ChangeDamageStatsUser, attack, attack, target, hitIndex, &user); Library::Statistic offensiveStat; diff --git a/src/Battling/Models/Creature.cpp b/src/Battling/Models/Creature.cpp index 2d7e42c..69866ac 100644 --- a/src/Battling/Models/Creature.cpp +++ b/src/Battling/Models/Creature.cpp @@ -45,7 +45,7 @@ const ConstString& Battling::Creature::GetActiveTalent() const { return _variant->GetTalent(_talentIndex); } -void Battling::Creature::SetBattleData(ArbUt::BorrowedPtr battle, BattleSide* side) { +void Battling::Creature::SetBattleData(ArbUt::BorrowedPtr battle, ArbUt::BorrowedPtr side) { _battle = battle; _side = side; this->ResetActiveScripts(); diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index fd1bb50..19456d7 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -35,7 +35,7 @@ namespace CreatureLib::Battling { Library::Gender _gender; uint8_t _coloring; ArbUt::BorrowedPtr _heldItem; - uint32_t _currentHealth; + uint32_t _currentHealth = -1; Library::ClampedStatisticSet _statBoost; Library::StatisticSet _flatStats; @@ -99,7 +99,7 @@ namespace CreatureLib::Battling { inline uint32_t GetCurrentHealth() const noexcept { return _currentHealth; } - void SetBattleData(ArbUt::BorrowedPtr battle, BattleSide* side); + void SetBattleData(ArbUt::BorrowedPtr battle, ArbUt::BorrowedPtr side); const ArbUt::BorrowedPtr& GetBattle() const; const ArbUt::BorrowedPtr& GetBattleSide() const; void SetOnBattleField(bool value) { _onBattleField = value; } @@ -139,7 +139,9 @@ namespace CreatureLib::Battling { void SetDisplaySpecies(const ArbUt::BorrowedPtr& species) noexcept { _displaySpecies = species; } - void SetDisplayVariant(const Library::SpeciesVariant* variant) noexcept { _displayVariant = variant; }; + void SetDisplayVariant(ArbUt::BorrowedPtr variant) noexcept { + _displayVariant = variant; + }; inline bool AllowedExperienceGain() const noexcept { return _allowedExperienceGain; } inline void SetAllowedExperienceGain(bool allowed) noexcept { _allowedExperienceGain = allowed; } diff --git a/src/Battling/Models/ExecutingAttack.hpp b/src/Battling/Models/ExecutingAttack.hpp index 91f9370..d224203 100644 --- a/src/Battling/Models/ExecutingAttack.hpp +++ b/src/Battling/Models/ExecutingAttack.hpp @@ -38,16 +38,16 @@ namespace CreatureLib::Battling { private: ArbUt::List> _targets; uint8_t _numberHits; - HitData* _hits; - Creature* _user; + std::unique_ptr _hits; + ArbUt::BorrowedPtr _user; ArbUt::BorrowedPtr _attack; std::unique_ptr