project_files/frontlib/model/map.c
changeset 7177 bf6cf4dd847a
child 7179 f84805e6df03
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/frontlib/model/map.c	Fri Jun 08 19:52:24 2012 +0200
@@ -0,0 +1,95 @@
+#include "map.h"
+
+#include "../ini/inihelper.h"
+#include "../util.h"
+#include "../logging.h"
+
+#include <stdlib.h>
+
+flib_map *flib_map_create_regular(const char *theme, int templateFilter) {
+	flib_map *result = NULL;
+	if(!theme) {
+		flib_log_e("null parameter in flib_map_create_regular");
+	} else {
+		flib_map *newmap = calloc(1, sizeof(flib_map));
+		if(newmap) {
+			newmap->mapgen = MAPGEN_REGULAR;
+			newmap->templateFilter = templateFilter;
+			newmap->theme = flib_strdupnull(theme);
+			if(newmap->theme) {
+				result = newmap;
+				newmap = NULL;
+			}
+		}
+		flib_map_destroy(newmap);
+	}
+	return result;
+}
+
+flib_map *flib_map_create_maze(const char *theme, int mazeSize) {
+	flib_map *result = NULL;
+	if(!theme) {
+		flib_log_e("null parameter in flib_map_create_maze");
+	} else {
+		flib_map *newmap = calloc(1, sizeof(flib_map));
+		if(newmap) {
+			newmap->mapgen = MAPGEN_MAZE;
+			newmap->mazeSize = mazeSize;
+			newmap->theme = flib_strdupnull(theme);
+			if(newmap->theme) {
+				result = newmap;
+				newmap = NULL;
+			}
+		}
+		flib_map_destroy(newmap);
+	}
+	return result;
+}
+
+flib_map *flib_map_create_named(const char *name) {
+	flib_map *result = NULL;
+	if(!name) {
+		flib_log_e("null parameter in flib_map_create_named");
+	} else {
+		flib_map *newmap = calloc(1, sizeof(flib_map));
+		if(newmap) {
+			newmap->mapgen = MAPGEN_NAMED;
+			newmap->name = flib_strdupnull(name);
+			if(newmap->name) {
+				result = newmap;
+				newmap = NULL;
+			}
+		}
+		flib_map_destroy(newmap);
+	}
+	return result;
+}
+
+flib_map *flib_map_create_drawn(const char *theme, const uint8_t *drawData, int drawDataSize) {
+	flib_map *result = NULL;
+	if(!theme || !drawData) {
+		flib_log_e("null parameter in flib_map_create_named");
+	} else {
+		flib_map *newmap = calloc(1, sizeof(flib_map));
+		if(newmap) {
+			newmap->mapgen = MAPGEN_DRAWN;
+			newmap->drawData = flib_bufdupnull(drawData, drawDataSize);
+			newmap->drawDataSize = drawDataSize;
+			if(newmap->drawData) {
+				result = newmap;
+				newmap = NULL;
+			}
+		}
+		flib_map_destroy(newmap);
+	}
+	return result;
+}
+
+void flib_map_destroy(flib_map *map) {
+	if(map) {
+		free(map->drawData);
+		free(map->name);
+		free(map->theme);
+		free(map);
+	}
+}