#ifndef PKMNLIB_BATTLELIBRARY_HPP #define PKMNLIB_BATTLELIBRARY_HPP #include #include "../../Library/PokemonLibrary.hpp" #include "DamageLibrary.hpp" #include "MiscLibrary.hpp" #include "StatCalculator.hpp" namespace PkmnLib::Battling { class BattleLibrary : public CreatureLib::Battling::BattleLibrary { public: BattleLibrary(Library::PokemonLibrary* staticLib, StatCalculator* statCalculator, DamageLibrary* damageLibrary, CreatureLib::Battling::ExperienceLibrary* experienceLibrary, CreatureLib::Battling::ScriptResolver* scriptResolver, PkmnLib::Battling::MiscLibrary* miscLibrary) : CreatureLib::Battling::BattleLibrary(staticLib, statCalculator, damageLibrary, experienceLibrary, scriptResolver, miscLibrary) {} const Library::LibrarySettings* GetSettings() const { return static_cast(_staticLib->GetSettings()); } const Library::PokemonLibrary* GetStaticLib() const { return dynamic_cast(CreatureLib::Battling::BattleLibrary::_staticLib); } const Library::SpeciesLibrary* GetSpeciesLibrary() const { return dynamic_cast( CreatureLib::Battling::BattleLibrary::GetSpeciesLibrary()); } const Library::MoveLibrary* GetMoveLibrary() const { return dynamic_cast(CreatureLib::Battling::BattleLibrary::GetAttackLibrary()); } const Library::ItemLibrary* GetItemLibrary() const { return dynamic_cast(CreatureLib::Battling::BattleLibrary::GetItemLibrary()); } const Library::NatureLibrary* GetNatureLibrary() const { return GetStaticLib()->GetNatureLibrary(); } static CreatureLib::Battling::ScriptResolver* CreateScriptResolver(); }; } #endif // PKMNLIB_BATTLELIBRARY_HPP