#ifndef CREATURELIB_DATALIBRARY_HPP #define CREATURELIB_DATALIBRARY_HPP #include "AttackLibrary.hpp" #include "GrowthRates/GrowthRateLibrary.hpp" #include "ItemLibrary.hpp" #include "LibrarySettings.hpp" #include "SpeciesLibrary.hpp" #include "TalentLibrary.hpp" #include "TypeLibrary.hpp" namespace CreatureLib::Library { /*! \brief The core library. This library holds all static data for a creature set. */ class DataLibrary { private: std::unique_ptr _settings; std::unique_ptr _species; std::unique_ptr _attacks; std::unique_ptr _items; std::unique_ptr _growthRates; std::unique_ptr _typeLibrary; std::unique_ptr _talentLibrary; public: DataLibrary(LibrarySettings* non_null settings, CreatureLib::Library::SpeciesLibrary* non_null species, CreatureLib::Library::AttackLibrary* non_null attacks, CreatureLib::Library::ItemLibrary* non_null items, CreatureLib::Library::GrowthRateLibrary* non_null growthRates, TypeLibrary* non_null typeLibrary, TalentLibrary* non_null talentLibrary); virtual ~DataLibrary() {} [[nodiscard]] inline const std::unique_ptr& GetSettings() const noexcept { return _settings; } [[nodiscard]] inline const std::unique_ptr& GetSpeciesLibrary() const noexcept { return _species; } [[nodiscard]] inline const std::unique_ptr& GetAttackLibrary() const noexcept { return _attacks; } [[nodiscard]] inline const std::unique_ptr& GetItemLibrary() const noexcept { return _items; } [[nodiscard]] inline const std::unique_ptr& GetGrowthRates() const noexcept { return _growthRates; } [[nodiscard]] inline const std::unique_ptr& GetTypeLibrary() const noexcept { return _typeLibrary; } [[nodiscard]] inline const std::unique_ptr& GetTalentLibrary() const noexcept { return _talentLibrary; } }; } #endif // CREATURELIB_DATALIBRARY_HPP