diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-07-31 17:09:55 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-07-31 17:09:55 +0200 |
commit | 7a178f6d257a2241d3400271d20eb2b902fdab37 (patch) | |
tree | 651f0ec744039e82616b2739b83effadf79e1a24 | |
parent | 3b22c2cf170c877904dcef5a4af03ac360bd0581 (diff) | |
download | mana-7a178f6d257a2241d3400271d20eb2b902fdab37.tar.gz mana-7a178f6d257a2241d3400271d20eb2b902fdab37.tar.bz2 mana-7a178f6d257a2241d3400271d20eb2b902fdab37.tar.xz mana-7a178f6d257a2241d3400271d20eb2b902fdab37.zip |
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.
-rw-r--r-- | src/map.cpp | 7 | ||||
-rw-r--r-- | src/map.h | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/map.cpp b/src/map.cpp index fa3d9a4c..9736e527 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -206,12 +206,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; @@ -125,7 +125,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; |