PkmnLib/src/Library/Moves/MoveLibrary.hpp

38 lines
1.5 KiB
C++
Raw Normal View History

2019-12-29 14:29:52 +00:00
#ifndef PKMNLIB_MOVELIBRARY_HPP
#define PKMNLIB_MOVELIBRARY_HPP
#include <CreatureLib/Library/AttackLibrary.hpp>
#include "MoveData.hpp"
2019-12-29 14:29:52 +00:00
namespace PkmnLib::Library {
class MoveLibrary final : public CreatureLib::Library::AttackLibrary {
2019-12-29 14:29:52 +00:00
public:
MoveLibrary(size_t initialCapacity = 32) : CreatureLib::Library::AttackLibrary(initialCapacity) {}
2020-07-04 13:50:30 +00:00
virtual ArbUt::BorrowedPtr<const MoveData> operator[](const ArbUt::BasicStringView& name) const {
2020-05-27 15:26:25 +00:00
return Get(name);
}
2020-12-12 13:25:27 +00:00
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>();
}
2020-07-04 13:50:30 +00:00
inline ArbUt::BorrowedPtr<const MoveData> Get(const ArbUt::BasicStringView& name) const {
2020-05-27 15:26:25 +00:00
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>();
}
2019-12-29 14:29:52 +00:00
};
}
#endif // PKMNLIB_MOVELIBRARY_HPP