From 6a02a10434f16c016a162e08d2d8ea089981e172 Mon Sep 17 00:00:00 2001 From: Björn Steinbrink Date: Tue, 3 Oct 2006 14:46:41 +0000 Subject: Turned AmbientOverlay into a class. Cleaned up the associated code. --- src/resources/mapreader.cpp | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'src/resources/mapreader.cpp') diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index c1ae911c..2377a8f4 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -24,6 +24,7 @@ #include "mapreader.h" #include +#include #include #include "resourcemanager.h" @@ -215,29 +216,37 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) } //set Overlays - int i = 0; ResourceManager *resman = ResourceManager::getInstance(); - - while (map->hasProperty("overlay" + toString(i) + "image")) + for (int i = 0; ; i++) { - Image *overlayImage = resman->getImage(map->getProperty("overlay" + toString(i) + "image")); + const std::string name = "overlay" + toString(i); + + if (!map->hasProperty(name + "image")) + break; // Finished + + Image *img = resman->getImage(map->getProperty(name + "image")); float scrollX = 0.0f; float scrollY = 0.0f; float parallax = 0.0f; - if (map->hasProperty("overlay" + toString(i) + "scrollX")) + std::stringstream ss; + + if (map->hasProperty(name + "scrollX")) { - scrollX = atof(map->getProperty("overlay" + toString(i) + "scrollX").c_str()); + ss.str(map->getProperty(name + "scrollX")); + ss >> scrollX; } - if (map->hasProperty("overlay" + toString(i) + "scrollY")) + if (map->hasProperty(name + "scrollY")) { - scrollY = atof(map->getProperty("overlay" + toString(i) + "scrollY").c_str()); + ss.str(map->getProperty(name + "scrollY")); + ss >> scrollY; } - if (map->hasProperty("overlay" + toString(i) + "parallax")) + if (map->hasProperty(name + "parallax")) { - parallax = atof(map->getProperty("overlay" + toString(i) + "parallax").c_str()); + ss.str(map->getProperty(name + "parallax")); + ss >> parallax; } - map->setOverlay (overlayImage, scrollX, scrollY, parallax); - i++; + map->setOverlay(img, scrollX, scrollY, parallax); + img->decRef(); } return map; @@ -351,6 +360,11 @@ MapReader::readLayer(xmlNodePtr node, Map *map, int layer) } } + if (y < h) + std::cerr << "TOO SMALL!\n"; + if (x) + std::cerr << "TOO SMALL!\n"; + // There can be only one data element break; } -- cgit v1.2.3-70-g09d2