From cf51ab71a25cbb60ebcf13edd4b7413c23264128 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 17 Mar 2022 15:53:45 +0100 Subject: input basics --- src/config/ConfigManager.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/config/ConfigManager.hpp (limited to 'src/config/ConfigManager.hpp') diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp new file mode 100644 index 00000000..5e58173a --- /dev/null +++ b/src/config/ConfigManager.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include +#include "../debug/Log.hpp" +#include +#include "../defines.hpp" +#include + +struct SConfigValue { + int64_t intValue = -1; + float floatValue = -1; + std::string strValue = ""; +}; + +class CConfigManager { +public: + CConfigManager(); + + void tick(); + + int getInt(std::string); + float getFloat(std::string); + std::string getString(std::string); + +private: + std::unordered_map configValues; + time_t lastModifyTime = 0; // for reloading the config if changed + + std::string currentCategory = ""; // For storing the category of the current item + + std::string parseError = ""; // For storing a parse error to display later + + bool isFirstLaunch = true; // For exec-once + + // internal methods + void loadConfigLoadVars(); + SConfigValue getConfigValueSafe(std::string); + void parseLine(std::string&); + void configSetValueSafe(const std::string&, const std::string&); + void handleRawExec(const std::string&, const std::string&); +}; + +inline std::unique_ptr g_pConfigManager; \ No newline at end of file -- cgit v1.2.3