diff options
author | Sven Hesse | 2012-06-27 04:42:36 +0200 |
---|---|---|
committer | Sven Hesse | 2012-06-27 05:14:18 +0200 |
commit | 2c760cb15e27de29ef9262cb6e2a102d8dbe3935 (patch) | |
tree | ff8a65fcd1d1d70fc75f04696e6efdd6c6a7e47b /engines | |
parent | 63e13c5d2c48c0a9aba72a0f63dc4aa515972da5 (diff) | |
download | scummvm-rg350-2c760cb15e27de29ef9262cb6e2a102d8dbe3935.tar.gz scummvm-rg350-2c760cb15e27de29ef9262cb6e2a102d8dbe3935.tar.bz2 scummvm-rg350-2c760cb15e27de29ef9262cb6e2a102d8dbe3935.zip |
DETECTOR: Make detectGameFilebased() return a list of MD5s and file sizes
Since we need a FSNode parent for Mac resource forks, we need to change
signature of detectGameFilebased(), too.
Diffstat (limited to 'engines')
-rw-r--r-- | engines/advancedDetector.cpp | 12 | ||||
-rw-r--r-- | engines/advancedDetector.h | 4 | ||||
-rw-r--r-- | engines/cge/detection.cpp | 2 | ||||
-rw-r--r-- | engines/gob/detection/detection.cpp | 2 | ||||
-rw-r--r-- | engines/mohawk/detection.cpp | 2 | ||||
-rw-r--r-- | engines/toon/detection.cpp | 2 | ||||
-rw-r--r-- | engines/touche/detection.cpp | 2 |
7 files changed, 19 insertions, 7 deletions
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp index af011bee4d..727134fad8 100644 --- a/engines/advancedDetector.cpp +++ b/engines/advancedDetector.cpp @@ -519,7 +519,7 @@ ADGameDescList AdvancedMetaEngine::detectGame(const Common::FSNode &parent, cons return matched; } -const ADGameDescription *AdvancedMetaEngine::detectGameFilebased(const FileMap &allFiles, const ADFileBasedFallback *fileBasedFallback) const { +const ADGameDescription *AdvancedMetaEngine::detectGameFilebased(const FileMap &allFiles, const Common::FSList &fslist, const ADFileBasedFallback *fileBasedFallback, ADFilePropertiesMap *filesProps) const { const ADFileBasedFallback *ptr; const char* const* filenames; @@ -549,6 +549,16 @@ const ADGameDescription *AdvancedMetaEngine::detectGameFilebased(const FileMap & maxNumMatchedFiles = numMatchedFiles; debug(4, "and overridden"); + + if (filesProps) { + for (filenames = ptr->filenames; *filenames; ++filenames) { + ADFileProperties tmp; + + if (getFileProperties(fslist.begin()->getParent(), allFiles, *agdesc, *filenames, tmp)) + (*filesProps)[*filenames] = tmp; + } + } + } } } diff --git a/engines/advancedDetector.h b/engines/advancedDetector.h index 91cb54c396..3e18a6aa18 100644 --- a/engines/advancedDetector.h +++ b/engines/advancedDetector.h @@ -302,9 +302,11 @@ protected: * In case of a tie, the entry coming first in the list is chosen. * * @param allFiles a map describing all present files + * @param fslist a list of nodes for all present files * @param fileBasedFallback a list of ADFileBasedFallback records, zero-terminated + * @param filesProps if not 0, return a map of properties for all detected files here */ - const ADGameDescription *detectGameFilebased(const FileMap &allFiles, const ADFileBasedFallback *fileBasedFallback) const; + const ADGameDescription *detectGameFilebased(const FileMap &allFiles, const Common::FSList &fslist, const ADFileBasedFallback *fileBasedFallback, ADFilePropertiesMap *filesProps = 0) const; // TODO void updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc) const; diff --git a/engines/cge/detection.cpp b/engines/cge/detection.cpp index f723ec8fbd..eda4edd520 100644 --- a/engines/cge/detection.cpp +++ b/engines/cge/detection.cpp @@ -108,7 +108,7 @@ public: } virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { - return detectGameFilebased(allFiles, CGE::fileBasedFallback); + return detectGameFilebased(allFiles, fslist, CGE::fileBasedFallback); } virtual const char *getName() const { diff --git a/engines/gob/detection/detection.cpp b/engines/gob/detection/detection.cpp index bcfd5dacfa..9400001636 100644 --- a/engines/gob/detection/detection.cpp +++ b/engines/gob/detection/detection.cpp @@ -40,7 +40,7 @@ public: } virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { - return detectGameFilebased(allFiles, Gob::fileBased); + return detectGameFilebased(allFiles, fslist, Gob::fileBased); } virtual const char *getName() const { diff --git a/engines/mohawk/detection.cpp b/engines/mohawk/detection.cpp index f0c657897d..5664929948 100644 --- a/engines/mohawk/detection.cpp +++ b/engines/mohawk/detection.cpp @@ -167,7 +167,7 @@ public: } virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { - return detectGameFilebased(allFiles, Mohawk::fileBased); + return detectGameFilebased(allFiles, fslist, Mohawk::fileBased); } virtual const char *getName() const { diff --git a/engines/toon/detection.cpp b/engines/toon/detection.cpp index 8234934972..9c50c20ef8 100644 --- a/engines/toon/detection.cpp +++ b/engines/toon/detection.cpp @@ -133,7 +133,7 @@ public: } virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { - return detectGameFilebased(allFiles, Toon::fileBasedFallback); + return detectGameFilebased(allFiles, fslist, Toon::fileBasedFallback); } virtual const char *getName() const { diff --git a/engines/touche/detection.cpp b/engines/touche/detection.cpp index 35dd54776f..2566597e6c 100644 --- a/engines/touche/detection.cpp +++ b/engines/touche/detection.cpp @@ -135,7 +135,7 @@ public: } virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { - const ADGameDescription *matchedDesc = detectGameFilebased(allFiles, Touche::fileBasedFallback); + const ADGameDescription *matchedDesc = detectGameFilebased(allFiles, fslist, Touche::fileBasedFallback); if (matchedDesc) { // We got a match Common::String report = Common::String::format(_("Your game version has been detected using " |