summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/viewport.cpp70
-rw-r--r--src/gui/viewport.h3
2 files changed, 58 insertions, 15 deletions
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index cd94a52d..1c0959d7 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -259,30 +259,72 @@ void Viewport::_drawDebugPath(Graphics *graphics)
// Get the current mouse position
SDL_GetMouseState(&mMouseX, &mMouseY);
- const int mouseTileX = (mMouseX + (int) mPixelViewX) / 32;
- const int mouseTileY = (mMouseY + (int) mPixelViewY) / 32;
- const Vector &playerPos = player_node->getPosition();
+ Path debugPath;
+
+ if (Net::getNetworkType() == ServerInfo::EATHENA)
+ {
+ const int mouseTileX = (mMouseX + (int) mPixelViewX) / 32;
+ const int mouseTileY = (mMouseY + (int) mPixelViewY) / 32;
+ const Vector &playerPos = player_node->getPosition();
- Path debugPath = mMap->findPath(
+ debugPath = mMap->findPath(
(int) (playerPos.x - 16) / 32,
(int) (playerPos.y - 32) / 32,
mouseTileX, mouseTileY, 0xFF);
- _drawPath(graphics, debugPath);
+ _drawPath(graphics, debugPath);
+ }
+ else if (Net::getNetworkType() == ServerInfo::MANASERV)
+ {
+ const Vector &playerPos = player_node->getPosition();
+
+ debugPath = mMap->findPixelPath(
+ (int) playerPos.x,
+ (int) playerPos.y,
+ mMouseX + (int) mPixelViewX,
+ mMouseY + (int) mPixelViewY,
+ player_node->getWidth() / 2, 0xFF);
+
+ // We draw the path proposed by mouse
+ _drawPath(graphics, debugPath, gcn::Color(255, 0, 255));
+
+ // But also the one currently walked on.
+ _drawPath(graphics, player_node->getPath(), gcn::Color(0, 0, 255));
+ }
}
-void Viewport::_drawPath(Graphics *graphics, const Path &path)
+void Viewport::_drawPath(Graphics *graphics, const Path &path,
+ gcn::Color color)
{
- graphics->setColor(gcn::Color(255, 0, 0));
- for (Path::const_iterator i = path.begin(); i != path.end(); ++i)
+ graphics->setColor(color);
+
+ if (Net::getNetworkType() == ServerInfo::EATHENA)
+ {
+ for (Path::const_iterator i = path.begin(); i != path.end(); ++i)
+ {
+ int squareX = i->x * 32 - (int) mPixelViewX + 12;
+ int squareY = i->y * 32 - (int) mPixelViewY + 12;
+
+ graphics->fillRectangle(gcn::Rectangle(squareX, squareY, 8, 8));
+ graphics->drawText(
+ toString(mMap->getMetaTile(i->x, i->y)->Gcost),
+ squareX + 4, squareY + 12, gcn::Graphics::CENTER);
+ }
+ }
+ else if (Net::getNetworkType() == ServerInfo::MANASERV)
{
- int squareX = i->x * 32 - (int) mPixelViewX + 12;
- int squareY = i->y * 32 - (int) mPixelViewY + 12;
+ for (Path::const_iterator i = path.begin(); i != path.end(); ++i)
+ {
+ int squareX = i->x - (int) mPixelViewX;
+ int squareY = i->y - (int) mPixelViewY;
+
+ graphics->fillRectangle(gcn::Rectangle(squareX - 4, squareY - 4,
+ 8, 8));
+ graphics->drawText(
+ toString(mMap->getMetaTile(i->x / 32, i->y / 32)->Gcost),
+ squareX + 4, squareY + 12, gcn::Graphics::CENTER);
+ }
- graphics->fillRectangle(gcn::Rectangle(squareX, squareY, 8, 8));
- graphics->drawText(
- toString(mMap->getMetaTile(i->x, i->y)->Gcost),
- squareX + 4, squareY + 12, gcn::Graphics::CENTER);
}
}
diff --git a/src/gui/viewport.h b/src/gui/viewport.h
index e67cc6d3..9658f934 100644
--- a/src/gui/viewport.h
+++ b/src/gui/viewport.h
@@ -174,7 +174,8 @@ class Viewport : public WindowContainer, public gcn::MouseListener,
/**
* Draws the given path.
*/
- void _drawPath(Graphics *graphics, const Path &path);
+ void _drawPath(Graphics *graphics, const Path &path,
+ gcn::Color color = gcn::Color(255, 0, 0));
/**
* Make the player go to the mouse position.