[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