diff options
Diffstat (limited to 'src/resources/mapreader.cpp')
-rw-r--r-- | src/resources/mapreader.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index f133e273d..48d63144a 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -568,6 +568,10 @@ void MapReader::readLayer(const XmlNodePtr node, Map *const map) } } + std::map<int, TileAnimation*> &tileAnimations + = map->getTileAnimations(); + + const bool hasAnimations = !tileAnimations.empty(); for (int i = 0; i < binLen - 3; i += 4) { const int gid = binData[i] | @@ -577,10 +581,16 @@ void MapReader::readLayer(const XmlNodePtr node, Map *const map) setTile(map, layer, x, y, gid); - TileAnimation *const ani = map->getAnimationForGid(gid); - if (ani) - ani->addAffectedTile(layer, x + y * w); - + if (hasAnimations) + { + TileAnimationMapCIter i = tileAnimations.find(gid); + if (i != tileAnimations.end()) + { + TileAnimation *const ani = i->second; + if (ani) + ani->addAffectedTile(layer, x + y * w); + } + } x++; if (x == w) { |