aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/engine.cpp')
-rw-r--r--engines/lab/engine.cpp54
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);