summaryrefslogtreecommitdiff
path: root/src/gui/viewport.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <bertram@cegetel.net>2008-04-17 20:14:24 +0000
committerYohann Ferreira <bertram@cegetel.net>2008-04-17 20:14:24 +0000
commitf43ce278866a2c42f67f75972c2e4abe46f8fd82 (patch)
tree95650923c9ba0bde20fe8eea86981c6d733124e7 /src/gui/viewport.cpp
parent346442e0aa15705910dd12e61e2a662fba0fced6 (diff)
downloadmana-f43ce278866a2c42f67f75972c2e4abe46f8fd82.tar.gz
mana-f43ce278866a2c42f67f75972c2e4abe46f8fd82.tar.bz2
mana-f43ce278866a2c42f67f75972c2e4abe46f8fd82.tar.xz
mana-f43ce278866a2c42f67f75972c2e4abe46f8fd82.zip
Moved walking calls flooding control when dragging mouse to viewport.
Diffstat (limited to 'src/gui/viewport.cpp')
-rw-r--r--src/gui/viewport.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index 1b6cfa1c..a8fd452c 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -49,13 +49,15 @@
#include <cassert>
extern volatile int tick_time;
+extern int get_elapsed_time(int start_time);
Viewport::Viewport():
mMap(0),
mViewX(0.0f),
mViewY(0.0f),
mShowDebugPath(false),
- mPlayerFollowMouse(false)
+ mPlayerFollowMouse(false),
+ mLocalWalkTime(-1)
{
setOpaque(false);
addMouseListener(this);
@@ -251,11 +253,12 @@ Viewport::logic()
Uint8 button = SDL_GetMouseState(&mouseX, &mouseY);
if (mPlayerFollowMouse && button & SDL_BUTTON(1) &&
- mWalkTime != player_node->mWalkTime)
+ mWalkTime != player_node->mWalkTime &&
+ get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay)
{
+ mLocalWalkTime = tick_time;
player_node->setDestination(mouseX + (int) mViewX,
- mouseY + (int) mViewY,
- BY_MOUSE);
+ mouseY + (int) mViewY);
mWalkTime = player_node->mWalkTime;
}
@@ -399,12 +402,12 @@ Viewport::mousePressed(gcn::MouseEvent &event)
{
// FIXME: REALLY UGLY!
Uint8 *keys = SDL_GetKeyState(NULL);
- if (!(keys[SDLK_LSHIFT] || keys[SDLK_RSHIFT]))
+ if (!(keys[SDLK_LSHIFT] || keys[SDLK_RSHIFT]) &&
+ get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay)
{
-
+ mLocalWalkTime = tick_time;
player_node->setDestination(event.getX() + (int) mViewX,
- event.getY() + (int) mViewY,
- BY_MOUSE);
+ event.getY() + (int) mViewY);
}
mPlayerFollowMouse = true;
}
@@ -429,11 +432,12 @@ Viewport::mouseDragged(gcn::MouseEvent &event)
if (!mMap || !player_node)
return;
- if (mPlayerFollowMouse && mWalkTime == player_node->mWalkTime)
+ if (mPlayerFollowMouse && mWalkTime == player_node->mWalkTime
+ && get_elapsed_time(mLocalWalkTime) >= walkingMouseDelay)
{
+ mLocalWalkTime = tick_time;
player_node->setDestination(event.getX() + (int) mViewX,
- event.getY() + (int) mViewY,
- BY_MOUSE);
+ event.getY() + (int) mViewY);
}
}