diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-17 15:53:45 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-17 16:19:10 +0100 |
| commit | cf51ab71a25cbb60ebcf13edd4b7413c23264128 (patch) | |
| tree | 18b649470346c8815a156b5599ee7be1c4135a79 /src/config/ConfigManager.hpp | |
| parent | 52090853dafb75dd99969a0cecdd291c109210f8 (diff) | |
input basics
Diffstat (limited to 'src/config/ConfigManager.hpp')
| -rw-r--r-- | src/config/ConfigManager.hpp | 43 |
1 files changed, 43 insertions, 0 deletions
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 <map> +#include "../debug/Log.hpp" +#include <unordered_map> +#include "../defines.hpp" +#include <vector> + +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<std::string, SConfigValue> 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<CConfigManager> g_pConfigManager;
\ No newline at end of file |
