summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.hpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-17 15:53:45 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-17 16:19:10 +0100
commitcf51ab71a25cbb60ebcf13edd4b7413c23264128 (patch)
tree18b649470346c8815a156b5599ee7be1c4135a79 /src/config/ConfigManager.hpp
parent52090853dafb75dd99969a0cecdd291c109210f8 (diff)
input basics
Diffstat (limited to 'src/config/ConfigManager.hpp')
-rw-r--r--src/config/ConfigManager.hpp43
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