#ifndef PKMNLIB_BATTLELIBRARY_HPP #define PKMNLIB_BATTLELIBRARY_HPP #include #include "../../Library/PokemonLibrary.hpp" #include "DamageLibrary.hpp" #include "ExperienceLibrary.hpp" #include "MiscLibrary.hpp" #include "StatCalculator.hpp" namespace PkmnLib::Battling { class BattleLibrary final : public CreatureLib::Battling::BattleLibrary { public: BattleLibrary(Library::PokemonLibrary* staticLib, StatCalculator* statCalculator, DamageLibrary* damageLibrary, PkmnLib::Battling::ExperienceLibrary* experienceLibrary, CreatureLib::Battling::ScriptResolver* scriptResolver, PkmnLib::Battling::MiscLibrary* miscLibrary) : CreatureLib::Battling::BattleLibrary(staticLib, statCalculator, damageLibrary, experienceLibrary, scriptResolver, miscLibrary) {} const std::unique_ptr& GetSettings() const { return reinterpret_cast&>(_staticLib->GetSettings()); } const std::unique_ptr& GetStaticLib() const { return reinterpret_cast&>(_staticLib); } const std::unique_ptr& GetSpeciesLibrary() const { return reinterpret_cast&>( _staticLib->GetSpeciesLibrary()); } const std::unique_ptr& GetMoveLibrary() const { return reinterpret_cast&>(_staticLib->GetAttackLibrary()); } const std::unique_ptr& GetItemLibrary() const { return reinterpret_cast&>(_staticLib->GetItemLibrary()); } const ArbUt::BorrowedPtr GetNatureLibrary() const { return GetStaticLib()->GetNatureLibrary(); } static CreatureLib::Battling::ScriptResolver* CreateScriptResolver(); }; } #endif // PKMNLIB_BATTLELIBRARY_HPP