aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2009-06-06 17:47:29 +0000
committerEugene Sandulenko2009-06-06 17:47:29 +0000
commitd6a4dbeb1d41d7d51e58822db9e4036fd1fbeeae (patch)
tree22b1d8595e0f90e7f3ebc22b212fcd87b07ef61b /engines/agi/agi.cpp
parent8792628a465b56c1a11e24867c5a6979a0c7cc1f (diff)
downloadscummvm-rg350-d6a4dbeb1d41d7d51e58822db9e4036fd1fbeeae.tar.gz
scummvm-rg350-d6a4dbeb1d41d7d51e58822db9e4036fd1fbeeae.tar.bz2
scummvm-rg350-d6a4dbeb1d41d7d51e58822db9e4036fd1fbeeae.zip
Implement fence.mouse opcode
svn-id: r41258
Diffstat (limited to 'engines/agi/agi.cpp')
-rw-r--r--engines/agi/agi.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp
index cb49824f81..4431f5d0c4 100644
--- a/engines/agi/agi.cpp
+++ b/engines/agi/agi.cpp
@@ -103,6 +103,20 @@ void AgiEngine::processEvents() {
case Common::EVENT_MOUSEMOVE:
g_mouse.x = event.mouse.x;
g_mouse.y = event.mouse.y;
+
+ if (!_game.mouseFence.isEmpty()) {
+ if (g_mouse.x < _game.mouseFence.left)
+ g_mouse.x = _game.mouseFence.left;
+ if (g_mouse.x > _game.mouseFence.right)
+ g_mouse.x = _game.mouseFence.right;
+ if (g_mouse.y < _game.mouseFence.top)
+ g_mouse.y = _game.mouseFence.top;
+ if (g_mouse.y > _game.mouseFence.bottom)
+ g_mouse.y = _game.mouseFence.bottom;
+
+ g_system->warpMouse(g_mouse.x, g_mouse.y);
+ }
+
break;
case Common::EVENT_LBUTTONUP:
case Common::EVENT_RBUTTONUP:
@@ -473,6 +487,8 @@ int AgiEngine::agiInit() {
_egoHoldKey = false;
+ _game.mouseFence.setWidth(0); // Reset
+
return ec;
}