[Scummvm-git-logs] scummvm master -> e2f3202b677add9b0025ea7f497db613d74ff3a7

bluegr noreply at scummvm.org
Mon Apr 7 11:16:18 UTC 2025


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e307273219 AGOS: Fix key handling in save/load screens, after key mapper changes
9f57f7cab9 AGOS: Fix cutscene skip key handling in Feeble Files
e2f3202b67 AGOS: Add hotkey to toggle between combat and movement mode in Waxworks


Commit: e307273219bc1afb3c8520143c422b4b5e792131
    https://github.com/scummvm/scummvm/commit/e307273219bc1afb3c8520143c422b4b5e792131
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-04-07T14:15:16+03:00

Commit Message:
AGOS: Fix key handling in save/load screens, after key mapper changes

Keys in certain save/load screens, such as in Elvira 1, were not
handled correctly

Changed paths:
    engines/agos/agos.h
    engines/agos/input_pn.cpp
    engines/agos/saveload.cpp
    engines/agos/script.cpp
    engines/agos/script_ff.cpp


diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index b14b76d7147..648adf57057 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -1371,6 +1371,7 @@ protected:
 	int countSaveGames();
 
 	virtual Common::String genSaveName(int slot) const;
+	void enterSaveLoadScreen(bool entering);
 };
 
 class AGOSEngine_PN : public AGOSEngine {
diff --git a/engines/agos/input_pn.cpp b/engines/agos/input_pn.cpp
index cb9ab1c4b2b..a078f0b569e 100644
--- a/engines/agos/input_pn.cpp
+++ b/engines/agos/input_pn.cpp
@@ -35,8 +35,7 @@ void AGOSEngine_PN::handleKeyboard() {
 		return;
 
 	if (_keymapEnabled) {
-		Common::Keymapper *keymapper = AGOSEngine::getEventManager()->getKeymapper();
-		keymapper->getKeymap("game-shortcuts")->setEnabled(false);
+		getEventManager()->getKeymapper()->getKeymap("game-shortcuts")->setEnabled(false);
 		_keymapEnabled = false;
 	}
 
@@ -84,8 +83,7 @@ void AGOSEngine_PN::handleKeyboard() {
 		_mousePrintFG = 0;
 		_inputReady = false;
 		if (!_keymapEnabled) {
-			Common::Keymapper *keymapper = AGOSEngine::getEventManager()->getKeymapper();
-			keymapper->getKeymap("game-shortcuts")->setEnabled(true);
+			getEventManager()->getKeymapper()->getKeymap("game-shortcuts")->setEnabled(true);
 			_keymapEnabled = true;
 		}
 	}
diff --git a/engines/agos/saveload.cpp b/engines/agos/saveload.cpp
index 62c9518ce7b..9161fc54fab 100644
--- a/engines/agos/saveload.cpp
+++ b/engines/agos/saveload.cpp
@@ -290,6 +290,11 @@ int16 AGOSEngine::matchSaveGame(const char *name, uint16 max) {
 	return -1;
 }
 
+void AGOSEngine::enterSaveLoadScreen(bool entering) {
+	_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, entering);
+	getEventManager()->getKeymapper()->getKeymap("game-shortcuts")->setEnabled(!entering);
+}
+
 void AGOSEngine::userGame(bool load) {
 	WindowBlock *window = _windowArray[4];
 	const char *message1;
@@ -495,9 +500,6 @@ void AGOSEngine_Elvira2::userGame(bool load) {
 
 	listSaveGames();
 
-	Common::Keymapper *keymapper = AGOSEngine::getEventManager()->getKeymapper();
-	keymapper->getKeymap("game-shortcuts")->setEnabled(false);
-
 	if (!load) {
 		WindowBlock *window = _windowArray[num];
 		int16 slot = -1;
@@ -569,8 +571,6 @@ get_out:;
 
 	if (getGameType() == GType_ELVIRA2)
 		restartAnimation();
-
-	keymapper->getKeymap("game-shortcuts")->setEnabled(true);
 }
 
 int AGOSEngine_Elvira2::userGameGetKey(bool *b, uint maxChar) {
@@ -720,9 +720,6 @@ void AGOSEngine_Simon1::userGame(bool load) {
 restart:;
 	i = userGameGetKey(&b, maxChar);
 
-	Common::Keymapper *keymapper = AGOSEngine::getEventManager()->getKeymapper();
-	keymapper->getKeymap("game-shortcuts")->setEnabled(false);
-
 	if (i == 205)
 		goto get_out;
 	if (!load) {
@@ -842,8 +839,6 @@ get_out:;
 	disableFileBoxes();
 
 	_gameStoppedClock = getTime() - saveTime + _gameStoppedClock;
-
-	keymapper->getKeymap("game-shortcuts")->setEnabled(true);
 }
 
 int AGOSEngine_Simon1::userGameGetKey(bool *b, uint maxChar) {
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index c49ead73f99..31bdeac3415 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -811,9 +811,9 @@ void AGOSEngine::o_saveUserGame() {
 			fileError(_windowArray[5], true);
 		}
 	} else {
-		_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
+		enterSaveLoadScreen(true);
 		userGame(false);
-		_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false);
+		enterSaveLoadScreen(false);
 	}
 }
 
@@ -826,9 +826,9 @@ void AGOSEngine::o_loadUserGame() {
 			fileError(_windowArray[5], false);
 		}
 	} else {
-		_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
+		enterSaveLoadScreen(true);
 		userGame(true);
-		_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false);
+		enterSaveLoadScreen(false);
 	}
 }
 
diff --git a/engines/agos/script_ff.cpp b/engines/agos/script_ff.cpp
index 80a7970dd9d..295a47c0ad0 100644
--- a/engines/agos/script_ff.cpp
+++ b/engines/agos/script_ff.cpp
@@ -448,9 +448,9 @@ void AGOSEngine_Feeble::off_setTime() {
 void AGOSEngine_Feeble::off_saveUserGame() {
 	// 132: save game
 	_noOracleScroll = 0;
-	_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
+	enterSaveLoadScreen(true);
 	saveUserGame(countSaveGames() + 1 - readVariable(55));
-	_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false);
+	enterSaveLoadScreen(false);
 }
 
 void AGOSEngine_Feeble::off_loadUserGame() {


Commit: 9f57f7cab99709ff084a446aad63fa12de092c3f
    https://github.com/scummvm/scummvm/commit/9f57f7cab99709ff084a446aad63fa12de092c3f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-04-07T14:15:18+03:00

Commit Message:
AGOS: Fix cutscene skip key handling in Feeble Files

Changed paths:
    engines/agos/animation.cpp


diff --git a/engines/agos/animation.cpp b/engines/agos/animation.cpp
index df47d252dd3..23f75c32db5 100644
--- a/engines/agos/animation.cpp
+++ b/engines/agos/animation.cpp
@@ -102,7 +102,7 @@ void MoviePlayer::handleNextFrame() {
 	Common::EventManager *eventMan = _vm->_system->getEventManager();
 	while (eventMan->pollEvent(event)) {
 		switch (event.type) {
-		case Common::EVENT_CUSTOM_BACKEND_ACTION_START:
+		case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
 			if (event.customType == kActionExitCutscene) {
 				_leftButtonDown = true;
 				_rightButtonDown = true;


Commit: e2f3202b677add9b0025ea7f497db613d74ff3a7
    https://github.com/scummvm/scummvm/commit/e2f3202b677add9b0025ea7f497db613d74ff3a7
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-04-07T14:15:19+03:00

Commit Message:
AGOS: Add hotkey to toggle between combat and movement mode in Waxworks

Implements / fixes feature request #10311

Changed paths:
    engines/agos/agos.h
    engines/agos/event.cpp
    engines/agos/metaengine.cpp


diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 648adf57057..fb30efcc2d3 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -94,6 +94,7 @@ enum AGOSAction {
 	kActionToggleHitboxName,
 	kActionToggleSoundEffects,
 	kActionToggleBackgroundSound,
+	kActionToggleFightMode,
 	kActionShowObjects,
 	kActionTextSpeedFast,
 	kActionTextSpeedMedium,
diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp
index db3ba14427b..9bafe17778b 100644
--- a/engines/agos/event.cpp
+++ b/engines/agos/event.cpp
@@ -471,6 +471,16 @@ void AGOSEngine::delay(uint amount) {
 				_action = (AGOSAction)event.customType;
 				if (event.customType == kActionToggleFastMode) {
 					_fastMode = !_fastMode;
+				} else if (event.customType == kActionToggleFightMode && getGameId() == GID_WAXWORKS) {
+					HitArea *fightButton = findBox(117);
+
+					if (fightButton && !(fightButton->flags & kBFBoxDead)) {
+						_needHitAreaRecalc++;
+						_lastHitArea = fightButton;
+
+						// Switch between normal cursor (0) and fighting mode (3)
+						_mouseCursor = (_mouseCursor == 3) ? 0 : 3;
+					}
 				}
 				break;
 			case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
diff --git a/engines/agos/metaengine.cpp b/engines/agos/metaengine.cpp
index 9046e80a0e0..5a8ba448bd7 100644
--- a/engines/agos/metaengine.cpp
+++ b/engines/agos/metaengine.cpp
@@ -310,6 +310,14 @@ Common::KeymapArray AgosMetaEngine::initKeymaps(const char *target) const {
 		act->addDefaultInputMapping("RIGHT");
 		act->addDefaultInputMapping("JOY_RIGHT");
 		gameKeyMap->addAction(act);
+
+		if (gameId == "waxworks") {
+			act = new Action("TOGGLEFIGHTMODE", _("Toggle fight mode")); // KEYCODE_F
+			act->setCustomEngineActionEvent(kActionToggleFightMode);
+			act->addDefaultInputMapping("f");
+			act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+			gameKeyMap->addAction(act);
+		}
 	}
 
 	if (gameId == "simon1" || gameId == "simon2") {




More information about the Scummvm-git-logs mailing list