summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-27 21:37:15 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-27 21:37:15 +0000
commit1cfedcb3046f4169698256c65b09307d79f363d8 (patch)
treee7baa03ef62ac19329873f32edb944eadeafa1d2 /src
parent11a539a2945f2eabb8e9c179829e0b0dd3c966ff (diff)
downloadmana-1cfedcb3046f4169698256c65b09307d79f363d8.tar.gz
mana-1cfedcb3046f4169698256c65b09307d79f363d8.tar.bz2
mana-1cfedcb3046f4169698256c65b09307d79f363d8.tar.xz
mana-1cfedcb3046f4169698256c65b09307d79f363d8.zip
Ported patch from 0.0, in order to support missing extensions and uncompressed maps.
Diffstat (limited to 'src')
-rw-r--r--src/engine.cpp8
-rw-r--r--src/resources/mapreader.cpp25
2 files changed, 24 insertions, 9 deletions
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);