#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: const LibrarySettings* _settings; const SpeciesLibrary* _species; const AttackLibrary* _attacks; const ItemLibrary* _items; const GrowthRateLibrary* _growthRates; const TypeLibrary* _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() { delete _species; delete _attacks; delete _items; delete _growthRates; delete _typeLibrary; } [[nodiscard]] const LibrarySettings* GetSettings() const; [[nodiscard]] const SpeciesLibrary* GetSpeciesLibrary() const; [[nodiscard]] const AttackLibrary* GetAttackLibrary() const; [[nodiscard]] const ItemLibrary* GetItemLibrary() const; [[nodiscard]] const GrowthRateLibrary* GetGrowthRates() const; [[nodiscard]] const TypeLibrary* GetTypeLibrary() const; }; } #endif // CREATURELIB_DATALIBRARY_HPP