[Scummvm-git-logs] scummvm master -> 7bbe0f530d32e8504aa03b6c4970da12a4708ea8

mduggan noreply at scummvm.org
Mon Mar 13 09:14:52 UTC 2023


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

Summary:
31aeb928fc TETRAEDGE: Fix coverity-identified potential null pointer
7bbe0f530d TETRAEDGE: Add ability to pick different languages


Commit: 31aeb928fcc4064f6c2756cedc6a14a3a152c24a
    https://github.com/scummvm/scummvm/commit/31aeb928fcc4064f6c2756cedc6a14a3a152c24a
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-13T17:26:35+09:00

Commit Message:
TETRAEDGE: Fix coverity-identified potential null pointer

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


diff --git a/engines/tetraedge/game/credits.cpp b/engines/tetraedge/game/credits.cpp
index c7dd4209830..c090925713d 100644
--- a/engines/tetraedge/game/credits.cpp
+++ b/engines/tetraedge/game/credits.cpp
@@ -117,7 +117,7 @@ void Credits::enter(bool returnToOptions) {
 		_curveAnim._callbackObj = foreground;
 		_curveAnim._callbackMethod = &TeLayout::setColor;
 		_curveAnim.play();
-		_gui.buttonLayout("quitButton")->onMouseClickValidated().add(this, &Credits::onQuitButton);
+		_gui.buttonLayoutChecked("quitButton")->onMouseClickValidated().add(this, &Credits::onQuitButton);
 
 		//
 		// WORKAROUND: These are set to PanScan ratio 1.0, but with our code


Commit: 7bbe0f530d32e8504aa03b6c4970da12a4708ea8
    https://github.com/scummvm/scummvm/commit/7bbe0f530d32e8504aa03b6c4970da12a4708ea8
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-13T18:14:37+09:00

Commit Message:
TETRAEDGE: Add ability to pick different languages

Changed paths:
    engines/tetraedge/detection.cpp
    engines/tetraedge/detection.h
    engines/tetraedge/detection_tables.h
    engines/tetraedge/metaengine.cpp
    engines/tetraedge/metaengine.h
    engines/tetraedge/te/te_core.cpp
    engines/tetraedge/tetraedge.cpp
    engines/tetraedge/tetraedge.h


diff --git a/engines/tetraedge/detection.cpp b/engines/tetraedge/detection.cpp
index d5ec376df17..dc84cff8b08 100644
--- a/engines/tetraedge/detection.cpp
+++ b/engines/tetraedge/detection.cpp
@@ -37,4 +37,25 @@ TetraedgeMetaEngineDetection::TetraedgeMetaEngineDetection() : AdvancedMetaEngin
 	_flags = kADFlagMatchFullPaths;
 }
 
+
+DetectedGame TetraedgeMetaEngineDetection::toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const {
+	DetectedGame game = AdvancedMetaEngineDetection::toDetectedGame(adGame);
+
+	// The AdvancedDetector model only allows specifying a single supported
+	// game language. Both games support multiple languages
+	if (game.gameId == "syberia" || game.gameId == "syberia2") {
+		const Common::Language *language = TetraedgeMetaEngine::getGameLanguages();
+		while (*language != Common::UNK_LANG) {
+			// "ru" only present on syberia 1
+			if (game.gameId == "syberia2" && *language == Common::RU_RUS)
+				continue;
+			game.appendGUIOptions(Common::getGameGUIOptionsDescriptionLanguage(*language));
+			language++;
+		}
+	}
+
+	return game;
+}
+
+
 REGISTER_PLUGIN_STATIC(TETRAEDGE_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, TetraedgeMetaEngineDetection);
diff --git a/engines/tetraedge/detection.h b/engines/tetraedge/detection.h
index e6efa6712cd..f1fae7a47b5 100644
--- a/engines/tetraedge/detection.h
+++ b/engines/tetraedge/detection.h
@@ -47,6 +47,8 @@ public:
 	TetraedgeMetaEngineDetection();
 	~TetraedgeMetaEngineDetection() override {}
 
+	DetectedGame toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const override;
+
 	const char *getEngineName() const override {
 		return "Tetraedge Engine";
 	}
diff --git a/engines/tetraedge/detection_tables.h b/engines/tetraedge/detection_tables.h
index af4a1070f2a..65633e18902 100644
--- a/engines/tetraedge/detection_tables.h
+++ b/engines/tetraedge/detection_tables.h
@@ -36,7 +36,7 @@ const ADGameDescription GAME_DESCRIPTIONS[] = {
 		"syberia",
 		nullptr,
 		AD_ENTRY1s("MacOS/Syberia", "d:6951fb8f71fe06f34684564625f73cd8", 10640592),
-		Common::EN_ANY,
+		Common::UNK_LANG,
 		Common::kPlatformMacintosh,
 		ADGF_TESTING,
 		GUIO1(GAMEOPTION_CORRECT_MOVIE_ASPECT)
@@ -47,7 +47,7 @@ const ADGameDescription GAME_DESCRIPTIONS[] = {
 		"syberia2",
 		nullptr,
 		AD_ENTRY1s("MacOS/Syberia 2", "d:c447586a3cb3d46d6127b467e7fb9a86", 12021136),
-		Common::EN_ANY,
+		Common::UNK_LANG,
 		Common::kPlatformMacintosh,
 		ADGF_TESTING,
 		GUIO1(GAMEOPTION_CORRECT_MOVIE_ASPECT)
diff --git a/engines/tetraedge/metaengine.cpp b/engines/tetraedge/metaengine.cpp
index eea67eb4513..7da1056f34a 100644
--- a/engines/tetraedge/metaengine.cpp
+++ b/engines/tetraedge/metaengine.cpp
@@ -65,6 +65,20 @@ bool TetraedgeMetaEngine::hasFeature(MetaEngineFeature f) const {
 		(f == kSupportsLoadingDuringStartup);
 }
 
+/*static*/
+const Common::Language *TetraedgeMetaEngine::getGameLanguages() {
+	static Common::Language languages[] = {
+		Common::EN_ANY,
+		Common::FR_FRA,
+		Common::DE_DEU,
+		Common::IT_ITA,
+		Common::ES_ESP,
+		Common::RU_RUS,
+		Common::UNK_LANG
+	};
+	return languages;
+}
+
 void TetraedgeMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
 	Tetraedge::TetraedgeEngine::getSavegameThumbnail(thumb);
 }
diff --git a/engines/tetraedge/metaengine.h b/engines/tetraedge/metaengine.h
index 15887127977..8ebb6556d80 100644
--- a/engines/tetraedge/metaengine.h
+++ b/engines/tetraedge/metaengine.h
@@ -43,6 +43,9 @@ public:
 	 * Used by e.g. the launcher to determine whether to enable the Load button.
 	 */
 	bool hasFeature(MetaEngineFeature f) const override;
+
+	static const Common::Language *getGameLanguages();
+
 };
 
 #endif
diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index c67f7893543..ac4e41525a1 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -23,9 +23,12 @@
 #include "common/fs.h"
 #include "common/debug.h"
 #include "common/config-manager.h"
+#include "common/language.h"
 
 #include "tetraedge/te/te_core.h"
 
+#include "tetraedge/tetraedge.h"
+
 #include "tetraedge/te/te_png.h"
 #include "tetraedge/te/te_images_sequence.h"
 #include "tetraedge/te/te_jpeg.h"
@@ -46,8 +49,14 @@ void TeCore::addLoc(TeILoc *loc) {
 }
 
 void TeCore::create() {
-	// TODO: Get language from the game definition.  For now just default to en.
-	language("en");
+	const char *langCode = getLanguageCode(g_engine->getGameLanguage());
+	const Common::String confLang = ConfMan.get("language");
+	Common::String useLang = "en";
+	if (langCode)
+		useLang = langCode;
+	if (!confLang.empty())
+		useLang = confLang;
+	language(useLang);
 	_coreNotReady = false;
 	_activityTrackingTimer.alarmSignal().add(this, &TeCore::onActivityTrackingAlarm);
 	warning("TODO: TeCore::create: Finish implementing me.");
diff --git a/engines/tetraedge/tetraedge.cpp b/engines/tetraedge/tetraedge.cpp
index 2e66a765e87..3233689f672 100644
--- a/engines/tetraedge/tetraedge.cpp
+++ b/engines/tetraedge/tetraedge.cpp
@@ -134,6 +134,10 @@ Common::String TetraedgeEngine::getGameId() const {
 	return _gameDescription->gameId;
 }
 
+Common::Language TetraedgeEngine::getGameLanguage() const {
+	return _gameDescription->language;
+}
+
 bool TetraedgeEngine::canLoadGameStateCurrently() {
 	return _game && _application && !_application->mainMenu().isEntered();
 }
@@ -208,6 +212,7 @@ void TetraedgeEngine::registerConfigDefaults() {
 	ConfMan.registerDefault("correct_movie_aspect", true);
 }
 
+
 Common::Error TetraedgeEngine::run() {
 	if (getGameId() == "syberia")
 		_gameType = kSyberia;
@@ -316,4 +321,5 @@ void TetraedgeEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
 	g_engine->getApplication()->getSavegameThumbnail(thumb);
 }
 
+
 } // namespace Tetraedge
diff --git a/engines/tetraedge/tetraedge.h b/engines/tetraedge/tetraedge.h
index 6492b96c0db..8adafa938c4 100644
--- a/engines/tetraedge/tetraedge.h
+++ b/engines/tetraedge/tetraedge.h
@@ -86,6 +86,8 @@ public:
 	 */
 	Common::String getGameId() const;
 
+	Common::Language getGameLanguage() const;
+
 	/**
 	 * Gets a random number
 	 */




More information about the Scummvm-git-logs mailing list