aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2006-03-09 03:09:21 +0000
committerMax Horn2006-03-09 03:09:21 +0000
commite53e0e588569e71507d748f22a10970b4f417607 (patch)
tree85dd44b13451d3956e36a4701297a518f7521f4a /engines
parent72d6022fa9d951578836d400ab5e9a2b7ec6714a (diff)
downloadscummvm-rg350-e53e0e588569e71507d748f22a10970b4f417607.tar.gz
scummvm-rg350-e53e0e588569e71507d748f22a10970b4f417607.tar.bz2
scummvm-rg350-e53e0e588569e71507d748f22a10970b4f417607.zip
- Removed the code from the launcher that adds language/platform to the
game descriptions. Doing this now is the responsibility of the engines. - Adapted the SCUMM engine to add lang/platform to the desc string if necessary. Other engines still have to be adapted (but many do not seem to need this at all, since they either are lang/platform agnostic, or already include this information in their MD5 tables). svn-id: r21154
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/plugin.cpp50
1 files changed, 35 insertions, 15 deletions
diff --git a/engines/scumm/plugin.cpp b/engines/scumm/plugin.cpp
index ed9dc54a6e..bc73402a25 100644
--- a/engines/scumm/plugin.cpp
+++ b/engines/scumm/plugin.cpp
@@ -1133,29 +1133,30 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
}
// Match found, add to list of candidates, then abort inner loop.
- const char *desc = findDescriptionFromGameID(g->gameid);
+ DetectedGame dg(g->gameid, findDescriptionFromGameID(g->gameid));
if (substLastIndex > 0 && // HE Mac versions.
(subst.genMethod == kGenMac ||
subst.genMethod == kGenMacNoParens)) {
- detectedGames.push_back(DetectedGame(g->gameid, desc,
- Common::UNK_LANG,
- Common::kPlatformMacintosh));
+ dg.platform = Common::kPlatformMacintosh;
fileSet[file->path()] = true;
} else if (substLastIndex == 0 && g->id == GID_MANIAC &&
(buf[0] == 0xbc || buf[0] == 0xa0)) {
- detectedGames.push_back(DetectedGame(g->gameid, desc,
- Common::UNK_LANG,
- Common::kPlatformNES));
+ dg.platform = Common::kPlatformNES;
} else if ((g->id == GID_MANIAC || g->id == GID_ZAK) &&
((buf[0] == 0x31 && buf[1] == 0x0a) ||
(buf[0] == 0xcd && buf[1] == 0xfe))) {
- detectedGames.push_back(DetectedGame(g->gameid, desc,
- Common::UNK_LANG,
- Common::kPlatformC64));
+ dg.platform = Common::kPlatformC64;
} else {
- detectedGames.push_back(DetectedGame(g->gameid, desc));
fileSet[file->path()] = false;
}
+
+ // If known, add the platform to the description string
+ if (dg.platform != Common::kPlatformUnknown) {
+ dg.description += "(";
+ dg.description += Common::getPlatformDescription(dg.platform);
+ dg.description += ")";
+ }
+ detectedGames.push_back(dg);
break;
}
}
@@ -1194,12 +1195,31 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
break;
}
assert(g->gameid);
- // Insert the 'enhanced' game data into the candidate list
- const char *desc = findDescriptionFromGameID(g->gameid);
+ DetectedGame dg(g->gameid, findDescriptionFromGameID(g->gameid), elem->language);
if (iter->_value == true) // This was HE Mac game
- detectedGames.push_back(DetectedGame(g->gameid, desc, elem->language, Common::kPlatformMacintosh));
+ dg.platform = Common::kPlatformMacintosh;
else
- detectedGames.push_back(DetectedGame(g->gameid, desc, elem->language, elem->platform));
+ dg.platform = elem->platform;
+
+ const bool customLanguage = (dg.language != Common::UNK_LANG);
+ const bool customPlatform = (dg.platform != Common::kPlatformUnknown);
+
+ // Adapt the description string if custom platform/language is set.
+ // TODO: Also use the 'extra' information, like "Demo" etc.
+ if (customLanguage || customPlatform) {
+ dg.description += " (";
+ if (customLanguage)
+ dg.description += Common::getLanguageDescription(dg.language);
+ if (customLanguage && customPlatform)
+ dg.description += "/";
+ if (customPlatform)
+ dg.description += Common::getPlatformDescription(dg.platform);
+ dg.description += ")";
+ }
+
+ // Insert the 'enhanced' game data into the candidate list
+ detectedGames.push_back(dg);
+
exactMatch = true;
}
}