aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorSven Hesse2012-06-27 04:42:36 +0200
committerSven Hesse2012-06-27 05:14:18 +0200
commit2c760cb15e27de29ef9262cb6e2a102d8dbe3935 (patch)
treeff8a65fcd1d1d70fc75f04696e6efdd6c6a7e47b /engines
parent63e13c5d2c48c0a9aba72a0f63dc4aa515972da5 (diff)
downloadscummvm-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.cpp12
-rw-r--r--engines/advancedDetector.h4
-rw-r--r--engines/cge/detection.cpp2
-rw-r--r--engines/gob/detection/detection.cpp2
-rw-r--r--engines/mohawk/detection.cpp2
-rw-r--r--engines/toon/detection.cpp2
-rw-r--r--engines/touche/detection.cpp2
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 "