diff options
author | Max Horn | 2007-02-14 00:21:53 +0000 |
---|---|---|
committer | Max Horn | 2007-02-14 00:21:53 +0000 |
commit | 75ae7cdb730859838097aec1374cad81d9040ec6 (patch) | |
tree | d34252630531f28273f67479d75ac6277364ab1e | |
parent | 59b1526e5aee8094e51d76305c1e5a7ab3aa88e8 (diff) | |
download | scummvm-rg350-75ae7cdb730859838097aec1374cad81d9040ec6.tar.gz scummvm-rg350-75ae7cdb730859838097aec1374cad81d9040ec6.tar.bz2 scummvm-rg350-75ae7cdb730859838097aec1374cad81d9040ec6.zip |
Properly implemented the AD fallback callback
svn-id: r25576
-rw-r--r-- | common/advancedDetector.cpp | 16 | ||||
-rw-r--r-- | common/advancedDetector.h | 14 |
2 files changed, 18 insertions, 12 deletions
diff --git a/common/advancedDetector.cpp b/common/advancedDetector.cpp index 54576fdfa7..242d1b8238 100644 --- a/common/advancedDetector.cpp +++ b/common/advancedDetector.cpp @@ -33,8 +33,6 @@ namespace Common { -typedef Array<const ADGameDescription*> ADGameDescList; - namespace AdvancedDetector { /** @@ -344,9 +342,10 @@ static ADGameDescList detectGame(const FSList *fslist, const Common::ADParams &p ADGameDescList matched; int maxFilesMatched = 0; + const ADGameDescription *g; for (i = 0; i < gameDescriptions.size(); i++) { - const ADGameDescription *g = gameDescriptions[i]; + g = gameDescriptions[i]; fileMissing = false; // Do not even bother to look at entries which do not have matching @@ -511,24 +510,25 @@ static ADGameDescList detectGame(const FSList *fslist, const Common::ADParams &p if (matchEntry) { // We got a match for (i = 0; i < gameDescriptions.size(); i++) { - if (gameDescriptions[i]->filesDescriptions[0].fileName == 0) { - if (!scumm_stricmp(gameDescriptions[i]->gameid, *matchEntry)) { + g = gameDescriptions[i]; + if (g->filesDescriptions[0].fileName == 0) { + if (!scumm_stricmp(g->gameid, *matchEntry)) { // FIXME: This warning, if ever seen by somebody, is // extremly cryptic! warning("But it looks like unknown variant of %s", *matchEntry); - matched.push_back(gameDescriptions[i]); + matched.push_back(g); } } } } } -/* + // If we still haven't got a match, try to use the fallback callback :-) if (matched.empty() && params.fallbackDetectFunc != 0) { matched = (*params.fallbackDetectFunc)(fslist); } -*/ + return matched; } diff --git a/common/advancedDetector.h b/common/advancedDetector.h index 799c796d3f..937c190b19 100644 --- a/common/advancedDetector.h +++ b/common/advancedDetector.h @@ -61,6 +61,11 @@ struct ADGameDescription { }; /** + * A list of pointers to ADGameDescription structs (or subclasses thereof). + */ +typedef Array<const ADGameDescription*> ADGameDescList; + +/** * End marker for a table of ADGameDescription structs. Use this to * terminate a list to be passed to the AdvancedDetector API. */ @@ -144,15 +149,16 @@ struct ADParams { /** * A callback pointing to an (optional) generic fallback detect - * function. If present, this gets called if both the regular + * function. If present, this callback is invoked if both the regular * MD5 based detection as well as the file based fallback failed - * to detect anything. It is supposed + * to detect anything. * * @note The fslist parameter may be 0 -- in that case, it is assumed * that the callback searchs the current directory. + * + * @todo */ - //GameList (*fallbackDetectFunc)(const FSList *fslist); - uint dummy; + ADGameDescList (*fallbackDetectFunc)(const FSList *fslist); /** * A bitmask of flags which can be used to configure the behavior |