about summary refs log tree commit diff
path: root/src/engine/engine.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 09:11:32 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 09:11:32 +0000
commit711aa0db763e31bd7916ea31f5f3f934e4000ab8 (patch)
treee1686806f10c77b8fa3e8e0225d12e726de4e136 /src/engine/engine.c
parent4fcab5c8f1b2d4f8405d4ef86b69d2c916184929 (diff)
downloadzcatch-711aa0db763e31bd7916ea31f5f3f934e4000ab8.tar.gz
zcatch-711aa0db763e31bd7916ea31f5f3f934e4000ab8.zip
update, gui stuff, some engine stuff
Diffstat (limited to 'src/engine/engine.c')
-rw-r--r--src/engine/engine.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/engine/engine.c b/src/engine/engine.c
new file mode 100644
index 00000000..f3bee450
--- /dev/null
+++ b/src/engine/engine.c
@@ -0,0 +1,65 @@
+#include <string.h>
+#include <stdio.h>
+
+#include <engine/system.h>
+#include <engine/interface.h>
+#include <engine/config.h>
+
+static char application_save_path[512] = {0};
+
+const char *engine_savepath(const char *filename, char *buffer, int max)
+{
+	snprintf(buffer, max, "%s/%s", application_save_path, filename);
+	return buffer;
+}
+
+void engine_init(const char *appname, int argc, char **argv)
+{
+	/* init the network */
+	net_init();
+
+	/* create storage location */
+	{
+		char path[1024] = {0};
+		fs_storage_path(appname, application_save_path, sizeof(application_save_path));
+		if(fs_makedir(application_save_path) == 0)
+		{		
+			strcpy(path, application_save_path);
+			strcat(path, "/screenshots");
+			fs_makedir(path);
+		}
+	}
+	
+	/* reset the config */
+	config_reset();
+	
+	/* load the configuration */
+	{
+		int i;
+		const char *config_filename = "default.cfg";
+		char buf[1024];
+		for(i = 1; i < argc; i++)
+		{
+			if(argv[i][0] == '-' && argv[i][1] == 'f' && argv[i][2] == 0 && argc - i > 1)
+			{
+				config_filename = argv[i+1];
+				i++;
+			}
+		}
+
+		config_load(engine_savepath(config_filename, buf, sizeof(buf)));
+	}
+	
+	/* search arguments for overrides */
+	{
+		int i;
+		for(i = 1; i < argc; i++)
+			config_set(argv[i]);
+	}
+}
+
+void engine_writeconfig()
+{
+	char buf[1024];
+	config_save(engine_savepath("default.cfg", buf, sizeof(buf)));
+}