#ifndef PKMNLIB_MOVELIBRARY_HPP #define PKMNLIB_MOVELIBRARY_HPP #include #include "MoveData.hpp" namespace PkmnLib::Library { class MoveLibrary final : public CreatureLib::Library::AttackLibrary { public: MoveLibrary(size_t initialCapacity = 32) : CreatureLib::Library::AttackLibrary(initialCapacity) {} virtual ArbUt::BorrowedPtr operator[](const ArbUt::BasicStringView& name) const { return Get(name); } inline std::optional> TryGet(const ArbUt::BasicStringView& name) const { auto res = CreatureLib::Library::AttackLibrary::TryGet(name); if (!res.has_value()) return {}; return res.value().ForceAs(); } inline std::optional> TryGet(u32 hash) const { auto res = CreatureLib::Library::AttackLibrary::TryGet(hash); if (!res.has_value()) return {}; return res.value().ForceAs(); } inline ArbUt::BorrowedPtr Get(const ArbUt::BasicStringView& name) const { return CreatureLib::Library::AttackLibrary::Get(name).As(); } inline ArbUt::BorrowedPtr Get(u32 hash) const { return CreatureLib::Library::AttackLibrary::Get(hash).As(); } }; } #endif // PKMNLIB_MOVELIBRARY_HPP