#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 "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; public: DataLibrary(LibrarySettings* settings, CreatureLib::Library::SpeciesLibrary* species, CreatureLib::Library::AttackLibrary* attacks, CreatureLib::Library::ItemLibrary* items, CreatureLib::Library::GrowthRateLibrary* growthRates, TypeLibrary* typeLibrary); virtual ~DataLibrary() {} [[nodiscard]] const std::unique_ptr& GetSettings() const noexcept { return _settings; } [[nodiscard]] const std::unique_ptr& GetSpeciesLibrary() const noexcept { return _species; } [[nodiscard]] const std::unique_ptr& GetAttackLibrary() const noexcept { return _attacks; } [[nodiscard]] const std::unique_ptr& GetItemLibrary() const noexcept { return _items; } [[nodiscard]] const std::unique_ptr& GetGrowthRates() const noexcept { return _growthRates; } [[nodiscard]] const std::unique_ptr& GetTypeLibrary() const noexcept { return _typeLibrary; } }; } #endif // CREATURELIB_DATALIBRARY_HPP