about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authorJakob Fries <jakob.fries@gmail.com>2007-06-01 12:02:27 +0000
committerJakob Fries <jakob.fries@gmail.com>2007-06-01 12:02:27 +0000
commit187134010dd73dda83a735859195c4a52276fef5 (patch)
treedecd4fa8731188a1681bb85d17b97b2b5aa02941 /src/engine
parent4e5fa4db0b325e1f0f3a0e07549e26b5ef77dc2f (diff)
downloadzcatch-187134010dd73dda83a735859195c4a52276fef5.tar.gz
zcatch-187134010dd73dda83a735859195c4a52276fef5.zip
config stuff
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/config.cpp45
-rw-r--r--src/engine/config.h2
2 files changed, 45 insertions, 2 deletions
diff --git a/src/engine/config.cpp b/src/engine/config.cpp
index f38be184..3db77e3a 100644
--- a/src/engine/config.cpp
+++ b/src/engine/config.cpp
@@ -1,10 +1,15 @@
 #include <baselib/system.h>
 
+#include <fstream>
+#include <iostream>
+
 #include <cstring>
 #include <cstdio>
 
 #include "config.h"
 
+using namespace std;
+
 configuration config;
 
 void config_reset()
@@ -21,15 +26,53 @@ void config_reset()
 void config_load(const char *filename)
 {
 	dbg_msg("config/load", "loading %s", filename);
+
+	ifstream file(filename);
+	string line;
+
+	if (file)
+	{
+		while (getline(file, line))
+		{
+			int eq_index = line.find_first_of('=');
+			if (eq_index != string::npos)
+			{
+				string variable = line.substr(0, eq_index);
+				string value = line.substr(eq_index + 1);
+
+    			#define MACRO_CONFIG_INT(name,def,min,max) { if (strcmp(#name, variable.c_str()) == 0) config_set_ ## name (&config, atoi(value.c_str())); }
+    			#define MACRO_CONFIG_STR(name,len,def) { if (strcmp(#name, variable.c_str()) == 0) { config_set_ ## name (&config, value.c_str()); cout << variable << '=' << value << endl; } }
+ 
+    			#include "config_variables.h" 
+ 
+    			#undef MACRO_CONFIG_INT 
+    			#undef MACRO_CONFIG_STR 
+			}
+		}
+
+		file.close();
+	}
 }
 
 void config_save(const char *filename)
 {
 	dbg_msg("config/save", "saving config to %s", filename);
+
+	ofstream file(filename);
+
+    #define MACRO_CONFIG_INT(name,def,min,max) { file << # name << '=' << config.name << endl; }
+    #define MACRO_CONFIG_STR(name,len,def) { file << # name << '=' << config.name << endl; }
+ 
+    #include "config_variables.h" 
+ 
+    #undef MACRO_CONFIG_INT 
+    #undef MACRO_CONFIG_STR 
+
+	file.close();
 }
 
 #define MACRO_CONFIG_INT(name,def,min,max) void config_set_ ## name (configuration *c, int val) { if (val < min) val = min; if (max != 0 && val > max) val = max; c->name = val; }
-#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (configuration *c, char *str) { strncpy(c->name, def, len-1); c->name[sizeof(c->name)-1] = 0; }
+#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (configuration *c, const char *str) { strncpy(c->name, str, len-1); c->name[sizeof(c->name)-1] = 0; cout << "config_str" << endl; }
 #include "config_variables.h"
 #undef MACRO_CONFIG_INT
 #undef MACRO_CONFIG_STR
diff --git a/src/engine/config.h b/src/engine/config.h
index 04140bf5..7cfe2ea5 100644
--- a/src/engine/config.h
+++ b/src/engine/config.h
@@ -17,7 +17,7 @@ void config_load(const char *filename);
 void config_save(const char *filename);
 
 #define MACRO_CONFIG_INT(name,def,min,max) void config_set_ ## name (configuration *c, int val);
-#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (configuration *c, char *str);
+#define MACRO_CONFIG_STR(name,len,def) void config_set_ ## name (configuration *c, const char *str);
 #include "config_variables.h"
 #undef MACRO_CONFIG_INT
 #undef MACRO_CONFIG_STR