aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/core
diff options
context:
space:
mode:
authorAdrian Astley2014-12-23 00:38:44 -0600
committerAdrian Astley2014-12-23 00:39:25 -0600
commit40bd4c485f9ab24e667e66a047214eb7dcef73e8 (patch)
tree967b67fe0b99d225c00e325b1b440b765c24a7e5 /engines/zvision/core
parent6548300a4182e1dc805b390678df800b05d07554 (diff)
downloadscummvm-rg350-40bd4c485f9ab24e667e66a047214eb7dcef73e8.tar.gz
scummvm-rg350-40bd4c485f9ab24e667e66a047214eb7dcef73e8.tar.bz2
scummvm-rg350-40bd4c485f9ab24e667e66a047214eb7dcef73e8.zip
ZVISION: Clamp the rotation velocity to never be zero
Before, if we set the in-game preferences to have very low rotation speed, the velocity ends up always being 0 - 0.99 Hence, when we convert back to an int, everything gets truncated to zero. Therefore, we clamp, in order to ensure the user can always move, no matter which setting they use.
Diffstat (limited to 'engines/zvision/core')
-rw-r--r--engines/zvision/core/events.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/engines/zvision/core/events.cpp b/engines/zvision/core/events.cpp
index ccd7772975..1920ffd769 100644
--- a/engines/zvision/core/events.cpp
+++ b/engines/zvision/core/events.cpp
@@ -299,7 +299,7 @@ void ZVision::onMouseMove(const Common::Point &pos) {
if (mspeed <= 0) {
mspeed = 25;
}
- _mouseVelocity = ((Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (clippedPos.x - _workingWindow.left)) - mspeed).toInt();
+ _mouseVelocity = MIN(((Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (clippedPos.x - _workingWindow.left)) - mspeed).toInt(), -1);
_cursorManager->changeCursor(CursorIndex_Left);
@@ -310,7 +310,7 @@ void ZVision::onMouseMove(const Common::Point &pos) {
if (mspeed <= 0) {
mspeed = 25;
}
- _mouseVelocity = (Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (clippedPos.x - _workingWindow.right + ROTATION_SCREEN_EDGE_OFFSET)).toInt();
+ _mouseVelocity = MAX((Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (clippedPos.x - _workingWindow.right + ROTATION_SCREEN_EDGE_OFFSET)).toInt(), 1);
_cursorManager->changeCursor(CursorIndex_Right);
cursorWasChanged = true;
@@ -324,7 +324,7 @@ void ZVision::onMouseMove(const Common::Point &pos) {
if (mspeed <= 0) {
mspeed = 25;
}
- _mouseVelocity = ((Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (pos.y - _workingWindow.top)) - mspeed).toInt();
+ _mouseVelocity = MIN(((Common::Rational(mspeed, ROTATION_SCREEN_EDGE_OFFSET) * (pos.y - _workingWindow.top)) - mspeed).toInt(), -1);
_cursorManager->changeCursor(CursorIndex_UpArr);
cursorWasChanged = true;
@@ -334,7 +334,7 @@ void ZVision::onMouseMove(const Common::Point &pos) {
if (mspeed <= 0) {
mspeed = 25;
}
- _mouseVelocity = (Common::Rational(MAX_ROTATION_SPEED, ROTATION_SCREEN_EDGE_OFFSET) * (pos.y - _workingWindow.bottom + ROTATION_SCREEN_EDGE_OFFSET)).toInt();
+ _mouseVelocity = MAX((Common::Rational(MAX_ROTATION_SPEED, ROTATION_SCREEN_EDGE_OFFSET) * (pos.y - _workingWindow.bottom + ROTATION_SCREEN_EDGE_OFFSET)).toInt(), 1);
_cursorManager->changeCursor(CursorIndex_DownArr);
cursorWasChanged = true;