From 1937b8e19e370a8fa9a47339e07415a315b7c935 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Tue, 31 Jul 2012 17:09:55 +0200 Subject: Fixed drawing issues with tiles that don't match the grid An optimization in the tile layer rendering code meant for drawing repeated tiles faster was not taking into account the case where the tile width does not match the width of the tile grid. Reviewed-by: Stefan Beller --- src/map.cpp | 7 ++++++- src/map.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index b647d5d5..b9bcb284 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -201,12 +201,17 @@ int MapLayer::getTileDrawWidth(int x1, int y1, int endX, int &width) const Image *img1 = getTile(x1, y1); int c = 0; width = img1->getWidth(); + + // Images that don't match the tile width can't be drawn as a pattern + if (width != mMap->getTileWidth()) + return c; + for (int x = x1 + 1; x < endX; x++) { Image *img = getTile(x, y1); if (img != img1) break; - c ++; + c++; width += img->getWidth(); } return c; diff --git a/src/map.h b/src/map.h index 8d87c5be..2338452c 100644 --- a/src/map.h +++ b/src/map.h @@ -126,7 +126,7 @@ class MapLayer const Actors &actors, int debugFlags) const; - bool isFringeLayer() + bool isFringeLayer() const { return mIsFringeLayer; } int getTileDrawWidth(int x1, int y1, int endX, int &width) const; -- cgit v1.2.3-60-g2f50