#ifndef PKMNLIB_POKEMONLIBRARY_HPP #define PKMNLIB_POKEMONLIBRARY_HPP #include #include "Items/ItemLibrary.hpp" #include "Moves/MoveLibrary.hpp" #include "Natures/NatureLibrary.hpp" #include "Species/SpeciesLibrary.hpp" namespace PkmnLib::Library { class PokemonLibrary : public CreatureLib::Library::DataLibrary { private: const NatureLibrary* _natures; public: ~PokemonLibrary() override { delete _natures; } PokemonLibrary(CreatureLib::Library::LibrarySettings settings, SpeciesLibrary* species, MoveLibrary* moves, ItemLibrary* items, CreatureLib::Library::GrowthRateLibrary* growthRates, CreatureLib::Library::TypeLibrary* typeLibrary, NatureLibrary* natures) : DataLibrary(settings, species, moves, items, growthRates, typeLibrary), _natures(natures) {} [[nodiscard]] const SpeciesLibrary* GetSpeciesLibrary() const { return (const SpeciesLibrary*)(CreatureLib::Library::DataLibrary::GetSpeciesLibrary()); } [[nodiscard]] const MoveLibrary* GetMoveLibrary() const { return (const MoveLibrary*)(CreatureLib::Library::DataLibrary::GetAttackLibrary()); } [[nodiscard]] const ItemLibrary* GetItemLibrary() const { return (const ItemLibrary*)(CreatureLib::Library::DataLibrary::GetItemLibrary()); } [[nodiscard]] const NatureLibrary* GetNatureLibrary() const { return _natures; } }; } #endif // PKMNLIB_POKEMONLIBRARY_HPP