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

bluegr noreply at scummvm.org
Mon Oct 20 23:26:50 UTC 2025


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

Summary:
a22f7e5510 COMMON: Lookup the sub directory cache for isPathDirectory()
5bc9b28e4d TETRAEDGE: Handle menu differences in Syberia 2
003280e157 TETRAEDGE: Slight cleanup and changes to comments
a1b52007c1 TETRAEDGE: Initial handling of the options menu in Amerzone
ee7c4d234a ZVISION: Don't use boolean variables for numeric operations


Commit: a22f7e551088ae7a28ebd80f5d4047943dead2ba
    https://github.com/scummvm/scummvm/commit/a22f7e551088ae7a28ebd80f5d4047943dead2ba
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-10-21T02:25:53+03:00

Commit Message:
COMMON: Lookup the sub directory cache for isPathDirectory()

This is a fix proposed by @antoniou79, and it addresses the issue
with the missing icon animations in Syberia 1 + 2 (part of bug #15999)

Changed paths:
    common/fs.cpp


diff --git a/common/fs.cpp b/common/fs.cpp
index c61b1978b73..7dd97993956 100644
--- a/common/fs.cpp
+++ b/common/fs.cpp
@@ -352,7 +352,7 @@ bool FSDirectory::isPathDirectory(const Path &path) const {
 	if (path.empty() || !_node.isDirectory())
 		return false;
 
-	FSNode *node = lookupCache(_fileCache, path);
+	FSNode *node = lookupCache(_subDirCache, path);
 	return node && node->isDirectory();
 }
 


Commit: 5bc9b28e4d28aecf4d1dd930f1522a3ba7ab8812
    https://github.com/scummvm/scummvm/commit/5bc9b28e4d28aecf4d1dd930f1522a3ba7ab8812
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-10-21T02:25:55+03:00

Commit Message:
TETRAEDGE: Handle menu differences in Syberia 2

Syberia 2 does not have a full screen animated video for its menus,
like Syberia 1 does. All of its menus are handled by LUA scripts, which
call different menu animations. Fixes crashes because of missing menu
videos (menu.ogv) in Syberia 2

Changed paths:
    engines/tetraedge/game/main_menu.cpp
    engines/tetraedge/game/options_menu.cpp


diff --git a/engines/tetraedge/game/main_menu.cpp b/engines/tetraedge/game/main_menu.cpp
index daa27d0d026..e03e3dfd0c1 100644
--- a/engines/tetraedge/game/main_menu.cpp
+++ b/engines/tetraedge/game/main_menu.cpp
@@ -60,7 +60,7 @@ void MainMenu::enter() {
 
 	TeSpriteLayout &appSpriteLayout = app->appSpriteLayout();
 	appSpriteLayout.setVisible(true);
-	if (!appSpriteLayout._tiledSurfacePtr->_frameAnim._runTimer.running()) {
+	if (!appSpriteLayout._tiledSurfacePtr->_frameAnim._runTimer.running() && g_engine->gameType() == TetraedgeEngine::kSyberia) {
 		appSpriteLayout.load("menus/menu.ogv");
 		appSpriteLayout._tiledSurfacePtr->_frameAnim.setLoopCount(-1);
 		appSpriteLayout._tiledSurfacePtr->play();
diff --git a/engines/tetraedge/game/options_menu.cpp b/engines/tetraedge/game/options_menu.cpp
index b87046da09f..5f1fe164394 100644
--- a/engines/tetraedge/game/options_menu.cpp
+++ b/engines/tetraedge/game/options_menu.cpp
@@ -39,7 +39,7 @@ OptionsMenu::OptionsMenu() : _tutoPage(1) {
 void OptionsMenu::enter() {
 	Application *app = g_engine->getApplication();
 
-	if (!app->appSpriteLayout()._tiledSurfacePtr->isLoaded()) {
+	if (!app->appSpriteLayout()._tiledSurfacePtr->isLoaded() && g_engine->gameType() == TetraedgeEngine::kSyberia) {
 		// TODO: Check
 		app->appSpriteLayout().load("menus/menu.ogv");
 		app->appSpriteLayout().play();


Commit: 003280e157cdd119c6ad90d578928b4518be8f7e
    https://github.com/scummvm/scummvm/commit/003280e157cdd119c6ad90d578928b4518be8f7e
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-10-21T02:25:56+03:00

Commit Message:
TETRAEDGE: Slight cleanup and changes to comments

Changed paths:
    engines/tetraedge/te/te_core.cpp


diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 5c724ad5af3..8608703d9d9 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -160,9 +160,9 @@ static void _findFileRecursively(const TetraedgeFSNode &parent,
 				 const Common::String &fname,
 				 Common::Array<TetraedgeFSNode> &foundFiles,
 				 int maxDepth) {
-	if (parent.getChild(Common::Path(fname, '/')).exists()) {
-		foundFiles.push_back(parent.getChild(Common::Path(fname, '/')));
-	}
+	TetraedgeFSNode child = parent.getChild(Common::Path(fname, '/'));
+	if (child.exists())
+		foundFiles.push_back(child);
 
 	if (maxDepth <= 0)
 		return;
@@ -203,11 +203,11 @@ TetraedgeFSNode TeCore::findFile(const Common::Path &path, bool quiet) const {
 	     it != _fileSystemFlags.end(); it++)
 		activeFlags[it->_value] = true;
 
-	// This is to keep behivour changes small when we migrated from old system.
+	// This is to minimize functionality changes from the previous implementation.
 	// I'm not sure if it's needed
-	// TODO: Figure out what to do with this. Right now we set flag
+	// TODO: Figure out what to do with this. Right now we set the flag
 	// to "SD" but use assets from "HD". This seems to give the best
-	// results but is fundamentally wrong.
+	// results, but is fundamentally wrong.
 	activeFlags.erase("SD");
 	activeFlags["HD"] = true;
 


Commit: a1b52007c13e00ca612be7681bf7358f587da514
    https://github.com/scummvm/scummvm/commit/a1b52007c13e00ca612be7681bf7358f587da514
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-10-21T02:25:57+03:00

Commit Message:
TETRAEDGE: Initial handling of the options menu in Amerzone

It's still not working, but at least it's not crashing anymore

Changed paths:
    engines/tetraedge/game/credits.cpp
    engines/tetraedge/game/options_menu.cpp


diff --git a/engines/tetraedge/game/credits.cpp b/engines/tetraedge/game/credits.cpp
index fab8e05cff3..f747647ce01 100644
--- a/engines/tetraedge/game/credits.cpp
+++ b/engines/tetraedge/game/credits.cpp
@@ -36,7 +36,10 @@ void Credits::enter(bool returnToOptions) {
 	_animCounter = 0;
 	_timer.start();
 	// TODO: set _field0x50 = 0;
-	_gui.load("menus/credits/credits.lua");
+	if (!g_engine->gameIsAmerzone())
+		_gui.load("menus/credits/credits.lua");
+	else
+		_gui.load("GUI/Credits.lua");
 	Application *app = g_engine->getApplication();
 	app->frontLayout().addChild(_gui.layoutChecked("menu"));
 
diff --git a/engines/tetraedge/game/options_menu.cpp b/engines/tetraedge/game/options_menu.cpp
index 5f1fe164394..dfed211c0fa 100644
--- a/engines/tetraedge/game/options_menu.cpp
+++ b/engines/tetraedge/game/options_menu.cpp
@@ -40,7 +40,6 @@ void OptionsMenu::enter() {
 	Application *app = g_engine->getApplication();
 
 	if (!app->appSpriteLayout()._tiledSurfacePtr->isLoaded() && g_engine->gameType() == TetraedgeEngine::kSyberia) {
-		// TODO: Check
 		app->appSpriteLayout().load("menus/menu.ogv");
 		app->appSpriteLayout().play();
 	}
@@ -48,14 +47,15 @@ void OptionsMenu::enter() {
 	if (!g_engine->gameIsAmerzone()) {
 		load("menus/options/optionsMenu.lua");
 		_gui2.load("menus/options/tuto.lua");
+
+		app->frontLayout().addChild(layoutChecked("menu2"));
+		app->frontLayout().addChild(_gui2.buttonLayoutChecked("tuto"));
+		_gui2.buttonLayoutChecked("tuto")->setVisible(false);
 	} else {
 		load("GUI/OptionsMenu.lua");
-		_gui2.load("menus/options/tuto.lua");	// TODO: This is wrong
-	}
 
-	app->frontLayout().addChild(layoutChecked("menu2"));
-	app->frontLayout().addChild(_gui2.buttonLayoutChecked("tuto"));
-	_gui2.buttonLayoutChecked("tuto")->setVisible(false);
+		app->frontLayout().addChild(layoutChecked("menu2"));
+	}
 
 	const Common::Path musicPath(value("musicPath").toString());
 	if (!app->music().isPlaying() || (app->music().getAccessName() != musicPath)) {
@@ -64,52 +64,57 @@ void OptionsMenu::enter() {
 		app->music().volume(1.0);
 	}
 
-	Tetraedge::TeButtonLayout *quitButton = buttonLayout("quitButton");
-	if (quitButton) {
+	TeButtonLayout *quitButton = buttonLayout("quitButton");
+	if (quitButton)
 		quitButton->onMouseClickValidated().add(this, &OptionsMenu::onQuitButton);
-	}
 	buttonLayoutChecked("creditsButton")->onMouseClickValidated().add(this, &OptionsMenu::onCreditsButton);
 	TeButtonLayout *supportBtn = buttonLayout("supportButton");
-	if (supportBtn) {
+	if (supportBtn)
 		supportBtn->onMouseClickValidated().add(this, &OptionsMenu::onSupportButton);
-	}
 	TeButtonLayout *termsBtn = buttonLayout("termsButton");
-	if (termsBtn) {
+	if (termsBtn)
 		termsBtn->onMouseClickValidated().add(this, &OptionsMenu::onTermsOfServiceButton);
-	}
 	TeButtonLayout *privBtn = buttonLayout("privacyButton");
-	if (privBtn) {
+	if (privBtn)
 		privBtn->onMouseClickValidated().add(this, &OptionsMenu::onPrivacyPolicyButton);
-	}
 
-	buttonLayoutChecked("sfxVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onSFXVolumeMinusButton);
-	buttonLayoutChecked("sfxVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onSFXVolumePlusButton);
-	buttonLayoutChecked("musicVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onMusicVolumeMinusButton);
-	buttonLayoutChecked("musicVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onMusicVolumePlusButton);
-	buttonLayoutChecked("dialogVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onDialogVolumeMinusButton);
-	buttonLayoutChecked("dialogVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onDialogVolumePlusButton);
-	buttonLayoutChecked("videoVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onVideoVolumeMinusButton);
-	buttonLayoutChecked("videoVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onVideoVolumePlusButton);
-	buttonLayoutChecked("sfxVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("sfxVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("musicVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("musicVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("dialogVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("dialogVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("videoVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
-	buttonLayoutChecked("videoVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
-
-	_tutoPage = 1;
-	buttonLayoutChecked("tutoButton")->onMouseClickValidated().add(this, &OptionsMenu::onVisibleTuto);
-
-	TeLayout *bg = _gui2.layoutChecked("background");
-	for (int i = 1; i <= bg->childCount(); i++) {
-		TeButtonLayout *page = _gui2.buttonLayoutChecked(pageStr(i));
-		if (i == bg->childCount()) {
-			page->onMouseClickValidated().add(this, &OptionsMenu::onCloseTuto);
-		} else {
-			page->onMouseClickValidated().add(this, &OptionsMenu::onVisibleTutoNextPage);
+	if (!g_engine->gameIsAmerzone()) {
+		buttonLayoutChecked("sfxVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onSFXVolumeMinusButton);
+		buttonLayoutChecked("sfxVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onSFXVolumePlusButton);
+		buttonLayoutChecked("musicVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onMusicVolumeMinusButton);
+		buttonLayoutChecked("musicVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onMusicVolumePlusButton);
+		buttonLayoutChecked("dialogVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onDialogVolumeMinusButton);
+		buttonLayoutChecked("dialogVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onDialogVolumePlusButton);
+		buttonLayoutChecked("videoVolumeMinusButton")->onMouseClickValidated().add(this, &OptionsMenu::onVideoVolumeMinusButton);
+		buttonLayoutChecked("videoVolumePlusButton")->onMouseClickValidated().add(this, &OptionsMenu::onVideoVolumePlusButton);
+		buttonLayoutChecked("sfxVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("sfxVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("musicVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("musicVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("dialogVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("dialogVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("videoVolumeMinusButton")->setDoubleValidationProtectionEnabled(false);
+		buttonLayoutChecked("videoVolumePlusButton")->setDoubleValidationProtectionEnabled(false);
+
+		_tutoPage = 1;
+		buttonLayoutChecked("tutoButton")->onMouseClickValidated().add(this, &OptionsMenu::onVisibleTuto);
+
+		TeLayout *bg = _gui2.layoutChecked("background");
+		for (int i = 1; i <= bg->childCount(); i++) {
+			TeButtonLayout *page = _gui2.buttonLayoutChecked(pageStr(i));
+			if (i == bg->childCount()) {
+				page->onMouseClickValidated().add(this, &OptionsMenu::onCloseTuto);
+			} else {
+				page->onMouseClickValidated().add(this, &OptionsMenu::onVisibleTutoNextPage);
+			}
 		}
+	} else {
+		// Amerzone has no volume controls
+
+		// TODO: musicOn checkbox
+		// TODO: permanentHelp checkbox
+		// TODO: inverseLook checkbox
+		// TODO: compassLook checkbox
 	}
 
 	//
@@ -122,7 +127,6 @@ void OptionsMenu::enter() {
 	updateMusicVolumeJauge();
 	updateDialogVolumeJauge();
 	updateVideoVolumeJauge();
-	return;
 }
 
 void OptionsMenu::leave() {


Commit: ee7c4d234a9a36d825b1df17cc49e253c06732bb
    https://github.com/scummvm/scummvm/commit/ee7c4d234a9a36d825b1df17cc49e253c06732bb
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2025-10-21T02:25:58+03:00

Commit Message:
ZVISION: Don't use boolean variables for numeric operations

Fixes MSVC warning C4804: '<=': unsafe use of type 'bool' in operation

Changed paths:
    engines/zvision/scripting/script_manager.cpp


diff --git a/engines/zvision/scripting/script_manager.cpp b/engines/zvision/scripting/script_manager.cpp
index b40f9ff39d7..e5d124fc152 100644
--- a/engines/zvision/scripting/script_manager.cpp
+++ b/engines/zvision/scripting/script_manager.cpp
@@ -104,7 +104,8 @@ void ScriptManager::process(uint deltaTimeMillis) {
 	// Another idea would be to change if there are pending scripts
 	// in the exec queues, but that could cause this to hang
 	// indefinitely.
-	for (uint8 pass = 0; pass <= changingLocation() ? _changeLocationExtraCycles : 0; pass++) {
+	const uint8 maxPass = changingLocation() ? 0 : 1;
+	for (uint8 pass = 0; pass <= maxPass ? _changeLocationExtraCycles : 0; pass++) {
 		updateNodes(pass == 0 ? deltaTimeMillis : 0);
 		debugC(5, kDebugLoop, "Script nodes updated");
 		if (!execScope(_nodeview))




More information about the Scummvm-git-logs mailing list