[Scummvm-git-logs] scummvm master -> 41a95cdf902ece7eaa1d2963429ed331ef3fd91b
sev-
noreply at scummvm.org
Mon Aug 18 10:12:27 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
41a95cdf90 LAB: Add keymapper support
Commit: 41a95cdf902ece7eaa1d2963429ed331ef3fd91b
https://github.com/scummvm/scummvm/commit/41a95cdf902ece7eaa1d2963429ed331ef3fd91b
Author: aunnoman1 (aunnoman123 at outlook.com)
Date: 2025-08-18T12:12:24+02:00
Commit Message:
LAB: Add keymapper support
Changed paths:
engines/lab/POTFILES
engines/lab/console.cpp
engines/lab/dispman.cpp
engines/lab/engine.cpp
engines/lab/eventman.cpp
engines/lab/eventman.h
engines/lab/interface.cpp
engines/lab/interface.h
engines/lab/intro.cpp
engines/lab/lab.h
engines/lab/map.cpp
engines/lab/metaengine.cpp
engines/lab/special.cpp
diff --git a/engines/lab/POTFILES b/engines/lab/POTFILES
index 13517e87a5e..ae75023592a 100644
--- a/engines/lab/POTFILES
+++ b/engines/lab/POTFILES
@@ -1,4 +1,5 @@
engines/lab/engine.cpp
+engines/lab/metaengine.cpp
engines/lab/processroom.cpp
engines/lab/savegame.cpp
engines/lab/speciallocks.cpp
diff --git a/engines/lab/console.cpp b/engines/lab/console.cpp
index 8cbe0bd9030..c5fa1577b2e 100644
--- a/engines/lab/console.cpp
+++ b/engines/lab/console.cpp
@@ -29,6 +29,8 @@
#include "lab/processroom.h"
#include "lab/resource.h"
+#include "backends/keymapper/keymapper.h"
+
namespace Lab {
Console::Console(LabEngine *vm) : GUI::Debugger(), _vm(vm) {
@@ -57,6 +59,12 @@ bool Console::Cmd_Scene(int argc, const char **argv) {
_vm->_event->simulateEvent();
_vm->_graphics->_longWinInFront = false;
+ Common::Keymapper *keymapper = _vm->_system->getEventManager()->getKeymapper();
+ keymapper->disableAllGameKeymaps();
+ keymapper->getKeymap("lab-default")->setEnabled(true);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+
return false;
}
diff --git a/engines/lab/dispman.cpp b/engines/lab/dispman.cpp
index afac8657fed..91e66ddb95c 100644
--- a/engines/lab/dispman.cpp
+++ b/engines/lab/dispman.cpp
@@ -323,16 +323,16 @@ void DisplayMan::setUpScreens() {
// It's very convenient to have those shortcut, so I added them
// for all versions. (Strangerke)
uint16 y = _vm->_utils->vgaScaleY(173) - _vm->_utils->svgaCord(2);
- moveButtonList->push_back(i->createButton( 1, y, 0, Common::KEYCODE_t, moveImages[0], moveImages[1]));
- moveButtonList->push_back(i->createButton( 33, y, 1, Common::KEYCODE_m, moveImages[2], moveImages[3]));
- moveButtonList->push_back(i->createButton( 65, y, 2, Common::KEYCODE_o, moveImages[4], moveImages[5]));
- moveButtonList->push_back(i->createButton( 97, y, 3, Common::KEYCODE_c, moveImages[6], moveImages[7]));
- moveButtonList->push_back(i->createButton(129, y, 4, Common::KEYCODE_l, moveImages[8], moveImages[9]));
- moveButtonList->push_back(i->createButton(161, y, 5, Common::KEYCODE_i, moveImages[12], moveImages[13]));
- moveButtonList->push_back(i->createButton(193, y, 6, Common::KEYCODE_LEFT, moveImages[14], moveImages[15]));
- moveButtonList->push_back(i->createButton(225, y, 7, Common::KEYCODE_UP, moveImages[16], moveImages[17]));
- moveButtonList->push_back(i->createButton(257, y, 8, Common::KEYCODE_RIGHT, moveImages[18], moveImages[19]));
- moveButtonList->push_back(i->createButton(289, y, 9, Common::KEYCODE_p, moveImages[10], moveImages[11]));
+ moveButtonList->push_back(i->createButton( 1, y, 0, kActionTake, moveImages[0], moveImages[1]));
+ moveButtonList->push_back(i->createButton( 33, y, 1, kActionMove, moveImages[2], moveImages[3]));
+ moveButtonList->push_back(i->createButton( 65, y, 2, kActionOpen, moveImages[4], moveImages[5]));
+ moveButtonList->push_back(i->createButton( 97, y, 3, kActionClose, moveImages[6], moveImages[7]));
+ moveButtonList->push_back(i->createButton(129, y, 4, kActionLook, moveImages[8], moveImages[9]));
+ moveButtonList->push_back(i->createButton(161, y, 5, kActionInv, moveImages[12], moveImages[13]));
+ moveButtonList->push_back(i->createButton(193, y, 6, kActionLeft, moveImages[14], moveImages[15]));
+ moveButtonList->push_back(i->createButton(225, y, 7, kActionForward, moveImages[16], moveImages[17]));
+ moveButtonList->push_back(i->createButton(257, y, 8, kActionRight, moveImages[18], moveImages[19]));
+ moveButtonList->push_back(i->createButton(289, y, 9, kActionMap, moveImages[10], moveImages[11]));
// TODO: The INV file is not present in the Amiga version
Common::File *invFile = _vm->_resource->openDataFile("P:Inv");
@@ -345,23 +345,23 @@ void DisplayMan::setUpScreens() {
}
if (_vm->getPlatform() == Common::kPlatformWindows) {
- invButtonList->push_back(i->createButton( 24, y, 0, Common::KEYCODE_ESCAPE, invImages[0], invImages[1]));
- invButtonList->push_back(i->createButton( 56, y, 1, Common::KEYCODE_g, invImages[2], invImages[3]));
- invButtonList->push_back(i->createButton( 94, y, 2, Common::KEYCODE_u, invImages[4], invImages[5]));
- invButtonList->push_back(i->createButton(126, y, 3, Common::KEYCODE_l, moveImages[8], moveImages[9]));
- invButtonList->push_back(i->createButton(164, y, 4, Common::KEYCODE_LEFT, moveImages[14], moveImages[15]));
- invButtonList->push_back(i->createButton(196, y, 5, Common::KEYCODE_RIGHT, moveImages[18], moveImages[19]));
+ invButtonList->push_back(i->createButton( 24, y, 0, kActionMainDisplay, invImages[0], invImages[1]));
+ invButtonList->push_back(i->createButton( 56, y, 1, kActionSaveLoad, invImages[2], invImages[3]));
+ invButtonList->push_back(i->createButton( 94, y, 2, kActionUse, invImages[4], invImages[5]));
+ invButtonList->push_back(i->createButton(126, y, 3, kActionInvLook, moveImages[8], moveImages[9]));
+ invButtonList->push_back(i->createButton(164, y, 4, kActionPrev, moveImages[14], moveImages[15]));
+ invButtonList->push_back(i->createButton(196, y, 5, kActionNext, moveImages[18], moveImages[19]));
// The windows version has 2 extra buttons for breadcrumb trail
// CHECKME: the game is really hard to play without those, maybe we could add something to enable that.
- invButtonList->push_back(i->createButton(234, y, 6, Common::KEYCODE_b, invImages[6], invImages[7]));
- invButtonList->push_back(i->createButton(266, y, 7, Common::KEYCODE_f, invImages[8], invImages[9]));
+ invButtonList->push_back(i->createButton(234, y, 6, kActionDropBreadcrumb, invImages[6], invImages[7]));
+ invButtonList->push_back(i->createButton(266, y, 7, kActionFollowBreadcrumbs, invImages[8], invImages[9]));
} else {
- invButtonList->push_back(i->createButton( 58, y, 0, Common::KEYCODE_ESCAPE, invImages[0], invImages[1]));
- invButtonList->push_back(i->createButton( 90, y, 1, Common::KEYCODE_g, invImages[2], invImages[3]));
- invButtonList->push_back(i->createButton(128, y, 2, Common::KEYCODE_u, invImages[4], invImages[5]));
- invButtonList->push_back(i->createButton(160, y, 3, Common::KEYCODE_l, moveImages[8], moveImages[9]));
- invButtonList->push_back(i->createButton(198, y, 4, Common::KEYCODE_LEFT, moveImages[14], moveImages[15]));
- invButtonList->push_back(i->createButton(230, y, 5, Common::KEYCODE_RIGHT, moveImages[18], moveImages[19]));
+ invButtonList->push_back(i->createButton( 58, y, 0, kActionMainDisplay, invImages[0], invImages[1]));
+ invButtonList->push_back(i->createButton( 90, y, 1, kActionSaveLoad, invImages[2], invImages[3]));
+ invButtonList->push_back(i->createButton(128, y, 2, kActionUse, invImages[4], invImages[5]));
+ invButtonList->push_back(i->createButton(160, y, 3, kActionInvLook, moveImages[8], moveImages[9]));
+ invButtonList->push_back(i->createButton(198, y, 4, kActionPrev, moveImages[14], moveImages[15]));
+ invButtonList->push_back(i->createButton(230, y, 5, kActionNext, moveImages[18], moveImages[19]));
}
delete invFile;
diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp
index d008e92d25d..887a808436f 100644
--- a/engines/lab/engine.cpp
+++ b/engines/lab/engine.cpp
@@ -47,6 +47,8 @@
#include "lab/speciallocks.h"
#include "lab/utils.h"
+#include "backends/keymapper/keymapper.h"
+
namespace Lab {
enum SpecialLock {
@@ -302,8 +304,19 @@ void LabEngine::interfaceOn() {
}
bool LabEngine::doUse(uint16 curInv) {
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+
switch (curInv) {
case kItemMap:
+ if (_mainDisplay) {
+ keymapper->getKeymap("game-shortcuts")->setEnabled(false);
+ keymapper->getKeymap("exit")->setEnabled(false);
+ keymapper->getKeymap("map")->setEnabled(true);
+ } else if (_alternate) {
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("map")->setEnabled(true);
+ }
+
drawStaticMessage(kTextUseMap);
interfaceOff();
_anim->stopDiff();
@@ -313,8 +326,22 @@ bool LabEngine::doUse(uint16 curInv) {
_graphics->setPalette(initColors, 8);
_graphics->drawMessage("", false);
_graphics->drawPanel();
+
+ if (_alternate) {
+ keymapper->getKeymap("map")->setEnabled(false);
+ keymapper->getKeymap("inventory")->setEnabled(true);
+ } else {
+ keymapper->getKeymap("map")->setEnabled(false);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+ }
+
return true;
case kItemJournal:
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("journal")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+
drawStaticMessage(kTextUseJournal);
interfaceOff();
_anim->stopDiff();
@@ -323,6 +350,11 @@ bool LabEngine::doUse(uint16 curInv) {
doJournal();
_graphics->drawPanel();
_graphics->drawMessage("", false);
+
+ keymapper->getKeymap("journal")->setEnabled(false);
+ keymapper->getKeymap("exit")->setEnabled(false);
+ keymapper->getKeymap("inventory")->setEnabled(true);
+
return true;
case kItemLamp:
interfaceOff();
@@ -563,7 +595,7 @@ bool LabEngine::processEvent(MessageClass tmpClass, uint16 code, uint16 qualifie
uint16 oldDirection = 0;
uint16 lastInv = kItemMap;
- if (code == Common::KEYCODE_RETURN)
+ if (msgClass == kMessageAction && code == kActionInteract)
msgClass = kMessageLeftClick;
bool leftButtonClick = (msgClass == kMessageLeftClick);
@@ -572,13 +604,13 @@ bool LabEngine::processEvent(MessageClass tmpClass, uint16 code, uint16 qualifie
_anim->_doBlack = false;
if (_graphics->_longWinInFront) {
- if (msgClass == kMessageRawKey || leftButtonClick || rightButtonClick) {
+ if (msgClass == kMessageAction || leftButtonClick || rightButtonClick) {
_graphics->_longWinInFront = false;
_graphics->drawPanel();
drawRoomMessage(curInv, _closeDataPtr);
_graphics->screenUpdate();
}
- } else if (msgClass == kMessageRawKey) {
+ } else if (msgClass == kMessageAction) {
return processKey(curMsg, msgClass, qualifier, curPos, curInv, forceDraw, code);
} else if (msgClass == kMessageButtonUp) {
if (!_alternate)
@@ -606,11 +638,21 @@ bool LabEngine::processEvent(MessageClass tmpClass, uint16 code, uint16 qualifie
// Sets the correct button list
interfaceOn();
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+
if (_alternate) {
if (lastInv && _conditions->in(lastInv))
curInv = lastInv;
else
decIncInv(&curInv, false);
+
+ keymapper->getKeymap("game-shortcuts")->setEnabled(false);
+ keymapper->getKeymap("exit")->setEnabled(false);
+ keymapper->getKeymap("inventory")->setEnabled(true);
+ } else {
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
}
_graphics->drawPanel();
@@ -624,19 +666,21 @@ bool LabEngine::processEvent(MessageClass tmpClass, uint16 code, uint16 qualifie
}
bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualifier, Common::Point &curPos, uint16 &curInv, bool &forceDraw, uint16 code) {
- if ((getPlatform() == Common::kPlatformWindows) && (code == Common::KEYCODE_b)) {
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+
+ if ((getPlatform() == Common::kPlatformWindows) && (code == kActionDropBreadcrumb)) {
// Start bread crumbs
_breadCrumbs[0]._crumbRoomNum = 0;
_numCrumbs = 0;
_droppingCrumbs = true;
_interface->mayShowCrumbIndicator();
_graphics->screenUpdate();
- } else if (getPlatform() == Common::kPlatformWindows && (code == Common::KEYCODE_f || code == Common::KEYCODE_r)) {
+ } else if (getPlatform() == Common::kPlatformWindows && (code == kActionFollowBreadcrumbs || code == kActionRunWhileFollowingBreadcrumbs)) {
// Follow bread crumbs
if (_droppingCrumbs) {
if (_numCrumbs > 0) {
_followingCrumbs = true;
- _followCrumbsFast = (code == Common::KEYCODE_r);
+ _followCrumbsFast = (code == kActionRunWhileFollowingBreadcrumbs);
_isCrumbTurning = false;
_isCrumbWaiting = false;
_crumbTimestamp = _system->getMillis();
@@ -652,6 +696,10 @@ bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualif
_graphics->drawPanel();
drawRoomMessage(curInv, _closeDataPtr);
_graphics->screenUpdate();
+
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
}
} else {
_breadCrumbs[0]._crumbRoomNum = 0;
@@ -661,12 +709,15 @@ bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualif
_graphics->screenUpdate();
}
}
- } else if ((code == Common::KEYCODE_x) || (code == Common::KEYCODE_q)) {
+ } else if ((code == kActionQuit)) {
// Quit?
_graphics->drawMessage("Do you want to quit? (Y/N)", false);
eatMessages();
interfaceOff();
+ keymapper->disableAllGameKeymaps();
+ keymapper->getKeymap("quit-dialog")->setEnabled(true);
+
while (1) {
// Make sure we check the music at least after every message
updateEvents();
@@ -679,21 +730,29 @@ bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualif
// Does music load and next animation frame when you've run out of messages
updateEvents();
_anim->diffNextFrame();
- } else if (curMsg->_msgClass == kMessageRawKey) {
- if ((curMsg->_code == Common::KEYCODE_y) || (curMsg->_code == Common::KEYCODE_q)) {
+ } else if (curMsg->_msgClass == kMessageAction) {
+ if ((curMsg->_code == kActionQuitDialogYes)) {
_anim->stopDiff();
return false;
- } else if (curMsg->_code < 128)
+ } else if (curMsg->_code == kActionQuitDialogNo)
break;
} else if ((curMsg->_msgClass == kMessageLeftClick) || (curMsg->_msgClass == kMessageRightClick))
break;
}
+ keymapper->getKeymap("quit-dialog")->setEnabled(false);
+ keymapper->getKeymap("lab-default")->setEnabled(true);
+ if (_alternate) {
+ keymapper->getKeymap("inventory")->setEnabled(true);
+ } else {
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+ }
forceDraw = true;
interfaceOn();
- } else if (code == Common::KEYCODE_ESCAPE) {
+ } else if (code == kActionExit) {
_closeDataPtr = nullptr;
- } else if (code == Common::KEYCODE_TAB) {
+ } else if (code == kActionFocusOnNextInteractiveItem) {
const CloseData *tmpClosePtr = _closeDataPtr;
// get next close-up in list after the one pointed to by curPos
@@ -709,6 +768,8 @@ bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualif
}
void LabEngine::processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDirection, bool &forceDraw, uint16 buttonId, uint16 &actionMode) {
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+
switch (buttonId) {
case kButtonPickup:
case kButtonUse:
@@ -736,6 +797,10 @@ void LabEngine::processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDi
case kButtonInventory:
eatMessages();
+ keymapper->getKeymap("game-shortcuts")->setEnabled(false);
+ keymapper->getKeymap("exit")->setEnabled(false);
+ keymapper->getKeymap("inventory")->setEnabled(true);
+
_alternate = true;
_anim->_doBlack = true;
// Sets the correct button list
@@ -852,6 +917,7 @@ void LabEngine::processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDi
void LabEngine::processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonId, uint16 &actionMode) {
_anim->_doBlack = true;
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
switch (buttonId) {
case kButtonMainDisplay:
@@ -864,6 +930,11 @@ void LabEngine::processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonI
interfaceOn();
_graphics->drawPanel();
drawRoomMessage(curInv, _closeDataPtr);
+
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+
break;
case kButtonSaveLoad: {
@@ -954,6 +1025,10 @@ void LabEngine::processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonI
interfaceOn();
_graphics->drawPanel();
drawRoomMessage(curInv, _closeDataPtr);
+
+ keymapper->getKeymap("inventory")->setEnabled(false);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
} else {
_breadCrumbs[0]._crumbRoomNum = 0;
_droppingCrumbs = false;
@@ -1054,6 +1129,10 @@ void LabEngine::go() {
// If the user has requested to load a game from the launcher, skip the intro
if (!ConfMan.hasKey("save_slot")) {
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+ keymapper->disableAllGameKeymaps();
+ keymapper->getKeymap("intro")->setEnabled(true);
+
_event->mouseHide();
_introPlaying = true;
Intro *intro = new Intro(this);
@@ -1061,6 +1140,11 @@ void LabEngine::go() {
delete intro;
_introPlaying = false;
_event->mouseShow();
+
+ keymapper->getKeymap("intro")->setEnabled(false);
+ keymapper->getKeymap("lab-default")->setEnabled(true);
+ keymapper->getKeymap("exit")->setEnabled(true);
+ keymapper->getKeymap("game-shortcuts")->setEnabled(true);
}
mainGameLoop();
diff --git a/engines/lab/eventman.cpp b/engines/lab/eventman.cpp
index bf50233862a..85008f08131 100644
--- a/engines/lab/eventman.cpp
+++ b/engines/lab/eventman.cpp
@@ -66,7 +66,7 @@ EventManager::EventManager(LabEngine *vm) : _vm(vm) {
_rightClick = false;
_buttonHit = false;
_mousePos = Common::Point(0, 0);
- _keyPressed = Common::KEYCODE_INVALID;
+ _actionPressed = kActionNone;
}
void EventManager::initMouse() {
@@ -108,19 +108,22 @@ void EventManager::processInput() {
case Common::EVENT_MOUSEMOVE:
_mousePos = event.mouse;
break;
- case Common::EVENT_KEYDOWN:
- switch (event.kbd.keycode) {
- case Common::KEYCODE_LEFTBRACKET:
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ switch (event.customType) {
+ case kActionSoundLower:
_vm->changeVolume(-1);
break;
- case Common::KEYCODE_RIGHTBRACKET:
+ case kActionSoundRaise:
_vm->changeVolume(1);
break;
default:
- _keyPressed = event.kbd;
+ _actionPressed = event.customType;
break;
}
break;
+ case Common::EVENT_KEYDOWN:
+ _actionPressed = kActionQuitDialogNo; // Used for "Press any key to continue" scenarios as well.
+ break;
case Common::EVENT_QUIT:
case Common::EVENT_RETURN_TO_LAUNCHER:
default:
@@ -142,7 +145,7 @@ IntuiMessage *EventManager::getMsg() {
_vm->_interface->handlePressedButton();
message._msgClass = kMessageButtonUp;
message._code = lastButtonHit->_buttonId;
- message._qualifier = _keyPressed.flags;
+ message._qualifier = 0; // This does not seem to be used anywhere. Since qualifiers can be detected by keymapper anyways, this is set to 0.
return &message;
} else
@@ -153,21 +156,21 @@ IntuiMessage *EventManager::getMsg() {
message._mouse = _mousePos;
_leftClick = _rightClick = false;
return &message;
- } else if (_keyPressed.keycode != Common::KEYCODE_INVALID) {
- Button *curButton = _vm->_interface->checkNumButtonHit(_keyPressed.keycode);
+ } else if (_actionPressed != kActionNone) {
+ Button *curButton = _vm->_interface->checkNumButtonHit(_actionPressed);
if (curButton) {
message._msgClass = kMessageButtonUp;
message._code = curButton->_buttonId;
} else {
- message._msgClass = kMessageRawKey;
- message._code = _keyPressed.keycode;
+ message._msgClass = kMessageAction;
+ message._code = _actionPressed;
}
- message._qualifier = _keyPressed.flags;
+ message._qualifier = 0; // This does not seem to be used anywhere. Since qualifiers can be detected by keymapper anyways, this is set to 0.
message._mouse = _mousePos;
- _keyPressed.keycode = Common::KEYCODE_INVALID;
+ _actionPressed = kActionNone;
return &message;
} else
@@ -181,8 +184,8 @@ Common::Point EventManager::updateAndGetMousePos() {
}
void EventManager::simulateEvent() {
- // Simulate an event by setting an unused key
- _keyPressed = Common::KeyState(Common::KEYCODE_SEMICOLON);
+ // Simulate an event by setting an unused action.
+ _actionPressed = kActionDummy;
}
} // End of namespace Lab
diff --git a/engines/lab/eventman.h b/engines/lab/eventman.h
index b7823741c3d..dd0c40f4688 100644
--- a/engines/lab/eventman.h
+++ b/engines/lab/eventman.h
@@ -39,7 +39,7 @@ class Image;
struct IntuiMessage {
MessageClass _msgClass;
- uint16 _code; // KeyCode or Button Id
+ uint16 _code; // Action or Button Id
uint16 _qualifier;
Common::Point _mouse;
};
@@ -53,7 +53,7 @@ private:
bool _buttonHit;
Common::Point _mousePos;
- Common::KeyState _keyPressed;
+ Common::CustomEventType _actionPressed;
public:
EventManager (LabEngine *vm);
diff --git a/engines/lab/interface.cpp b/engines/lab/interface.cpp
index c0e6ffa0eaf..9630a6795be 100644
--- a/engines/lab/interface.cpp
+++ b/engines/lab/interface.cpp
@@ -46,14 +46,14 @@ Interface::Interface(LabEngine *vm) : _vm(vm) {
_hitButton = nullptr;
}
-Button *Interface::createButton(uint16 x, uint16 y, uint16 id, Common::KeyCode key, Image *image, Image *altImage) {
+Button *Interface::createButton(uint16 x, uint16 y, uint16 id, Common::CustomEventType action, Image *image, Image *altImage) {
Button *button = new Button();
if (button) {
button->_x = _vm->_utils->vgaScaleX(x);
button->_y = y;
button->_buttonId = id;
- button->_keyEquiv = key;
+ button->_actionEquiv = action;
button->_image = image;
button->_altImage = altImage;
button->_isEnabled = true;
@@ -91,9 +91,7 @@ void Interface::toggleButton(Button *button, uint16 disabledPenColor, bool enabl
button->_isEnabled = enable;
}
-Button *Interface::checkNumButtonHit(Common::KeyCode key) {
- uint16 gkey = key - '0';
-
+Button *Interface::checkNumButtonHit(Common::CustomEventType action) {
if (!_screenButtonList)
return nullptr;
@@ -101,7 +99,7 @@ Button *Interface::checkNumButtonHit(Common::KeyCode key) {
if (!button->_isEnabled)
continue;
- if ((gkey - 1 == button->_buttonId) || (gkey == 0 && button->_buttonId == 9) || (button->_keyEquiv != Common::KEYCODE_INVALID && key == button->_keyEquiv)) {
+ if ((button->_actionEquiv != kActionNone && action == button->_actionEquiv)) {
button->_altImage->drawImage(button->_x, button->_y);
_vm->_system->delayMillis(80);
button->_image->drawImage(button->_x, button->_y);
diff --git a/engines/lab/interface.h b/engines/lab/interface.h
index 364c90aec52..20435381f4b 100644
--- a/engines/lab/interface.h
+++ b/engines/lab/interface.h
@@ -39,7 +39,7 @@ class Image;
struct Button {
uint16 _x, _y, _buttonId;
- Common::KeyCode _keyEquiv; // the key which activates this button
+ Common::CustomEventType _actionEquiv; // the action which activates this button
bool _isEnabled;
Image *_image, *_altImage;
};
@@ -57,7 +57,7 @@ public:
Interface(LabEngine *vm);
void attachButtonList(ButtonList *buttonList);
- Button *createButton(uint16 x, uint16 y, uint16 id, Common::KeyCode key, Image *image, Image *altImage);
+ Button *createButton(uint16 x, uint16 y, uint16 id, Common::CustomEventType action, Image *image, Image *altImage);
void toggleButton(Button *button, uint16 penColor, bool enable);
/**
@@ -77,7 +77,7 @@ public:
* Checks whether or not the coords fall within one of the buttons in a list
* of buttons.
*/
- Button *checkNumButtonHit(Common::KeyCode key);
+ Button *checkNumButtonHit(Common::CustomEventType action);
void handlePressedButton();
diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp
index 97e3b7dde94..ea8021e32d2 100644
--- a/engines/lab/intro.cpp
+++ b/engines/lab/intro.cpp
@@ -63,7 +63,7 @@ void Intro::introEatMessages() {
return;
if ((msg->_msgClass == kMessageRightClick)
- || ((msg->_msgClass == kMessageRawKey) && (msg->_code == Common::KEYCODE_ESCAPE)))
+ || ((msg->_msgClass == kMessageAction) && (msg->_code == kActionSkipIntro)))
_quitIntro = true;
}
}
@@ -148,7 +148,7 @@ void Intro::doPictText(const Common::String &filename, bool isScreen) {
uint16 code = msg->_code;
if ((msgClass == kMessageRightClick) ||
- ((msgClass == kMessageRawKey) && (code == Common::KEYCODE_ESCAPE))) {
+ ((msgClass == kMessageAction) && (code == kActionSkipIntro))) {
_quitIntro = true;
if (isScreen)
diff --git a/engines/lab/lab.h b/engines/lab/lab.h
index bff3a1a2675..2a5fcca87aa 100644
--- a/engines/lab/lab.h
+++ b/engines/lab/lab.h
@@ -113,7 +113,46 @@ enum MessageClass {
kMessageLeftClick,
kMessageRightClick,
kMessageButtonUp,
- kMessageRawKey
+ kMessageAction
+};
+
+enum LABActions {
+ kActionNone,
+ kActionQuit,
+ kActionSkipIntro,
+ kActionSoundRaise,
+ kActionSoundLower,
+ kActionInteract,
+ kActionTake,
+ kActionMove,
+ kActionOpen,
+ kActionClose,
+ kActionLook,
+ kActionInv,
+ kActionForward,
+ kActionLeft,
+ kActionRight,
+ kActionMap,
+ kActionFocusOnNextInteractiveItem,
+ kActionExit,
+ kActionMainDisplay,
+ kActionSaveLoad,
+ kActionUse,
+ kActionInvLook,
+ kActionPrev,
+ kActionNext,
+ kActionDropBreadcrumb,
+ kActionFollowBreadcrumbs,
+ kActionRunWhileFollowingBreadcrumbs,
+ kActionMapExit,
+ kActionUpperFloor,
+ kActionLowerFloor,
+ kActionQuitDialogYes,
+ kActionQuitDialogNo,
+ kActionJournalBack,
+ kActionJournalExit,
+ kActionJournalForward,
+ kActionDummy,
};
class LabEngine : public Engine {
diff --git a/engines/lab/map.cpp b/engines/lab/map.cpp
index bc00006bc67..2ac696745f8 100644
--- a/engines/lab/map.cpp
+++ b/engines/lab/map.cpp
@@ -41,6 +41,8 @@
#include "lab/resource.h"
#include "lab/utils.h"
+#include "backends/keymapper/keymapper.h"
+
namespace Lab {
/*---------------------------------------------------------------------------*/
@@ -77,9 +79,9 @@ void LabEngine::loadMapData() {
_imgPath = new Image(mapImages, this);
_imgBridge = new Image(mapImages, this);
- _mapButtonList.push_back(_interface->createButton( 8, _utils->vgaScaleY(105), 0, Common::KEYCODE_ESCAPE, new Image(mapImages, this), new Image(mapImages, this))); // back
- _mapButtonList.push_back(_interface->createButton( 55, _utils->vgaScaleY(105), 1, Common::KEYCODE_UP, new Image(mapImages, this), new Image(mapImages, this))); // up
- _mapButtonList.push_back(_interface->createButton(101, _utils->vgaScaleY(105), 2, Common::KEYCODE_DOWN, new Image(mapImages, this), new Image(mapImages, this))); // down
+ _mapButtonList.push_back(_interface->createButton( 8, _utils->vgaScaleY(105), 0, kActionMapExit, new Image(mapImages, this), new Image(mapImages, this))); // back
+ _mapButtonList.push_back(_interface->createButton( 55, _utils->vgaScaleY(105), 1, kActionUpperFloor, new Image(mapImages, this), new Image(mapImages, this))); // up
+ _mapButtonList.push_back(_interface->createButton(101, _utils->vgaScaleY(105), 2, kActionLowerFloor, new Image(mapImages, this), new Image(mapImages, this))); // down
delete mapImages;
@@ -427,7 +429,7 @@ void LabEngine::processMap(uint16 curRoom) {
uint16 mouseX = msg->_mouse.x;
uint16 mouseY = msg->_mouse.y;
- if ((msgClass == kMessageRightClick) || ((msgClass == kMessageRawKey) && (msgCode == Common::KEYCODE_ESCAPE)))
+ if ((msgClass == kMessageRightClick) || ((msgClass == kMessageAction) && (msgCode == kActionExit)))
return;
if (msgClass == kMessageButtonUp) {
diff --git a/engines/lab/metaengine.cpp b/engines/lab/metaengine.cpp
index b09a52405b5..1f9eedf71a0 100644
--- a/engines/lab/metaengine.cpp
+++ b/engines/lab/metaengine.cpp
@@ -30,6 +30,12 @@
#include "lab/lab.h"
#include "engines/advancedDetector.h"
+#include "common/translation.h"
+
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
namespace Lab {
Common::Platform LabEngine::getPlatform() const {
@@ -58,6 +64,7 @@ public:
int getMaximumSaveSlot() const override;
bool removeSaveState(const char *target, int slot) const override;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
+ Common::KeymapArray initKeymaps(const char *target) const override;
};
bool LabMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -135,6 +142,289 @@ SaveStateDescriptor LabMetaEngine::querySaveMetaInfos(const char *target, int sl
return SaveStateDescriptor();
}
+Common::KeymapArray LabMetaEngine::initKeymaps(const char *target) const {
+ using namespace Common;
+ using namespace Lab;
+
+ Keymap *engineKeymap = new Keymap(Keymap::kKeymapTypeGame, "lab-default", _("Default keymappings"));
+ Keymap *exitKeymap = new Keymap(Keymap::kKeymapTypeGame, "exit", _("Exit keymappings"));
+ Keymap *quitDialogKeymap = new Keymap(Keymap::kKeymapTypeGame, "quit-dialog", _("Quit dialog keymappings"));
+ Keymap *gameKeymap = new Keymap(Keymap::kKeymapTypeGame, "game-shortcuts", _("Game keymappings"));
+ Keymap *invKeymap = new Keymap(Keymap::kKeymapTypeGame, "inventory", _("Inventory keymappings"));
+ Keymap *introKeymap = new Keymap(Keymap::kKeymapTypeGame, "intro", _("Intro keymappings"));
+ Keymap *mapKeymap = new Keymap(Keymap::kKeymapTypeGame, "map", _("Map keymappings"));
+ Keymap *journalKeymap = new Keymap(Keymap::kKeymapTypeGame, "journal", _("Journal keymappings"));
+
+ Common::Action *act;
+
+ act = new Common::Action(kStandardActionLeftClick, _("Interact"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ engineKeymap->addAction(act);
+
+ act = new Common::Action(kStandardActionRightClick, _("Exit"));
+ act->setRightClickEvent();
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("JOY_B");
+ engineKeymap->addAction(act);
+
+ act = new Common::Action("QUIT", _("Quit"));
+ act->setCustomEngineActionEvent(kActionQuit);
+ act->addDefaultInputMapping("q");
+ act->addDefaultInputMapping("x");
+ act->addDefaultInputMapping("JOY_DOWN");
+ engineKeymap->addAction(act);
+
+ act = new Common::Action("RAISESOUND", _("Raise the sound volume"));
+ act->setCustomEngineActionEvent(kActionSoundRaise);
+ act->addDefaultInputMapping("RIGHTBRACKET");
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ engineKeymap->addAction(act);
+
+ act = new Common::Action("LOWERSOUND", _("Lower the sound volume"));
+ act->setCustomEngineActionEvent(kActionSoundLower);
+ act->addDefaultInputMapping("LEFTBRACKET");
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ engineKeymap->addAction(act);
+
+ act = new Common::Action("EXIT", _("Exit"));
+ act->setCustomEngineActionEvent(kActionExit);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_Y");
+ exitKeymap->addAction(act);
+
+ act = new Common::Action("YES", _("Yes"));
+ act->setCustomEngineActionEvent(kActionQuitDialogYes);
+ act->addDefaultInputMapping("y");
+ act->addDefaultInputMapping("q");
+ act->addDefaultInputMapping("JOY_A");
+ quitDialogKeymap->addAction(act);
+
+ act = new Common::Action("NO", _("No"));
+ act->setCustomEngineActionEvent(kActionQuitDialogNo);
+ act->addDefaultInputMapping("JOY_B");
+ quitDialogKeymap->addAction(act);
+
+ act = new Common::Action("SKIP_INTRO", _("Skip intro"));
+ act->setCustomEngineActionEvent(kActionSkipIntro);
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_X");
+ introKeymap->addAction(act);
+
+ act = new Common::Action("INTERACT", _("Interact with object with chosen action"));
+ act->setCustomEngineActionEvent(kActionInteract);
+ act->addDefaultInputMapping("RETURN");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("TAKE", _("Take object"));
+ act->setCustomEngineActionEvent(kActionTake);
+ act->addDefaultInputMapping("t");
+ act->addDefaultInputMapping("1");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("MOVE", _("Move or manipulate object"));
+ act->setCustomEngineActionEvent(kActionMove);
+ act->addDefaultInputMapping("m");
+ act->addDefaultInputMapping("2");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("OPEN", _("Open door or object"));
+ act->setCustomEngineActionEvent(kActionOpen);
+ act->addDefaultInputMapping("o");
+ act->addDefaultInputMapping("3");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("CLOSE", _("Close door or object"));
+ act->setCustomEngineActionEvent(kActionClose);
+ act->addDefaultInputMapping("c");
+ act->addDefaultInputMapping("4");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("LOOK", _("Look at object close-up"));
+ act->setCustomEngineActionEvent(kActionLook);
+ act->addDefaultInputMapping("l");
+ act->addDefaultInputMapping("5");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("INVENTORY", _("Switch to inventory display"));
+ act->setCustomEngineActionEvent(kActionInv);
+ act->addDefaultInputMapping("i");
+ act->addDefaultInputMapping("6");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("LEFT", _("Turn left"));
+ act->setCustomEngineActionEvent(kActionLeft);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("7");
+ act->addDefaultInputMapping("JOY_LEFT");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("FORWARD", _("Walk forward"));
+ act->setCustomEngineActionEvent(kActionForward);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("8");
+ act->addDefaultInputMapping("JOY_UP");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("RIGHT", _("Turn right"));
+ act->setCustomEngineActionEvent(kActionRight);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("9");
+ act->addDefaultInputMapping("JOY_RIGHT");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("MAP", _("Show map"));
+ act->setCustomEngineActionEvent(kActionMap);
+ act->addDefaultInputMapping("p");
+ act->addDefaultInputMapping("0");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("FOCUS", _("Move focus to interactive object"));
+ act->setCustomEngineActionEvent(kActionFocusOnNextInteractiveItem);
+ act->addDefaultInputMapping("TAB");
+ act->addDefaultInputMapping("JOY_X");
+ gameKeymap->addAction(act);
+
+ if (parsePlatform(ConfMan.get("platform")) == Common::kPlatformWindows) {
+
+ act = new Common::Action("STARTBREADCRUMB", _("Start dropping virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionDropBreadcrumb);
+ act->addDefaultInputMapping("b");
+ act->addDefaultInputMapping("JOY_LEFT_TRIGGER");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("FOLLOWBREADCRUMBS", _("Follow virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionFollowBreadcrumbs);
+ act->addDefaultInputMapping("f");
+ act->addDefaultInputMapping("JOY_RIGHT_TRIGGER");
+ gameKeymap->addAction(act);
+
+ act = new Common::Action("RUNFOLLOWINGBREADCRUMBS", _("Run while following virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionRunWhileFollowingBreadcrumbs);
+ act->addDefaultInputMapping("r");
+ act->addDefaultInputMapping("JOY_X");
+ gameKeymap->addAction(act);
+ }
+
+ act = new Common::Action("MAINDISPLAY", _("Switch to main display"));
+ act->setCustomEngineActionEvent(kActionMainDisplay);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("1");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("SAVELOAD", _("Open save / load dialog"));
+ act->setCustomEngineActionEvent(kActionSaveLoad);
+ act->addDefaultInputMapping("g");
+ act->addDefaultInputMapping("2");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("USE", _("Use"));
+ act->setCustomEngineActionEvent(kActionUse);
+ act->addDefaultInputMapping("u");
+ act->addDefaultInputMapping("3");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("LOOKSCENE", _("Look at scene"));
+ act->setCustomEngineActionEvent(kActionInvLook);
+ act->addDefaultInputMapping("l");
+ act->addDefaultInputMapping("4");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("PREV", _("Previous inventory item"));
+ act->setCustomEngineActionEvent(kActionPrev);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("5");
+ act->addDefaultInputMapping("JOY_LEFT");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("NEXT", _("Next inventory item"));
+ act->setCustomEngineActionEvent(kActionNext);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("6");
+ act->addDefaultInputMapping("JOY_RIGHT");
+ invKeymap->addAction(act);
+
+
+ if (parsePlatform(ConfMan.get("platform")) == Common::kPlatformWindows) {
+
+ act = new Common::Action("STARTBREADCRUMB", _("Start dropping virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionDropBreadcrumb);
+ act->addDefaultInputMapping("b");
+ act->addDefaultInputMapping("7");
+ act->addDefaultInputMapping("JOY_LEFT_TRIGGER");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("FOLLOWBREADCRUMBS", _("Follow virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionFollowBreadcrumbs);
+ act->addDefaultInputMapping("f");
+ act->addDefaultInputMapping("8");
+ act->addDefaultInputMapping("JOY_RIGHT_TRIGGER");
+ invKeymap->addAction(act);
+
+ act = new Common::Action("RUNFOLLOWINGBREADCRUMBS", _("Run while following virtual bread crumbs"));
+ act->setCustomEngineActionEvent(kActionRunWhileFollowingBreadcrumbs);
+ act->addDefaultInputMapping("r");
+ act->addDefaultInputMapping("JOY_X");
+ invKeymap->addAction(act);
+ }
+
+ act = new Common::Action("EXITMAP", _("Exit map display"));
+ act->setCustomEngineActionEvent(kActionMapExit);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("1");
+ mapKeymap->addAction(act);
+
+ act = new Common::Action("UPLEVEL", _("Up one level"));
+ act->setCustomEngineActionEvent(kActionUpperFloor);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("2");
+ mapKeymap->addAction(act);
+
+ act = new Common::Action("DOWNLEVEL", _("Down one level"));
+ act->setCustomEngineActionEvent(kActionLowerFloor);
+ act->addDefaultInputMapping("DOWN");
+ act->addDefaultInputMapping("3");
+ mapKeymap->addAction(act);
+
+ act = new Common::Action("JOURNALBACK", _("Go back in journal"));
+ act->setCustomEngineActionEvent(kActionJournalBack);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("1");
+ journalKeymap->addAction(act);
+
+ act = new Common::Action("EXITJOURNAL", _("Exit journal"));
+ act->setCustomEngineActionEvent(kActionJournalExit);
+ act->addDefaultInputMapping("2");
+ journalKeymap->addAction(act);
+
+ act = new Common::Action("JOURNALFORWARD", _("Go forward in journal"));
+ act->setCustomEngineActionEvent(kActionJournalForward);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("3");
+ journalKeymap->addAction(act);
+
+ KeymapArray keymaps(8);
+
+ keymaps[0] = engineKeymap;
+ keymaps[1] = exitKeymap;
+ keymaps[2] = gameKeymap;
+ keymaps[3] = invKeymap;
+ keymaps[4] = introKeymap;
+ keymaps[5] = mapKeymap;
+ keymaps[6] = quitDialogKeymap;
+ keymaps[7] = journalKeymap;
+
+ invKeymap->setEnabled(false);
+ introKeymap->setEnabled(false);
+ mapKeymap->setEnabled(false);
+ quitDialogKeymap->setEnabled(false);
+ journalKeymap->setEnabled(false);
+
+ return keymaps;
+}
+
#if PLUGIN_ENABLED_DYNAMIC(LAB)
REGISTER_PLUGIN_DYNAMIC(LAB, PLUGIN_TYPE_ENGINE, LabMetaEngine);
#else
diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp
index e5966af270b..a4e73f5af62 100644
--- a/engines/lab/special.cpp
+++ b/engines/lab/special.cpp
@@ -130,9 +130,9 @@ void LabEngine::loadJournalData() {
_journalTextTitle = _resource->getText("Lab:Rooms/jt");
Common::File *journalFile = _resource->openDataFile("P:JImage");
- _journalButtonList.push_back(_interface->createButton( 80, _utils->vgaScaleY(162) + _utils->svgaCord(1), 0, Common::KEYCODE_LEFT, new Image(journalFile, this), new Image(journalFile, this))); // back
- _journalButtonList.push_back(_interface->createButton(194, _utils->vgaScaleY(162) + _utils->svgaCord(1), 2, Common::KEYCODE_RIGHT, new Image(journalFile, this), new Image(journalFile, this))); // forward
- _journalButtonList.push_back(_interface->createButton(144, _utils->vgaScaleY(164) - _utils->svgaCord(1), 1, Common::KEYCODE_ESCAPE, new Image(journalFile, this), new Image(journalFile, this))); // cancel
+ _journalButtonList.push_back(_interface->createButton( 80, _utils->vgaScaleY(162) + _utils->svgaCord(1), 0, kActionJournalBack, new Image(journalFile, this), new Image(journalFile, this))); // back
+ _journalButtonList.push_back(_interface->createButton(194, _utils->vgaScaleY(162) + _utils->svgaCord(1), 2, kActionJournalForward, new Image(journalFile, this), new Image(journalFile, this))); // forward
+ _journalButtonList.push_back(_interface->createButton(144, _utils->vgaScaleY(164) - _utils->svgaCord(1), 1, kActionJournalExit, new Image(journalFile, this), new Image(journalFile, this))); // cancel
delete journalFile;
_anim->_noPalChange = true;
@@ -239,7 +239,7 @@ void LabEngine::processJournal() {
MessageClass msgClass = msg->_msgClass;
if ((msgClass == kMessageRightClick) ||
- ((msgClass == kMessageRawKey) && (msg->_code == Common::KEYCODE_ESCAPE)))
+ ((msgClass == kMessageAction) && (msg->_code == kActionExit)))
return;
else if (msgClass == kMessageButtonUp) {
uint16 buttonId = msg->_code;
@@ -383,7 +383,7 @@ void LabEngine::processMonitor(const Common::String &ntext, TextFont *monitorFon
MessageClass msgClass = msg->_msgClass;
if ((msgClass == kMessageRightClick) ||
- ((msgClass == kMessageRawKey) && (msg->_code == Common::KEYCODE_ESCAPE)))
+ ((msgClass == kMessageAction) && (msg->_code == kActionExit)))
return;
if (msgClass == kMessageLeftClick) {
More information about the Scummvm-git-logs
mailing list