diff --git a/CInterface/Library/SpeciesVariant.cpp b/CInterface/Library/SpeciesVariant.cpp index f1ffff2..3ae74f3 100644 --- a/CInterface/Library/SpeciesVariant.cpp +++ b/CInterface/Library/SpeciesVariant.cpp @@ -46,6 +46,8 @@ SIMPLE_GET_FUNC(SpeciesVariant, GetSecretTalentCount, size_t); export uint8_t CreatureLib_SpeciesVariant_GetTalent(SpeciesVariant* p, bool secret, uint8_t index) { return p->GetTalent(TalentIndex(secret, index)); } -SIMPLE_GET_FUNC(SpeciesVariant, GetLearnableAttacks, const LearnableAttacks*); +export const LearnableAttacks* CreatureLib_SpeciesVariant_GetLearnableAttacks(SpeciesVariant* p) { + return p->GetLearnableAttacks().get(); +} #undef SIMPLE_GET_FUNC diff --git a/src/Library/CreatureData/SpeciesVariant.cpp b/src/Library/CreatureData/SpeciesVariant.cpp index 4c9d546..4f71f3c 100644 --- a/src/Library/CreatureData/SpeciesVariant.cpp +++ b/src/Library/CreatureData/SpeciesVariant.cpp @@ -31,7 +31,8 @@ CreatureLib::Library::TalentIndex CreatureLib::Library::SpeciesVariant::GetRando return TalentIndex(false, rand->Get(_talents.Count())); } -const CreatureLib::Library::LearnableAttacks* CreatureLib::Library::SpeciesVariant::GetLearnableAttacks() const { +const std::unique_ptr& +CreatureLib::Library::SpeciesVariant::GetLearnableAttacks() const { return _attacks; } @@ -43,5 +44,3 @@ CreatureLib::Library::SpeciesVariant::SpeciesVariant(ConstString name, float hei : _name(std::move(name)), _height(height), _weight(weight), _baseExperience(baseExperience), _types(std::move(types)), _baseStatistics(baseStats), _talents(std::move(talents)), _secretTalents(std::move(secretTalents)), _attacks(attacks) {} - -CreatureLib::Library::SpeciesVariant::~SpeciesVariant() { delete _attacks; } \ No newline at end of file diff --git a/src/Library/CreatureData/SpeciesVariant.hpp b/src/Library/CreatureData/SpeciesVariant.hpp index 1742aed..288aea8 100644 --- a/src/Library/CreatureData/SpeciesVariant.hpp +++ b/src/Library/CreatureData/SpeciesVariant.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include "../StatisticSet.hpp" #include "CreatureMoves.hpp" @@ -27,14 +28,14 @@ namespace CreatureLib::Library { Library::StatisticSet _baseStatistics; List _talents; List _secretTalents; - const LearnableAttacks* _attacks; + std::unique_ptr _attacks; public: SpeciesVariant(ConstString name, float height, float weight, uint32_t baseExperience, List types, Library::StatisticSet baseStats, List talents, List secretTalents, const LearnableAttacks* attacks); - virtual ~SpeciesVariant(); + virtual ~SpeciesVariant() = default; inline const ConstString& GetName() const { return _name; } inline float GetHeight() const { return _height; } @@ -54,7 +55,7 @@ namespace CreatureLib::Library { } [[nodiscard]] const TalentIndex GetTalentIndex(const ConstString& talent) const; - [[nodiscard]] const LearnableAttacks* GetLearnableAttacks() const; + [[nodiscard]] const std::unique_ptr& GetLearnableAttacks() const; [[nodiscard]] TalentIndex GetRandomTalent(Arbutils::Random* rand) const; [[nodiscard]] inline const List& GetTalents() const { return _talents; } [[nodiscard]] inline const List& GetSecretTalents() const { return _secretTalents; }