#ifndef CREATURELIB_BATTLELIBRARY_HPP #define CREATURELIB_BATTLELIBRARY_HPP #include "../../Library/DataLibrary.hpp" #include "../ScriptHandling/ScriptResolver.hpp" #include "BattleStatCalculator.hpp" #include "DamageLibrary.hpp" #include "ExperienceLibrary.hpp" #include "MiscLibrary.hpp" namespace CreatureLib::Battling { class BattleLibrary { protected: const Library::DataLibrary* _staticLib = nullptr; BattleStatCalculator* _statCalculator = nullptr; DamageLibrary* _damageLibrary = nullptr; ExperienceLibrary* _experienceLibrary = nullptr; ScriptResolver* _scriptResolver = nullptr; MiscLibrary* _miscLibrary = nullptr; public: BattleLibrary(const Library::DataLibrary* staticLib, BattleStatCalculator* statCalculator, DamageLibrary* damageLibrary, ExperienceLibrary* experienceLibrary, ScriptResolver* scriptResolver, MiscLibrary* miscLibrary); ~BattleLibrary(); inline const Library::DataLibrary* GetStaticLib() const noexcept { return _staticLib; } [[nodiscard]] const Library::LibrarySettings* GetSettings() const noexcept; [[nodiscard]] const Library::SpeciesLibrary* GetSpeciesLibrary() const noexcept; [[nodiscard]] const Library::ItemLibrary* GetItemLibrary() const noexcept; [[nodiscard]] const Library::AttackLibrary* GetAttackLibrary() const noexcept; [[nodiscard]] const Library::TypeLibrary* GetTypeLibrary() const noexcept; [[nodiscard]] const Library::GrowthRateLibrary* GetGrowthRateLibrary() const noexcept { return _staticLib->GetGrowthRates(); } [[nodiscard]] const BattleStatCalculator* GetStatCalculator() const noexcept; [[nodiscard]] const DamageLibrary* GetDamageLibrary() const noexcept; [[nodiscard]] const MiscLibrary* GetMiscLibrary() const noexcept; [[nodiscard]] const ExperienceLibrary* GetExperienceLibrary() const noexcept { return _experienceLibrary; } [[nodiscard]] Script* LoadScript(ScriptCategory category, const Arbutils::CaseInsensitiveConstString& scriptName) const; }; } #endif // CREATURELIB_BATTLELIBRARY_HPP