aboutsummaryrefslogtreecommitdiff
path: root/engines/advancedDetector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/advancedDetector.cpp')
-rw-r--r--engines/advancedDetector.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index 72629a833e..aa76e6c4b7 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -89,6 +89,18 @@ static Common::String generatePreferredTarget(const Common::String &id, const AD
return res;
}
+static Common::String sanitizeName(const char *name) {
+ Common::String res;
+
+ while (*name) {
+ if (Common::isAlnum(*name))
+ res += tolower(*name);
+ name++;
+ }
+
+ return res;
+}
+
void AdvancedMetaEngine::updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc) const {
if (_singleid != NULL) {
desc["preferredtarget"] = desc["gameid"];
@@ -96,7 +108,15 @@ void AdvancedMetaEngine::updateGameDescriptor(GameDescriptor &desc, const ADGame
}
if (!desc.contains("preferredtarget"))
- desc["preferredtarget"] = desc["gameid"];
+ desc["preferredtarget"] = desc["gameid"];
+
+ if (realDesc->flags & ADGF_AUTOGENTARGET) {
+ warning("Ahem");
+ if (*realDesc->extra)
+ desc["preferredtarget"] = sanitizeName(realDesc->extra);
+ }
+
+ warning("here: %s", desc["preferredtarget"].c_str());
desc["preferredtarget"] = generatePreferredTarget(desc["preferredtarget"], realDesc);