diff options
author | Andrei Karas <akaras@inbox.ru> | 2010-01-09 01:01:17 +0200 |
---|---|---|
committer | Blue <bluesansdouze@gmail.com> | 2010-01-09 00:20:08 +0100 |
commit | b5643b417e12308163802c3a11ac28f1abd239f9 (patch) | |
tree | 68318813f4760929a5c475a655e2113d9b8db8d4 /src/map.cpp | |
parent | 104266da0f92ab2a765598dde59bf2e7f6426484 (diff) | |
download | mana-b5643b417e12308163802c3a11ac28f1abd239f9.tar.gz mana-b5643b417e12308163802c3a11ac28f1abd239f9.tar.bz2 mana-b5643b417e12308163802c3a11ac28f1abd239f9.tar.xz mana-b5643b417e12308163802c3a11ac28f1abd239f9.zip |
Add special map mode.
This mode hide big map objects and show collisions.
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/map.cpp b/src/map.cpp index e4d68756..73686d61 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -128,7 +128,7 @@ Image* MapLayer::getTile(int x, int y) const void MapLayer::draw(Graphics *graphics, int startX, int startY, int endX, int endY, int scrollX, int scrollY, - const MapSprites &sprites) const + const MapSprites &sprites, int debugFlags) const { startX -= mX; startY -= mY; @@ -163,7 +163,8 @@ void MapLayer::draw(Graphics *graphics, int startX, int startY, { const int px = (x + mX) * 32 - scrollX; const int py = (y + mY) * 32 - scrollY + 32 - img->getHeight(); - graphics->drawImage(img, px, py); + if (debugFlags != Map::MAP_SPECIAL || img->getHeight() <= 32) + graphics->drawImage(img, px, py); } } } @@ -185,7 +186,8 @@ Map::Map(int width, int height, int tileWidth, int tileHeight): mTileWidth(tileWidth), mTileHeight(tileHeight), mMaxTileHeight(height), mOnClosedList(1), mOnOpenList(2), - mLastScrollX(0.0f), mLastScrollY(0.0f) + mLastScrollX(0.0f), mLastScrollY(0.0f), + mDebugFlags(MAP_NORMAL) { const int size = mWidth * mHeight; @@ -330,7 +332,7 @@ void Map::draw(Graphics *graphics, int scrollX, int scrollY) (*layeri)->draw(graphics, startX, startY, endX, endY, scrollX, scrollY, - mSprites); + mSprites, mDebugFlags); } // Draws beings with a lower opacity to make them visible @@ -354,7 +356,7 @@ void Map::draw(Graphics *graphics, int scrollX, int scrollY) (int) config.getValue("OverlayDetail", 2)); } -void Map::drawCollision(Graphics *graphics, int scrollX, int scrollY) +void Map::drawCollision(Graphics *graphics, int scrollX, int scrollY, int debugFlags) { int endPixelY = graphics->getHeight() + scrollY + mTileHeight - 1; int startX = scrollX / mTileWidth; @@ -371,11 +373,15 @@ void Map::drawCollision(Graphics *graphics, int scrollX, int scrollY) { for (int x = startX; x < endX; x++) { + graphics->setColor(gcn::Color(0, 0, 0, 64)); + if (debugFlags < MAP_SPECIAL) + { graphics->drawRectangle(gcn::Rectangle( x * mTileWidth - scrollX, y * mTileWidth - scrollY, 33, 33)); + } if (!getWalk(x, y, BLOCKMASK_WALL)) { |