summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-07-31 17:09:55 +0200
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-07-31 17:09:55 +0200
commit7a178f6d257a2241d3400271d20eb2b902fdab37 (patch)
tree651f0ec744039e82616b2739b83effadf79e1a24
parent3b22c2cf170c877904dcef5a4af03ac360bd0581 (diff)
downloadmana-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.cpp7
-rw-r--r--src/map.h2
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;
diff --git a/src/map.h b/src/map.h
index b7917275..6fe2b556 100644
--- a/src/map.h
+++ b/src/map.h
@@ -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;