Update to new Arbutils memory model.
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -6,11 +6,9 @@
|
||||
namespace PkmnLib::Library {
|
||||
class ItemLibrary final : public CreatureLib::Library::ItemLibrary {
|
||||
public:
|
||||
inline bool TryGet(const ArbUt::BasicStringView& name, ArbUt::BorrowedPtr<const Item>& item) const {
|
||||
auto v = item.As<const CreatureLib::Library::Item>();
|
||||
auto res = CreatureLib::Library::ItemLibrary::TryGet(name.GetHash(), v);
|
||||
item = v.ForceAs<const Item>();
|
||||
return res;
|
||||
inline std::optional<ArbUt::BorrowedPtr<const Item>> TryGet(const ArbUt::BasicStringView& name) const {
|
||||
auto res = CreatureLib::Library::ItemLibrary::TryGet(name.GetHash());
|
||||
return reinterpret_cast<const std::optional<ArbUt::BorrowedPtr<const Item>>&>(res);
|
||||
}
|
||||
|
||||
inline ArbUt::BorrowedPtr<const Item> Get(const ArbUt::BasicStringView& name) const {
|
||||
|
||||
@@ -12,11 +12,11 @@ namespace PkmnLib::Library {
|
||||
return Get(name);
|
||||
}
|
||||
|
||||
inline bool TryGet(const ArbUt::BasicStringView& name, ArbUt::BorrowedPtr<const MoveData>& move) const {
|
||||
auto v = move.As<const MoveData::AttackData>();
|
||||
auto res = CreatureLib::Library::AttackLibrary::TryGet(name, v);
|
||||
move = v.As<const MoveData>();
|
||||
return res;
|
||||
inline std::optional<ArbUt::BorrowedPtr<const MoveData>> TryGet(const ArbUt::BasicStringView& name) const {
|
||||
auto res = CreatureLib::Library::AttackLibrary::TryGet(name);
|
||||
if (!res.has_value())
|
||||
return {};
|
||||
return res.value().ForceAs<const MoveData>();
|
||||
}
|
||||
inline ArbUt::BorrowedPtr<const MoveData> Get(const ArbUt::BasicStringView& name) const {
|
||||
return CreatureLib::Library::AttackLibrary::Get(name).As<const MoveData>();
|
||||
|
||||
@@ -29,12 +29,12 @@ namespace PkmnLib::Library {
|
||||
|
||||
inline bool HasForme(const ArbUt::BasicStringView& key) const { return HasVariant(key); }
|
||||
|
||||
inline bool TryGetForme(const ArbUt::BasicStringView& key,
|
||||
ArbUt::BorrowedPtr<const PokemonForme>& forme) const {
|
||||
auto v = forme.As<const PokemonForme::SpeciesVariant>();
|
||||
auto res = TryGetVariant(key, v);
|
||||
forme = v.As<const PokemonForme>();
|
||||
return res;
|
||||
inline std::optional<ArbUt::BorrowedPtr<const PokemonForme>>
|
||||
TryGetForme(const ArbUt::BasicStringView& key) const {
|
||||
auto res = TryGetVariant(key);
|
||||
if (!res.has_value())
|
||||
return {};
|
||||
return res.value().As<const PokemonForme>();
|
||||
}
|
||||
|
||||
inline ArbUt::BorrowedPtr<const PokemonForme> GetForme(const ArbUt::BasicStringView& key) const {
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
#include "SpeciesLibrary.hpp"
|
||||
namespace PkmnLib::Library {
|
||||
ArbUt::BorrowedPtr<const PokemonSpecies>
|
||||
std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
|
||||
SpeciesLibrary::FindPreEvolution(const ArbUt::BorrowedPtr<const PokemonSpecies>& species) const noexcept {
|
||||
if (_preEvolutionCache.Has(species)) {
|
||||
return _preEvolutionCache[species];
|
||||
}
|
||||
for (auto& s : _values) {
|
||||
auto pkmn = (PokemonSpecies*)s.second.get();
|
||||
for (auto& evo : pkmn->GetEvolutions()) {
|
||||
for (const auto& s : _values) {
|
||||
auto* pkmn = (PokemonSpecies*)s.second.get();
|
||||
for (const auto& evo : pkmn->GetEvolutions()) {
|
||||
if (evo->GetNewSpecies() == species) {
|
||||
auto non_const = const_cast<SpeciesLibrary*>(this);
|
||||
auto* non_const = const_cast<SpeciesLibrary*>(this);
|
||||
non_const->_preEvolutionCache[species] = pkmn;
|
||||
return pkmn;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,12 +10,12 @@ namespace PkmnLib::Library {
|
||||
_preEvolutionCache;
|
||||
|
||||
public:
|
||||
inline bool TryGet(const ArbUt::BasicStringView& name,
|
||||
ArbUt::BorrowedPtr<const PokemonSpecies>& outSpecies) const {
|
||||
auto v = outSpecies.As<const PokemonSpecies::CreatureSpecies>();
|
||||
auto res = CreatureLib::Library::SpeciesLibrary::TryGet(name, v);
|
||||
outSpecies = v.As<const PokemonSpecies>();
|
||||
return res;
|
||||
inline std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
|
||||
TryGet(const ArbUt::BasicStringView& name) const {
|
||||
auto res = CreatureLib::Library::SpeciesLibrary::TryGet(name);
|
||||
if (!res.has_value())
|
||||
return {};
|
||||
return res.value().ForceAs<const PokemonSpecies>();
|
||||
}
|
||||
|
||||
inline ArbUt::BorrowedPtr<const PokemonSpecies> Get(const ArbUt::BasicStringView& name) const {
|
||||
@@ -26,7 +26,7 @@ namespace PkmnLib::Library {
|
||||
return Get(name);
|
||||
}
|
||||
|
||||
ArbUt::BorrowedPtr<const PokemonSpecies>
|
||||
std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
|
||||
FindPreEvolution(const ArbUt::BorrowedPtr<const PokemonSpecies>& species) const noexcept;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user