diff options
author | Björn Steinbrink <B.Steinbrink@gmx.de> | 2006-03-08 01:46:03 +0000 |
---|---|---|
committer | Björn Steinbrink <B.Steinbrink@gmx.de> | 2006-03-08 01:46:03 +0000 |
commit | daa73fee2b89f16c42a05a7ab081699e024fab23 (patch) | |
tree | 06971d9b38d44e8fb6695f41b5e061580b054c33 /src/localplayer.cpp | |
parent | e32395931f516de22e064459fa6f58a3e583acdf (diff) | |
download | mana-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.cpp | 9 |
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); |