diff --git a/include/ConfigLoader.h b/include/ConfigLoader.h index d92977e..6262f2b 100644 --- a/include/ConfigLoader.h +++ b/include/ConfigLoader.h @@ -4,16 +4,52 @@ using json = nlohmann::json; +/*! + * \class ConfigLoader + * \brief Enables configuration of specific engine variables via a custom JSON file. + * + * The Config loader is responsible to handling customization for engine parameters like the + * window icon, window title, ... through json files. + * + * It includes a standard config file and the option to add a custom one by overwriting the setConfigFilePath() + * function within the implementation of the \ref Game class. Those files get merged, with a priorization on + * the parameters set within the custom config file. + * + * + * The currently available config parameters with their default values are: + * \include ../config.json + * + */ + class ConfigLoader { public: ConfigLoader(); ~ConfigLoader(); + /*! + * \brief Creates the final config for the engine + * + * Loads the default config and then creates the final config by either merging + * (if the custom config has been set) or by implementing the standard config (if no custom + * config was set). + * + * \private + */ void init(); - + /*! + * \brief Sets the customConfigPath variable + * + * \param path optional variable that should include the path to the custom config JSON file + * + * \private + */ void setCustomConfig(const std::optional& path); - + /*! + * \brief Gets final configuration + * \return `json` variable containing the final config + * \private + */ json getFinalConfig(); private: diff --git a/include/Game.h b/include/Game.h index 84e3b8e..d4a8e8a 100644 --- a/include/Game.h +++ b/include/Game.h @@ -9,6 +9,15 @@ public: virtual void init() = 0; virtual void update(uint_fast16_t diffTime) = 0; + + /*! + * \brief Sets the path for a custom config file. + * + * Virtual function to be overwritten in the implementation to return the path of a custom config JSON file. + * \sa Layout of the config file is shown in ConfigLoader + * + * \return std::optional + */ virtual std::optional setConfigFilePath() {return std::nullopt;} GameInternal* gameInternal; //!< \deprecated diff --git a/src/ConfigLoader.cpp b/src/ConfigLoader.cpp index 7b244e4..9e9911c 100644 --- a/src/ConfigLoader.cpp +++ b/src/ConfigLoader.cpp @@ -8,7 +8,7 @@ ConfigLoader::~ConfigLoader() {} void ConfigLoader::init() { //TODO: look into adaptive paths for better handling as this requires the implemented game - // to have ./engine in the root folder + // to have ./engine in the root folder (very low prio) const json baseConfig = loadConfigFromJSON("./engine/config.json"); if (!customConfigPath.has_value()) {