From 1cfedcb3046f4169698256c65b09307d79f363d8 Mon Sep 17 00:00:00 2001 From: Guillaume Melquiond Date: Mon, 27 Aug 2007 21:37:15 +0000 Subject: Ported patch from 0.0, in order to support missing extensions and uncompressed maps. --- src/engine.cpp | 8 ++++++-- src/resources/mapreader.cpp | 25 ++++++++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/engine.cpp b/src/engine.cpp index 3b5fb403..6db89089 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -67,7 +67,12 @@ void Engine::changeMap(const std::string &mapPath) particleEngine->clear(); // Store full map path in global var - map_path = "maps/" + mapPath; + map_path = "maps/" + mapPath + ".tmx"; + ResourceManager *resman = ResourceManager::getInstance(); + if (!resman->exists(map_path)) + { + map_path += ".gz"; + } // Attempt to load the new map Map *newMap = MapReader::readMap(map_path); @@ -80,7 +85,6 @@ void Engine::changeMap(const std::string &mapPath) Image *mapImage = NULL; if (newMap->hasProperty("minimap")) { - ResourceManager *resman = ResourceManager::getInstance(); mapImage = resman->getImage(newMap->getProperty("minimap")); } minimap->setMapImage(mapImage); diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index 2230cb6a..260d5aa9 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -160,16 +160,27 @@ MapReader::readMap(const std::string &filename) return NULL; } - // Inflate the gzipped map data unsigned char *inflated; - unsigned int inflatedSize = inflateMemory((unsigned char*) buffer, - fileSize, inflated); - free(buffer); + unsigned int inflatedSize; - if (inflated == NULL) + if (filename.find(".gz", filename.length() - 3) != std::string::npos) { - logger->log("Could not decompress map file (%s)\n", filename.c_str()); - return NULL; + // Inflate the gzipped map data + inflatedSize = + inflateMemory((unsigned char*) buffer, fileSize, inflated); + free(buffer); + + if (inflated == NULL) + { + logger->log("Could not decompress map file (%s)", + filename.c_str()); + return NULL; + } + } + else + { + inflated = (unsigned char*) buffer; + inflatedSize = fileSize; } xmlDocPtr doc = xmlParseMemory((char*) inflated, inflatedSize); -- cgit v1.2.3-70-g09d2