diff --git a/CInterface/Library/LearnableAttacks.cpp b/CInterface/Library/LearnableAttacks.cpp index a81880c..2644990 100644 --- a/CInterface/Library/LearnableAttacks.cpp +++ b/CInterface/Library/LearnableAttacks.cpp @@ -13,7 +13,7 @@ export void CreatureLib_LearnableAttacks_AddLevelAttack(LearnableAttacks* p, uin } export const AttackData* const* CreatureLib_LearnableAttacks_GetAttacksForLevel(LearnableAttacks* p, uint8_t level) { - return p->GetAttacksForLevel(level).RawData(); + return reinterpret_cast(p->GetAttacksForLevel(level).RawData()); } export bool CreatureLib_LearnableAttacks_HasAttacksForLevel(LearnableAttacks* p, uint8_t level) { return p->HasAttacksForLevel(level); @@ -27,5 +27,5 @@ export size_t CreatureLib_LearnableAttacks_GetDistinctLevelAttacksCount(Learnabl } export const AttackData* const* CreatureLib_LearnableAttacks_GetDistinctLevelAttacks(LearnableAttacks* p) { - return p->GetDistinctLevelAttacks().RawData(); + return reinterpret_cast(p->GetDistinctLevelAttacks().RawData()); } \ No newline at end of file diff --git a/src/Library/CreatureData/LearnableAttacks.cpp b/src/Library/CreatureData/LearnableAttacks.cpp index 9d2e3e9..6016fe5 100644 --- a/src/Library/CreatureData/LearnableAttacks.cpp +++ b/src/Library/CreatureData/LearnableAttacks.cpp @@ -2,7 +2,7 @@ using namespace CreatureLib::Library; -void LearnableAttacks::AddLevelAttack(uint8_t level, const AttackData* attack) { +void LearnableAttacks::AddLevelAttack(uint8_t level, ArbUt::BorrowedPtr attack) { if (_learnedByLevel.Has(level)) { _learnedByLevel[level].Append(attack); } else { diff --git a/src/Library/CreatureData/LearnableAttacks.hpp b/src/Library/CreatureData/LearnableAttacks.hpp index 7e8dfc1..f6d47c8 100644 --- a/src/Library/CreatureData/LearnableAttacks.hpp +++ b/src/Library/CreatureData/LearnableAttacks.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include "../Attacks/AttackData.hpp" @@ -11,30 +12,31 @@ namespace CreatureLib::Library { class LearnableAttacks { protected: - ArbUt::Dictionary> _learnedByLevel; - ArbUt::List _distinctLevelAttacks; + ArbUt::Dictionary>> _learnedByLevel; + ArbUt::List> _distinctLevelAttacks; public: explicit LearnableAttacks(size_t levelAttackCapacity) - : _learnedByLevel(ArbUt::Dictionary>(levelAttackCapacity)) {} + : _learnedByLevel( + ArbUt::Dictionary>>(levelAttackCapacity)) {} virtual ~LearnableAttacks() = default; - void AddLevelAttack(uint8_t level, const AttackData* attack); + void AddLevelAttack(uint8_t level, ArbUt::BorrowedPtr attack); inline bool HasAttacksForLevel(uint8_t level) const noexcept { return _learnedByLevel.Has(level); } - inline const ArbUt::List& GetAttacksForLevel(uint8_t level) const { + inline const ArbUt::List>& GetAttacksForLevel(uint8_t level) const { if (!_learnedByLevel.Has(level)) { THROW_CREATURE("No attacks found for level " << (uint32_t)level << "."); } return _learnedByLevel.Get(level); } - inline const ArbUt::List& GetDistinctLevelAttacks() const noexcept { + inline const ArbUt::List>& GetDistinctLevelAttacks() const noexcept { return _distinctLevelAttacks; } - virtual const AttackData* GetRandomAttack(ArbUt::Random& rand) const { + virtual ArbUt::BorrowedPtr GetRandomAttack(ArbUt::Random& rand) const { if (_distinctLevelAttacks.Count() == 0) { return nullptr; }