PkmnLib/src/Library/Moves/MoveLibrary.hpp

38 lines
1.5 KiB
C++

#ifndef PKMNLIB_MOVELIBRARY_HPP
#define PKMNLIB_MOVELIBRARY_HPP
#include <CreatureLib/Library/AttackLibrary.hpp>
#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<const MoveData> operator[](const ArbUt::BasicStringView& name) const {
return Get(name);
}
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 std::optional<ArbUt::BorrowedPtr<const MoveData>> TryGet(u32 hash) const {
auto res = CreatureLib::Library::AttackLibrary::TryGet(hash);
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>();
}
inline ArbUt::BorrowedPtr<const MoveData> Get(u32 hash) const {
return CreatureLib::Library::AttackLibrary::Get(hash).As<const MoveData>();
}
};
}
#endif // PKMNLIB_MOVELIBRARY_HPP