aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.cpp
diff options
context:
space:
mode:
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;
}