about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/client.cpp2
-rw-r--r--src/engine/config/config.cpp32
-rw-r--r--src/engine/config/config.h24
-rw-r--r--src/engine/config/config_define.h8
4 files changed, 65 insertions, 1 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index 20ab0b39..3f765645 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -695,7 +695,7 @@ int main(int argc, char **argv)
 		{
 			// -n NAME
 			i++;
-			set_player_name(argv[i]);
+			set_player_name(&config, argv[i]);
 		}
 		else if(argv[i][0] == '-' && argv[i][1] == 'w' && argv[i][2] == 0)
 		{
diff --git a/src/engine/config/config.cpp b/src/engine/config/config.cpp
new file mode 100644
index 00000000..844158c1
--- /dev/null
+++ b/src/engine/config/config.cpp
@@ -0,0 +1,32 @@
+#include <baselib/system.h>
+
+#include <cstring>
+#include <cstdio>
+
+#include "config.h"
+
+configuration config;
+
+void config_reset()
+{
+    #define MACRO_CONFIG_INT(name,def,min,max) config.name = def;
+    #define MACRO_CONFIG_STR(name,len,def) strncpy(config.name, def, len);
+ 
+    #include "config_define.h" 
+ 
+    #undef MACRO_CONFIG_INT 
+    #undef MACRO_CONFIG_STR 
+
+	puts("woaaa");
+}
+
+void config_load(const char *filename)
+{
+	dbg_msg("config/load", "loading %s", filename);
+}
+
+#define MACRO_CONFIG_INT(name,def,min,max) void 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 set_ ## name (configuration *c, char *str) { strncpy(c->name, def, len-1); c->name[sizeof(c->name)-1] = 0; }
+#include "config_define.h"
+#undef MACRO_CONFIG_INT
+#undef MACRO_CONFIG_STR
diff --git a/src/engine/config/config.h b/src/engine/config/config.h
new file mode 100644
index 00000000..c1a356a5
--- /dev/null
+++ b/src/engine/config/config.h
@@ -0,0 +1,24 @@
+#ifndef _CONFIG_H
+#define _CONFIG_H
+
+struct configuration
+{ 
+    #define MACRO_CONFIG_INT(name,def,min,max) int name;
+    #define MACRO_CONFIG_STR(name,len,def) char name[len];
+    #include "config_define.h" 
+    #undef MACRO_CONFIG_INT 
+    #undef MACRO_CONFIG_STR 
+}; 
+
+extern configuration config;
+
+void config_reset();
+void config_load(const char *filename);
+
+#define MACRO_CONFIG_INT(name,def,min,max) void set_ ## name (configuration *c, int val);
+#define MACRO_CONFIG_STR(name,len,def) void set_ ## name (configuration *c, char *str);
+#include "config_define.h"
+#undef MACRO_CONFIG_INT
+#undef MACRO_CONFIG_STR
+
+#endif
diff --git a/src/engine/config/config_define.h b/src/engine/config/config_define.h
new file mode 100644
index 00000000..0b1fed7e
--- /dev/null
+++ b/src/engine/config/config_define.h
@@ -0,0 +1,8 @@
+MACRO_CONFIG_INT(screen_width, 800, 0, 0)
+MACRO_CONFIG_INT(screen_height, 600, 0, 0)
+MACRO_CONFIG_STR(player_name, 32, "nameless tee")
+MACRO_CONFIG_INT(key_move_left, 65, 32, 127)
+MACRO_CONFIG_INT(key_move_right, 68, 32, 127)
+MACRO_CONFIG_INT(key_jump, 32, 32, 127)
+MACRO_CONFIG_INT(key_fire, 33, 32, 127)
+MACRO_CONFIG_INT(key_hook, 34, 32, 127)