aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 "