57 lines
3.1 KiB
C++
57 lines
3.1 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* non_null staticLib, BattleStatCalculator* non_null statCalculator,
|
|
DamageLibrary* non_null damageLibrary, ExperienceLibrary* non_null experienceLibrary,
|
|
ScriptResolver* non_null scriptResolver, MiscLibrary* non_null 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]] const std::unique_ptr<ScriptResolver>& GetScriptResolver() const noexcept {
|
|
return _scriptResolver;
|
|
}
|
|
|
|
[[nodiscard]] ArbUt::OptionalUniquePtr<BattleScript> LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner,
|
|
ScriptCategory category,
|
|
const ArbUt::StringView& scriptName) const;
|
|
[[nodiscard]] ArbUt::OptionalUniquePtr<BattleScript>
|
|
LoadScriptByHash(const ArbUt::OptionalBorrowedPtr<void>& owner, ScriptCategory category,
|
|
u32 scriptNameHash) const;
|
|
};
|
|
}
|
|
|
|
#endif // CREATURELIB_BATTLELIBRARY_HPP
|