From 878ede3080ab2cfb627aca505c397d9765052996 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Tue, 27 Oct 2009 14:38:53 +0000 Subject: major update with stuff --- src/engine/e_config.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/engine/e_config.cpp (limited to 'src/engine/e_config.cpp') diff --git a/src/engine/e_config.cpp b/src/engine/e_config.cpp new file mode 100644 index 00000000..67a4c81a --- /dev/null +++ b/src/engine/e_config.cpp @@ -0,0 +1,49 @@ +/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ + +#include +#include +#include + +#include +#include "e_if_other.h" +#include "e_config.h" +#include "e_linereader.h" +#include "e_engine.h" + +CONFIGURATION config; + +void config_reset() +{ + #define MACRO_CONFIG_INT(name,def,min,max,flags,desc) config.name = def; + #define MACRO_CONFIG_STR(name,len,def,flags,desc) str_copy(config.name, def, len); + + #include "e_config_variables.h" + + #undef MACRO_CONFIG_INT + #undef MACRO_CONFIG_STR +} + +void config_save() +{ + char linebuf[1024*2]; + + #define MACRO_CONFIG_INT(name,def,min,max,flags,desc) if((flags)&CFGFLAG_SAVE){ str_format(linebuf, sizeof(linebuf), "%s %i", #name, config.name); engine_config_write_line(linebuf); } + #define MACRO_CONFIG_STR(name,len,def,flags,desc) if((flags)&CFGFLAG_SAVE){ str_format(linebuf, sizeof(linebuf), "%s %s", #name, config.name); engine_config_write_line(linebuf); } + + #include "e_config_variables.h" + + #undef MACRO_CONFIG_INT + #undef MACRO_CONFIG_STR +} + +#define MACRO_CONFIG_INT(name,def,min,max,flags,desc) int config_get_ ## name (CONFIGURATION *c) { return c->name; } +#define MACRO_CONFIG_STR(name,len,def,flags,desc) const char *config_get_ ## name (CONFIGURATION *c) { return c->name; } +#include "e_config_variables.h" +#undef MACRO_CONFIG_INT +#undef MACRO_CONFIG_STR + +#define MACRO_CONFIG_INT(name,def,min,max,flags,desc) void config_set_ ## name (CONFIGURATION *c, int val) { if(min != max) { if (val < min) val = min; if (max != 0 && val > max) val = max; } c->name = val; } +#define MACRO_CONFIG_STR(name,len,def,flags,desc) void config_set_ ## name (CONFIGURATION *c, const char *str) { str_copy(c->name, str, len-1); c->name[sizeof(c->name)-1] = 0; } +#include "e_config_variables.h" +#undef MACRO_CONFIG_INT +#undef MACRO_CONFIG_STR -- cgit 1.4.1