Use smart pointers for basic libraries.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-03-26 22:46:14 +01:00
parent b5894ea8f2
commit 214ff81992
10 changed files with 103 additions and 126 deletions

View File

@@ -1,6 +1,7 @@
#ifndef CREATURELIB_BATTLELIBRARY_HPP
#define CREATURELIB_BATTLELIBRARY_HPP
#include <memory>
#include "../../Library/DataLibrary.hpp"
#include "../ScriptHandling/ScriptResolver.hpp"
#include "BattleStatCalculator.hpp"
@@ -12,32 +13,45 @@ 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;
const std::unique_ptr<BattleStatCalculator> _statCalculator;
const std::unique_ptr<DamageLibrary> _damageLibrary = nullptr;
const std::unique_ptr<ExperienceLibrary> _experienceLibrary = nullptr;
const std::unique_ptr<ScriptResolver> _scriptResolver = nullptr;
const std::unique_ptr<MiscLibrary> _miscLibrary = nullptr;
public:
BattleLibrary(const Library::DataLibrary* staticLib, BattleStatCalculator* statCalculator,
DamageLibrary* damageLibrary, ExperienceLibrary* experienceLibrary,
ScriptResolver* scriptResolver, MiscLibrary* miscLibrary);
BattleLibrary(const Library::DataLibrary* staticLib, std::unique_ptr<BattleStatCalculator> statCalculator,
std::unique_ptr<DamageLibrary> damageLibrary,
std::unique_ptr<ExperienceLibrary> experienceLibrary,
std::unique_ptr<ScriptResolver> scriptResolver, std::unique_ptr<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 {
[[nodiscard]] const std::unique_ptr<const Library::LibrarySettings>& GetSettings() const noexcept {
return _staticLib->GetSettings();
}
[[nodiscard]] const std::unique_ptr<const Library::SpeciesLibrary>& GetSpeciesLibrary() const noexcept {
return _staticLib->GetSpeciesLibrary();
}
[[nodiscard]] const std::unique_ptr<const Library::ItemLibrary>& GetItemLibrary() const noexcept {
return _staticLib->GetItemLibrary();
}
[[nodiscard]] const std::unique_ptr<const Library::AttackLibrary>& GetAttackLibrary() const noexcept {
return _staticLib->GetAttackLibrary();
}
[[nodiscard]] const std::unique_ptr<const Library::TypeLibrary>& GetTypeLibrary() const noexcept {
return _staticLib->GetTypeLibrary();
}
[[nodiscard]] const std::unique_ptr<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]] const std::unique_ptr<BattleStatCalculator>& GetStatCalculator() const noexcept;
[[nodiscard]] const std::unique_ptr<DamageLibrary>& GetDamageLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<MiscLibrary>& GetMiscLibrary() const noexcept;
[[nodiscard]] const std::unique_ptr<ExperienceLibrary>& GetExperienceLibrary() const noexcept {
return _experienceLibrary;
}
[[nodiscard]] Script* LoadScript(ScriptCategory category, const ConstString& scriptName) const;
};