[Scummvm-cvs-logs] scummvm master -> b1bcf1279130640f0058c6d6d85abee7eee54973

somaen einarjohants at gmail.com
Mon Nov 18 12:06:01 CET 2013


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:
ff574579bb WINTERMUTE: Add quite a bit of hackery to allow Reversion 1.3 to select languages properly.
b1bcf12791 WINTERMUTE: Add a fake detection entry for Czech Dead City.


Commit: ff574579bb625f1766669531f5b9633c12ea53b3
    https://github.com/scummvm/scummvm/commit/ff574579bb625f1766669531f5b9633c12ea53b3
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-11-18T03:00:34-08:00

Commit Message:
WINTERMUTE: Add quite a bit of hackery to allow Reversion 1.3 to select languages properly.

Reversion 1.3 seems to have one language file in it’s main-folder, and
a full set in languages/ (not language/ like a few other games), the names
of the language-files are also different from what we’ve seen earlier.

Changed paths:
    engines/wintermute/base/base_file_manager.cpp
    engines/wintermute/detection.cpp



diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp
index bea7e53..ae4c891 100644
--- a/engines/wintermute/base/base_file_manager.cpp
+++ b/engines/wintermute/base/base_file_manager.cpp
@@ -168,6 +168,11 @@ bool BaseFileManager::initPaths() {
 	if (languageSubFolder.exists()) {
 		addPath(PATH_PACKAGE, languageSubFolder);
 	}
+	// Also add languages/ for Reversion1.
+	languageSubFolder = gameData.getChild("languages");
+	if (languageSubFolder.exists()) {
+		addPath(PATH_PACKAGE, languageSubFolder);
+	}
 	return STATUS_OK;
 }
 
@@ -187,6 +192,9 @@ bool BaseFileManager::registerPackages(const Common::FSList &fslist) {
 bool BaseFileManager::registerPackages() {
 	debugC(kWintermuteDebugFileAccess | kWintermuteDebugLog, "Scanning packages");
 
+	// We need the target name as a Common::String to perform some game-specific hacks.
+	Common::String targetName = BaseEngine::instance().getGameTargetName();
+
 	// Register without using SearchMan, as otherwise the FSNode-based lookup in openPackage will fail
 	// and that has to be like that to support the detection-scheme.
 	Common::FSList files;
@@ -199,20 +207,43 @@ bool BaseFileManager::registerPackages() {
 			if (!fileIt->getName().hasSuffix(".dcp")) {
 				continue;
 			}
+			// HACK: for Reversion1, avoid loading xlanguage_pt.dcp from the main folder:
+			if (_language != Common::PT_BRA && targetName.hasPrefix("reversion1")) {
+				if (fileIt->getName() == "xlanguage_pt.dcp") {
+					continue;
+				}
+			}
 			// Avoid registering all the language files
 			// TODO: Select based on the gameDesc.
-			if (_language != Common::UNK_LANG && fileIt->getParent().getName() == "language") {
+			if (_language != Common::UNK_LANG && (fileIt->getParent().getName() == "language" || fileIt->getParent().getName() == "languages")) {
 				Common::String parentName = fileIt->getParent().getName();
 				Common::String dcpName = fileIt->getName();
-				if (_language == Common::EN_ANY && fileIt->getName() != "english.dcp") {
+				// English
+				if (_language == Common::EN_ANY && (fileIt->getName() != "english.dcp" && fileIt->getName() != "xlanguage_en.dcp")) {
+					continue;
+				// Chinese
+				} else if (_language == Common::ZH_CNA && (fileIt->getName() != "chinese.dcp" && fileIt->getName() != "xlanguage_nz.dcp")) {
+					continue;
+				// Czech
+				} else if (_language == Common::CZ_CZE && (fileIt->getName() != "czech.dcp" && fileIt->getName() != "xlanguage_cz.dcp")) {
+					continue;
+				// French
+				} else if (_language == Common::FR_FRA && (fileIt->getName() != "french.dcp" && fileIt->getName() != "xlanguage_fr.dcp")) {
+					continue;
+				// German
+				} else if (_language == Common::DE_DEU && (fileIt->getName() != "german.dcp" && fileIt->getName() != "xlanguage_de.dcp")) {
 					continue;
-				} else if (_language == Common::CZ_CZE && fileIt->getName() != "czech.dcp") {
+				// Italian
+				} else if (_language == Common::IT_ITA && (fileIt->getName() != "italian.dcp" && fileIt->getName() != "xlanguage_it.dcp")) {
 					continue;
-				} else if (_language == Common::IT_ITA && fileIt->getName() != "italian.dcp") {
+				// Polish
+				} else if (_language == Common::PL_POL && (fileIt->getName() != "polish.dcp" && fileIt->getName() != "xlanguage_po.dcp")) {
 					continue;
-				} else if (_language == Common::PL_POL && fileIt->getName() != "polish.dcp") {
+				// Portuguese
+				} else if (_language == Common::PT_BRA && (fileIt->getName() != "portuguese.dcp" && fileIt->getName() != "xlanguage_pt.dcp")) {
 					continue;
-				} else if (_language == Common::RU_RUS && fileIt->getName() != "russian.dcp") {
+				// Russian
+				} else if (_language == Common::RU_RUS && (fileIt->getName() != "russian.dcp" && fileIt->getName() != "xlanguage_ru.dcp")) {
 					continue;
 				}
 			}
diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index ac21d78..f4bd437 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -68,6 +68,7 @@ static char s_fallbackGameIdBuf[256];
 
 static const char *directoryGlobs[] = {
 	"language", // To detect the various languages
+	"languages", // To detect the various languages
 	0
 };
 


Commit: b1bcf1279130640f0058c6d6d85abee7eee54973
    https://github.com/scummvm/scummvm/commit/b1bcf1279130640f0058c6d6d85abee7eee54973
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-11-18T03:05:21-08:00

Commit Message:
WINTERMUTE: Add a fake detection entry for Czech Dead City.

The language data for the Czech version are in data.dcp, but the pairs
of {language.dcp, data.dcp} get preference over just a match on data.dcp,
thus we need to detect Czech as one of these pairs, giving the user the
choice of language on detection. In this case I just copied the english-detection.

Changed paths:
    engines/wintermute/detection_tables.h



diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index a47f921..46e05f2 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -209,6 +209,22 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_TESTING,
 		GUIO0()
 	},
+	// Dead City (Czech)
+	{
+		"deadcity",
+		"",
+		{
+			// The Czech data are in data.dcp, so in this case we'll have to
+			// just detect the english version twice, to give the user a choice.
+			{"english.dcp", 0, "c591046d6de7e381d76f70e0787b2b1f", 415935},
+			{"data.dcp", 0, "7ebfd50d1a22370ed7b079bcaa631d62", 9070205},
+			AD_LISTEND
+		},
+		Common::CZ_CZE,
+		Common::kPlatformWindows,
+		ADGF_UNSTABLE,
+		GUIO0()
+	},
 	// Dead City (English)
 	{
 		"deadcity",






More information about the Scummvm-git-logs mailing list