From ee69c8de8cae4cd7eee3b2a15168acccdeb58f53 Mon Sep 17 00:00:00 2001 From: Sara Date: Sun, 24 Sep 2023 23:40:38 +0200 Subject: [PATCH] removed xml code as prep for switching to ldtk for level editing --- src/tilemap.c | 79 +-------------------------------------------------- 1 file changed, 1 insertion(+), 78 deletions(-) diff --git a/src/tilemap.c b/src/tilemap.c index 8c6deec..c4e4489 100644 --- a/src/tilemap.c +++ b/src/tilemap.c @@ -2,92 +2,15 @@ #include "camera.h" #include "program.h" #include -#include #include #define XML(__str) (const xmlChar*)__str -static inline -void tilemap_get_size_from_xml(xmlNodePtr node, int* o_width, int* o_height) { - xmlChar* prop = xmlGetProp(node, XML("width")); - if(prop == NULL) { printf("Nu-uh\n"); return; } - *o_width = atoi((char*)prop); - - prop = xmlGetProp(node, XML("height")); - if(prop == NULL) { printf("Nu-uh\n"); return; } - *o_height = atoi((char*)prop); -} - -static inline -void tilemap_get_tiles_from_xml(xmlDoc* doc, xmlNodePtr node, int* out, int out_len) { - node = node->children; - while(xmlStrcmp(node->name, XML("data")) != 0 && node != NULL) { - node = node->next; - } - - if(node == NULL) { - memset(out, 0x0, out_len * sizeof(int)); - return; - } - - char buffer[5]; buffer[4] = '\0'; - char* buffer_writer = buffer; - int* out_writer = out; - xmlChar* str = xmlNodeGetContent(node); - xmlChar* reader = str; - - while(*reader != '\0') { - while(isspace(*reader)) - reader++; - if(*reader != ',' && *reader != '\0') { - *buffer_writer = (char)*reader; - ++buffer_writer; - } else { - *buffer_writer = '\0'; - buffer_writer = buffer; - *out_writer = atoi(buffer) - 1; - ++out_writer; - } - ++reader; - } -} - struct Tilemap tilemap_load(const char* tilemap_file) { struct Tilemap self = { - .dimensions = {1,1}, + .dimensions = {0,0}, .tiles = NULL }; - - xmlDocPtr doc = xmlParseFile(tilemap_file); - if(doc == NULL) { - printf("Failed to load tilemap file '%s'\n", tilemap_file); - self.dimensions.x = self.dimensions.y = 0; - return self; - } - - xmlNodePtr reader = xmlDocGetRootElement(doc); - if(reader == NULL) { - printf("Failed to find map node in tilemap '%s'\n", tilemap_file); - self.dimensions.x = self.dimensions.y = 0; - xmlFreeDoc(doc); - return self; - } - - reader = reader->children; - - do { - if(xmlStrcmp(reader->name, XML("layer")) == 0) { - tilemap_get_size_from_xml(reader, &self.dimensions.x, &self.dimensions.y); - printf("sizes: %d %d\n", self.dimensions.x, self.dimensions.y); - self.tiles = malloc(self.dimensions.x * self.dimensions.y * sizeof(int)); - printf("reading layer data\n"); - tilemap_get_tiles_from_xml(doc, reader, self.tiles, self.dimensions.x * self.dimensions.y); - } else if(xmlStrcmp(reader->name, XML("objectgroup"))) { - } - reader = reader->next; - } while(reader != NULL); - - xmlFreeDoc(doc); return self; }