summaryrefslogtreecommitdiff
path: root/src/gui/viewport.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2012-01-20 01:42:11 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2012-02-03 14:40:45 +0100
commit94deb596ae86bfe453c9d88e85266caae26e3980 (patch)
treeafb9f3cc90a832420b28b7cb470078b100e11812 /src/gui/viewport.cpp
parent86c4819bee1bcd990b6be20f36dcb26938acac8e (diff)
downloadmana-client-94deb596ae86bfe453c9d88e85266caae26e3980.tar.gz
mana-client-94deb596ae86bfe453c9d88e85266caae26e3980.tar.bz2
mana-client-94deb596ae86bfe453c9d88e85266caae26e3980.tar.xz
mana-client-94deb596ae86bfe453c9d88e85266caae26e3980.zip
Simplified and made generic the way the pickup is handled.
I also made the range be taken from the server type as for the pickup and npc talk ranges. Last but no least, I fixed the parameters sent with PGMSG_PICKUP to send the (item) position where to pickup at as described in the manaserv protocol. The pickup is still not 100% functional due certainly to two problems: 1. The client item coordinates might not be the exact same as in the server. 2. The client seems to try to pick up the item a bit too soon, probably for the reason given in 1. I'll investigate this in another patch. Reviewed-by: Thorbjørn Lindeijer, Erik Schilling.
Diffstat (limited to 'src/gui/viewport.cpp')
-rw-r--r--src/gui/viewport.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index 855a05e4..fd6bc6a3 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -468,12 +468,17 @@ void Viewport::mousePressed(gcn::MouseEvent &event)
// Ignore it if its dead
if (mHoverBeing->isAlive())
{
- if (local_player->withinAttackRange(mHoverBeing) ||
- keyboard.isKeyActive(keyboard.KEY_ATTACK))
+ if (local_player->withinRange(mHoverBeing,
+ local_player->getAttackRange())
+ || keyboard.isKeyActive(keyboard.KEY_ATTACK))
+ {
local_player->attack(mHoverBeing,
!keyboard.isKeyActive(keyboard.KEY_TARGET));
+ }
else
+ {
local_player->setGotoTarget(mHoverBeing);
+ }
}
}
// Picks up a item if we clicked on one