diff options
Diffstat (limited to 'engines/lab/engine.cpp')
-rw-r--r-- | engines/lab/engine.cpp | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp index 021456f7ff..499ae79346 100644 --- a/engines/lab/engine.cpp +++ b/engines/lab/engine.cpp @@ -77,19 +77,6 @@ enum Monitors { //kMonitorLevers = 82 }; -enum MainButtons { - kButtonPickup, - kButtonUse, - kButtonOpen, - kButtonClose, - kButtonLook, - kButtonInventory, - kButtonLeft, - kButtonForward, - kButtonRight, - kButtonMap -}; - enum AltButtons { kButtonMainDisplay, kButtonSaveLoad, @@ -505,24 +492,9 @@ void LabEngine::mainGameLoop() { _anim->diffNextFrame(); if (_followingCrumbs) { - int result = followCrumbs(); - - if (result != 0) { - uint16 code = 0; - switch (result) { - case VKEY_UPARROW: - code = kButtonForward; - break; - case VKEY_LTARROW: - code = kButtonLeft; - break; - case VKEY_RTARROW: - code = kButtonRight; - break; - default: - break; - } + MainButton code = followCrumbs(); + if (code == kButtonForward || code == kButtonLeft || code == kButtonRight) { gotMessage = true; mayShowCrumbIndicator(); _graphics->screenUpdate(); @@ -1100,18 +1072,18 @@ void LabEngine::go() { _music->freeMusic(); } -int LabEngine::followCrumbs() { +MainButton LabEngine::followCrumbs() { // kDirectionNorth, kDirectionSouth, kDirectionEast, kDirectionWest - int movement[4][4] = { - { VKEY_UPARROW, VKEY_RTARROW, VKEY_RTARROW, VKEY_LTARROW }, - { VKEY_RTARROW, VKEY_UPARROW, VKEY_LTARROW, VKEY_RTARROW }, - { VKEY_LTARROW, VKEY_RTARROW, VKEY_UPARROW, VKEY_RTARROW }, - { VKEY_RTARROW, VKEY_LTARROW, VKEY_RTARROW, VKEY_UPARROW } + MainButton movement[4][4] = { + { kButtonForward, kButtonRight, kButtonRight, kButtonLeft }, + { kButtonRight, kButtonForward, kButtonLeft, kButtonRight }, + { kButtonLeft, kButtonRight, kButtonForward, kButtonRight }, + { kButtonRight, kButtonLeft, kButtonRight, kButtonForward } }; if (_isCrumbWaiting) { if (_system->getMillis() <= _crumbTimestamp) - return 0; + return kButtonNone; _isCrumbWaiting = false; } @@ -1125,10 +1097,10 @@ int LabEngine::followCrumbs() { _breadCrumbs[0]._roomNum = 0; _droppingCrumbs = false; _followingCrumbs = false; - return 0; + return kButtonNone; } - int exitDir; + Direction exitDir; // which direction is last crumb if (_breadCrumbs[_numCrumbs]._direction == kDirectionEast) exitDir = kDirectionWest; @@ -1139,7 +1111,7 @@ int LabEngine::followCrumbs() { else exitDir = kDirectionNorth; - int moveDir = movement[_direction][exitDir]; + MainButton moveDir = movement[_direction][exitDir]; if (_numCrumbs == 0) { _isCrumbTurning = false; @@ -1147,7 +1119,7 @@ int LabEngine::followCrumbs() { _droppingCrumbs = false; _followingCrumbs = false; } else { - _isCrumbTurning = (moveDir != VKEY_UPARROW); + _isCrumbTurning = (moveDir != kButtonForward); _isCrumbWaiting = true; int theDelay = (_followCrumbsFast ? 1000 / 4 : 1000); |