[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