diff options
author | Travis Howell | 2006-10-22 13:04:34 +0000 |
---|---|---|
committer | Travis Howell | 2006-10-22 13:04:34 +0000 |
commit | 25c38db499c34807f6b277b8f9a8f1b3d32dbc6d (patch) | |
tree | 906ad45afc2871d9da399348d79683817c34cd7a /engines/agos/input.cpp | |
parent | 16ee6236078a07cfc3326e13a1ad9880c703386f (diff) | |
download | scummvm-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.cpp | 57 |
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() { |