summaryrefslogtreecommitdiff
path: root/src/localplayer.cpp
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2006-03-08 01:46:03 +0000
committerBjörn Steinbrink <B.Steinbrink@gmx.de>2006-03-08 01:46:03 +0000
commitdaa73fee2b89f16c42a05a7ab081699e024fab23 (patch)
tree06971d9b38d44e8fb6695f41b5e061580b054c33 /src/localplayer.cpp
parente32395931f516de22e064459fa6f58a3e583acdf (diff)
downloadmana-daa73fee2b89f16c42a05a7ab081699e024fab23.tar.gz
mana-daa73fee2b89f16c42a05a7ab081699e024fab23.tar.bz2
mana-daa73fee2b89f16c42a05a7ab081699e024fab23.tar.xz
mana-daa73fee2b89f16c42a05a7ab081699e024fab23.zip
Let the LocalPlayer decide whether it can walk to a destination.
Diffstat (limited to 'src/localplayer.cpp')
-rw-r--r--src/localplayer.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/localplayer.cpp b/src/localplayer.cpp
index e10fd3d6..29a2a54b 100644
--- a/src/localplayer.cpp
+++ b/src/localplayer.cpp
@@ -178,7 +178,7 @@ void LocalPlayer::walk(unsigned char dir)
if (action == WALK)
{
- // Avoid sending the coordinates to the server
+ // Just finish the current action, otherwise we get out of sync
Being::setDestination(x, y);
return;
}
@@ -203,8 +203,7 @@ void LocalPlayer::walk(unsigned char dir)
if (dx && dy && !mMap->getWalk(x + dx, y + dy))
dx = 0;
- // Walk to where the player can actually go
- if ((dx || dy) && mMap->getWalk(x + dx, y + dy))
+ if (dx || dy)
{
setDestination(x + dx, y + dy);
}
@@ -218,6 +217,10 @@ void LocalPlayer::walk(unsigned char dir)
void LocalPlayer::setDestination(Uint16 x, Uint16 y)
{
+ // Check if we can walk there
+ if (!mMap->getWalk(x, y))
+ return;
+
char temp[3];
MessageOut outMsg(mNetwork);
set_coordinates(temp, x, y, direction);