#ifndef PKMNLIB_BATTLELIBRARY_HPP #define PKMNLIB_BATTLELIBRARY_HPP #include #include "../../Library/PokemonLibrary.hpp" #include "DamageLibrary.hpp" #include "ExperienceLibrary.hpp" #include "MiscLibrary.hpp" #include "ScriptResolver.hpp" #include "StatCalculator.hpp" namespace PkmnLib::Battling { class BattleLibrary final : public CreatureLib::Battling::BattleLibrary { public: BattleLibrary(Library::PokemonLibrary* non_null staticLib, StatCalculator* non_null statCalculator, DamageLibrary* non_null damageLibrary, PkmnLib::Battling::ExperienceLibrary* non_null experienceLibrary, ScriptResolver* non_null scriptResolver, PkmnLib::Battling::MiscLibrary* non_null 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 PkmnLib::Battling::ScriptResolver* non_null CreateScriptResolver(); }; } #endif // PKMNLIB_BATTLELIBRARY_HPP