aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/input.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-10-22 13:04:34 +0000
committerTravis Howell2006-10-22 13:04:34 +0000
commit25c38db499c34807f6b277b8f9a8f1b3d32dbc6d (patch)
tree906ad45afc2871d9da399348d79683817c34cd7a /engines/agos/input.cpp
parent16ee6236078a07cfc3326e13a1ad9880c703386f (diff)
downloadscummvm-rg350-25c38db499c34807f6b277b8f9a8f1b3d32dbc6d.tar.gz
scummvm-rg350-25c38db499c34807f6b277b8f9a8f1b3d32dbc6d.tar.bz2
scummvm-rg350-25c38db499c34807f6b277b8f9a8f1b3d32dbc6d.zip
Add drag support for items in Elvira 1/2 and WW
svn-id: r24436
Diffstat (limited to 'engines/agos/input.cpp')
-rw-r--r--engines/agos/input.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp
index 76562977d5..ab812b9675 100644
--- a/engines/agos/input.cpp
+++ b/engines/agos/input.cpp
@@ -187,6 +187,7 @@ startOver:
for (;;) {
_lastHitArea = NULL;
_lastHitArea3 = NULL;
+ _dragAccept = 1;
for (;;) {
if (getGameType() != GType_FF && getGameType() != GType_PP && _keyPressed == 35)
@@ -199,6 +200,8 @@ startOver:
goto startOver;
if (_lastHitArea3 != 0)
break;
+ if (_dragMode != 0)
+ goto dragMode;
hitarea_stuff_helper();
delay(100);
}
@@ -302,6 +305,60 @@ out_of_here:
_nameLocked = 0;
_needHitAreaRecalc++;
+ _dragAccept = 0;
+
+ if (getGameType() == GType_WW && _mouseCursor < 3)
+ _mouseCursor = 0;
+
+ return;
+
+resetDrag:
+
+ _dragFlag = 0;
+ _dragMode = 0;
+ _dragCount = 0;
+ _dragEnd = 0;
+ goto startOver;
+
+dragMode:
+ if (_lastClickRem == 0)
+ goto resetDrag;
+
+ ha = _lastClickRem;
+ if (!(ha->flags & kBFDragBox))
+ goto resetDrag;
+
+ if (ha->item_ptr == NULL)
+ goto resetDrag;
+
+ _hitAreaSubjectItem = ha->item_ptr;
+ _verbHitArea = 500;
+
+ for (;;) {
+ processSpecialKeys();
+ hitarea_stuff_helper();
+ delay(100);
+
+ if (_dragFlag == 0)
+ goto resetDrag;
+
+ if (_dragEnd != 0)
+ break;
+ }
+
+ _dragFlag = 0;
+ _dragMode = 0;
+ _dragCount = 0;
+ _dragEnd = 0;
+
+ boxController(_mouseX, _mouseY, 1);
+
+ if (_currentBox != NULL) {
+ _hitAreaObjectItem = _currentBox->item_ptr;
+ setVerbText(ha);
+ }
+
+ goto out_of_here;
}
void AGOSEngine::hitarea_stuff_helper() {