PkmnLib/src/Library/Moves/MoveLibrary.hpp

28 lines
1.0 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 : public CreatureLib::Library::AttackLibrary {
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);
}
inline bool TryGet(const ArbUt::BasicStringView& name, ArbUt::BorrowedPtr<const MoveData>& move) const {
2020-05-27 15:26:25 +00:00
auto v = move.As<const MoveData::AttackData>();
auto res = CreatureLib::Library::AttackLibrary::TryGet(name, v);
move = v.As<const MoveData>();
return res;
}
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>();
}
2019-12-29 14:29:52 +00:00
};
}
#endif // PKMNLIB_MOVELIBRARY_HPP