From 1f69108501c4bf51f3adac9ffbf7a7631fb12b9a Mon Sep 17 00:00:00 2001 From: Stefan Dombrowski Date: Sun, 31 Oct 2010 12:11:54 +0100 Subject: Using tile coordinates for pick-up Since the tile coordinates are already avaible the calculation is not needed. Furthermore this avoids the correction of the tile, which was needed because the pixel coordinates are meant as coordinates for drawing the being. This resolves http://bugs.manasource.org/view.php?id=249 Reviewed-by: Thorbjorn --- src/game.cpp | 9 ++------- src/localplayer.cpp | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/game.cpp b/src/game.cpp index 270affb5..77544058 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -607,13 +607,8 @@ void Game::handleInput() { case KeyboardConfig::KEY_PICKUP: { - const Vector &pos = player_node->getPosition(); - Map *map = viewport->getCurrentMap(); - Uint16 x = (int) pos.x / map->getTileWidth(); - Uint16 y = (int) (pos.y - 1) - / map->getTileHeight(); - // y - 1 needed to fix position, otherwise, it's - // off under eAthena. + int x = player_node->getTileX(); + int y = player_node->getTileY(); FloorItem *item = floorItemManager->findByCoordinates(x, y); diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 5f5f44ae..7826596c 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -707,8 +707,8 @@ void LocalPlayer::setInvItem(int index, int id, int amount) void LocalPlayer::pickUp(FloorItem *item) { - int dx = item->getX() - (int) getPosition().x / mMap->getTileWidth(); - int dy = item->getY() - ((int) getPosition().y - 1) / mMap->getTileHeight(); + int dx = item->getX() - getTileX(); + int dy = item->getY() - getTileY(); if (dx * dx + dy * dy < 4) { -- cgit v1.2.3-70-g09d2