[Scummvm-git-logs] scummvm master -> f89fb93a12bcfd60401526b5063050da88157b60
Strangerke
noreply at scummvm.org
Wed Apr 19 23:26:08 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f89fb93a12 EFH: Implement more original key mappings (ctrl-S, ctrl-L), add the possibility to exit the game without finishing the g
Commit: f89fb93a12bcfd60401526b5063050da88157b60
https://github.com/scummvm/scummvm/commit/f89fb93a12bcfd60401526b5063050da88157b60
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2023-04-20T00:26:00+01:00
Commit Message:
EFH: Implement more original key mappings (ctrl-S, ctrl-L), add the possibility to exit the game without finishing the game first
Changed paths:
engines/efh/efh.cpp
engines/efh/efh.h
engines/efh/utils.cpp
diff --git a/engines/efh/efh.cpp b/engines/efh/efh.cpp
index c15711b70e9..e7f17c4d12f 100644
--- a/engines/efh/efh.cpp
+++ b/engines/efh/efh.cpp
@@ -164,7 +164,7 @@ Common::Error EfhEngine::run() {
_redrawNeededFl = true;
}
break;
- case Common::KEYCODE_F5: { // Original is using CTRL-S
+ case Common::KEYCODE_F5: { // Original is using CTRL-S, which is mapped to F5 in utils
for (uint counter = 0; counter < 2; ++counter) {
clearBottomTextZone(0);
displayCenteredString("Are You Sure You Want To Save?", 24, 296, 160);
@@ -185,7 +185,7 @@ Common::Error EfhEngine::run() {
}
break;
- case Common::KEYCODE_F7: { // Original is using CTRL-L
+ case Common::KEYCODE_F7: { // Original is using CTRL-L, which is mapped to F7 in utils
for (uint counter = 0; counter < 2; ++counter) {
clearBottomTextZone(0);
displayCenteredString("Are You Sure You Want To Load?", 24, 296, 160);
diff --git a/engines/efh/efh.h b/engines/efh/efh.h
index b09cf1e2769..af9727af9d1 100644
--- a/engines/efh/efh.h
+++ b/engines/efh/efh.h
@@ -510,6 +510,7 @@ private:
int16 getRandom(int16 maxVal);
Common::KeyCode getLastCharAfterAnimCount(int16 delay);
Common::KeyCode getInput(int16 delay);
+ Common::KeyCode getKeyCode(const Common::Event & event);
Common::KeyCode waitForKey();
Common::KeyCode mapInputCode(Common::KeyCode input);
Common::KeyCode handleAndMapInput(bool animFl);
diff --git a/engines/efh/utils.cpp b/engines/efh/utils.cpp
index 6eba099c0bf..9afb5926704 100644
--- a/engines/efh/utils.cpp
+++ b/engines/efh/utils.cpp
@@ -151,7 +151,7 @@ Common::KeyCode EfhEngine::getLastCharAfterAnimCount(int16 delay) {
Common::KeyCode lastChar = Common::KEYCODE_INVALID;
uint32 lastMs = _system->getMillis();
- while (delay > 0 && lastChar == Common::KEYCODE_INVALID) {
+ while (delay > 0 && lastChar == Common::KEYCODE_INVALID && !shouldQuit()) {
_system->delayMillis(20);
uint32 newMs = _system->getMillis();
@@ -176,7 +176,7 @@ Common::KeyCode EfhEngine::getInput(int16 delay) {
Common::KeyCode retVal = Common::KEYCODE_INVALID;
uint32 lastMs = _system->getMillis();
- while (delay > 0) {
+ while (delay > 0 && !shouldQuit()) {
_system->delayMillis(20);
uint32 newMs = _system->getMillis();
@@ -194,13 +194,39 @@ Common::KeyCode EfhEngine::getInput(int16 delay) {
return retVal;
}
+Common::KeyCode EfhEngine::getKeyCode(const Common::Event &event) {
+ Common::KeyCode retVal = event.kbd.keycode;
+ if (retVal == Common::KEYCODE_LCTRL || retVal == Common::KEYCODE_RCTRL || retVal == Common::KEYCODE_RALT || retVal == Common::KEYCODE_LALT)
+ retVal = Common::KEYCODE_INVALID;
+ else if (event.kbd.flags & Common::KBD_CTRL) {
+ switch (retVal) {
+ case Common::KEYCODE_l:
+ retVal = Common::KEYCODE_F7;
+ break;
+ case Common::KEYCODE_s:
+ retVal = Common::KEYCODE_F5;
+ break;
+ case Common::KEYCODE_x:
+ case Common::KEYCODE_q:
+ _shouldQuit = true;
+ break;
+ default:
+ break;
+ }
+ } else if (event.kbd.flags & Common::KBD_ALT && retVal == Common::KEYCODE_F4) {
+ _shouldQuit = true;
+ }
+
+ return retVal;
+}
+
Common::KeyCode EfhEngine::waitForKey() {
debugC(1, kDebugUtils, "waitForKey");
Common::KeyCode retVal = Common::KEYCODE_INVALID;
Common::Event event;
uint32 lastMs = _system->getMillis();
- while (retVal == Common::KEYCODE_INVALID) { // TODO: Check shouldquit()
+ while (retVal == Common::KEYCODE_INVALID && !shouldQuit()) {
_system->delayMillis(20);
uint32 newMs = _system->getMillis();
@@ -210,9 +236,8 @@ Common::KeyCode EfhEngine::waitForKey() {
}
_system->getEventManager()->pollEvent(event);
- if (event.type == Common::EVENT_KEYUP) {
- retVal = event.kbd.keycode;
- }
+ if (event.type == Common::EVENT_KEYUP)
+ retVal = getKeyCode(event);
}
return retVal;
@@ -236,12 +261,11 @@ Common::KeyCode EfhEngine::handleAndMapInput(bool animFl) {
Common::KeyCode retVal = Common::KEYCODE_INVALID;
uint32 lastMs = _system->getMillis();
- while (retVal == Common::KEYCODE_INVALID) {
+ while (retVal == Common::KEYCODE_INVALID && !shouldQuit()) {
_system->getEventManager()->pollEvent(event);
- if (event.type == Common::EVENT_KEYUP) {
- retVal = event.kbd.keycode;
- }
+ if (event.type == Common::EVENT_KEYUP)
+ retVal = getKeyCode(event);
if (animFl) {
_system->delayMillis(20);
@@ -265,12 +289,11 @@ Common::KeyCode EfhEngine::getInputBlocking() {
Common::KeyCode retVal = Common::KEYCODE_INVALID;
uint32 lastMs = _system->getMillis();
- while (retVal == Common::KEYCODE_INVALID) {
+ while (retVal == Common::KEYCODE_INVALID && !shouldQuit()) {
_system->getEventManager()->pollEvent(event);
- if (event.type == Common::EVENT_KEYUP) {
- retVal = event.kbd.keycode;
- }
+ if (event.type == Common::EVENT_KEYUP)
+ retVal = getKeyCode(event);
_system->delayMillis(20);
uint32 newMs = _system->getMillis();
More information about the Scummvm-git-logs
mailing list