From 612e7a3eeb1b1e4b6c0500b8801544e19f2d7d55 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 18 Mar 2007 13:53:51 +0000 Subject: Refactoring AGOSEngine::waitForInput a bit (by resolving gotos) svn-id: r26207 --- engines/agos/input.cpp | 97 +++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 52 deletions(-) (limited to 'engines/agos/input.cpp') diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp index 08ab14fea1..54ad8af05e 100644 --- a/engines/agos/input.cpp +++ b/engines/agos/input.cpp @@ -202,8 +202,51 @@ startOver: goto startOver; if (_lastHitArea3 != 0) break; - if (_dragMode != 0) - goto dragMode; + if (_dragMode != 0) { + ha = _lastClickRem; + + if (ha == 0 || ha->item_ptr == NULL || !(ha->flags & kBFDragBox)) { + _dragFlag = 0; + _dragMode = 0; + _dragCount = 0; + _dragEnd = 0; + goto startOver; + } + + _hitAreaSubjectItem = ha->item_ptr; + _verbHitArea = 500; + + for (;;) { + processSpecialKeys(); + hitarea_stuff_helper(); + delay(100); + + if (_dragFlag == 0) { + _dragFlag = 0; + _dragMode = 0; + _dragCount = 0; + _dragEnd = 0; + goto startOver; + } + + if (_dragEnd != 0) + break; + } + + _dragFlag = 0; + _dragMode = 0; + _dragCount = 0; + _dragEnd = 0; + + boxController(_mouse.x, _mouse.y, 1); + + if (_currentBox != NULL) { + _hitAreaObjectItem = _currentBox->item_ptr; + setVerbText(ha); + } + + goto out_of_here; + } hitarea_stuff_helper(); delay(100); } @@ -315,56 +358,6 @@ out_of_here: 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(_mouse.x, _mouse.y, 1); - - if (_currentBox != NULL) { - _hitAreaObjectItem = _currentBox->item_ptr; - setVerbText(ha); - } - - goto out_of_here; } void AGOSEngine::hitarea_stuff_helper() { -- cgit v1.2.3