diff options
Diffstat (limited to 'src/tileset.c')
-rw-r--r-- | src/tileset.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/tileset.c b/src/tileset.c index 366c925..f63fa0a 100644 --- a/src/tileset.c +++ b/src/tileset.c @@ -293,6 +293,8 @@ _db_tsx_tileset_start(void *pv, const char *name, const char **attr) { XML_Parser p; struct db_tileset *tileset; + int tw; + int th; db_dbg(" <%s> (tileset)", name); @@ -300,8 +302,14 @@ _db_tsx_tileset_start(void *pv, const char *name, const char **attr) tileset = db_xml_node_peek(p); if (db_xml_check_tag(name, "tileset")) { - db_xml_get_int_attr(p, attr, "tilewidth", &tileset->tw, 1); - db_xml_get_int_attr(p, attr, "tileheight", &tileset->th, 1); + db_xml_get_int_attr(p, attr, "tilewidth", &tw, 1); + db_xml_get_int_attr(p, attr, "tileheight", &th, 1); + if (tw != tileset->tw || th != tileset->th) { + db_err("Tileset has %dx%d tiles, not %dx%d like map", + tw, th, tileset->tw, tileset->th); + XML_StopParser(p, XML_FALSE); + return; + } db_xml_get_int_attr(p, attr, "tilecount", &tileset->tc, 1); db_xml_get_int_attr(p, attr, "columns", &tileset->cols, 1); db_dbg(" Tile size: %dx%d px", @@ -315,7 +323,7 @@ _db_tsx_tileset_start(void *pv, const char *name, const char **attr) struct db_tileset * db_tileset_new(const char *game_id, const char *file, int firstgid, - struct db_tileset *prev) + int tilewidth, int tileheight, struct db_tileset *prev) { struct db_tileset *tileset; XML_Parser p; @@ -331,6 +339,13 @@ db_tileset_new(const char *game_id, const char *file, int firstgid, return NULL; } + tileset->firstgid = firstgid; + tileset->tw = tilewidth; + tileset->th = tileheight; + if (prev != NULL) { + prev->next = tileset; + } + tileset->game_id = strdup(game_id); if (tileset->game_id == NULL) { db_err("Failed to allocate memory"); @@ -404,27 +419,10 @@ db_tileset_new(const char *game_id, const char *file, int firstgid, XML_ParserFree(p); fclose(fp); - tileset->firstgid = firstgid; - if (prev != NULL) { - prev->next = tileset; - } - return tileset; } int -db_tileset_tilewidth(struct db_tileset *tileset) -{ - return tileset->tw; -} - -int -db_tileset_tileheight(struct db_tileset *tileset) -{ - return tileset->th; -} - -int db_tileset_tilecount(struct db_tileset *tileset) { return tileset->tc; |