CreatureLib/src/Battling/Library/BattleLibrary.hpp

49 lines
2.5 KiB
C++

#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:
std::unique_ptr<const Library::DataLibrary> _staticLib = nullptr;
std::unique_ptr<const BattleStatCalculator> _statCalculator = nullptr;
std::unique_ptr<const DamageLibrary> _damageLibrary = nullptr;
std::unique_ptr<const ExperienceLibrary> _experienceLibrary = nullptr;
std::unique_ptr<ScriptResolver> _scriptResolver = nullptr;
std::unique_ptr<const MiscLibrary> _miscLibrary = nullptr;
public:
BattleLibrary(const Library::DataLibrary* staticLib, BattleStatCalculator* statCalculator,
DamageLibrary* damageLibrary, ExperienceLibrary* experienceLibrary,
ScriptResolver* scriptResolver, MiscLibrary* miscLibrary);
~BattleLibrary() = default;
inline const std::unique_ptr<const Library::DataLibrary>& GetStaticLib() const noexcept { return _staticLib; }
[[nodiscard]] const std::unique_ptr<const Library::LibrarySettings>& GetSettings() const noexcept;
[[nodiscard]] const std::unique_ptr<const Library::SpeciesLibrary>& GetSpeciesLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const Library::ItemLibrary>& GetItemLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const Library::AttackLibrary>& GetAttackLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const Library::TypeLibrary>& GetTypeLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const Library::GrowthRateLibrary>& GetGrowthRateLibrary() const noexcept {
return _staticLib->GetGrowthRates();
}
[[nodiscard]] const std::unique_ptr<const BattleStatCalculator>& GetStatCalculator() const noexcept;
[[nodiscard]] const std::unique_ptr<const DamageLibrary>& GetDamageLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const MiscLibrary>& GetMiscLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<const ExperienceLibrary>& GetExperienceLibrary() const noexcept {
return _experienceLibrary;
}
[[nodiscard]] Script* LoadScript(ScriptCategory category, const ArbUt::BasicStringView& scriptName) const;
};
}
#endif // CREATURELIB_BATTLELIBRARY_HPP