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.
This commit is contained in:
Sven Hesse 2012-06-27 04:42:36 +02:00
parent 63e13c5d2c
commit 2c760cb15e
7 changed files with 19 additions and 7 deletions

View file

@ -519,7 +519,7 @@ ADGameDescList AdvancedMetaEngine::detectGame(const Common::FSNode &parent, cons
return matched; 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 ADFileBasedFallback *ptr;
const char* const* filenames; const char* const* filenames;
@ -549,6 +549,16 @@ const ADGameDescription *AdvancedMetaEngine::detectGameFilebased(const FileMap &
maxNumMatchedFiles = numMatchedFiles; maxNumMatchedFiles = numMatchedFiles;
debug(4, "and overridden"); 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;
}
}
} }
} }
} }

View file

@ -302,9 +302,11 @@ protected:
* In case of a tie, the entry coming first in the list is chosen. * In case of a tie, the entry coming first in the list is chosen.
* *
* @param allFiles a map describing all present files * @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 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 // TODO
void updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc) const; void updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc) const;

View file

@ -108,7 +108,7 @@ public:
} }
virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { 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 { virtual const char *getName() const {

View file

@ -40,7 +40,7 @@ public:
} }
virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { 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 { virtual const char *getName() const {

View file

@ -167,7 +167,7 @@ public:
} }
virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { 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 { virtual const char *getName() const {

View file

@ -133,7 +133,7 @@ public:
} }
virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { 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 { virtual const char *getName() const {

View file

@ -135,7 +135,7 @@ public:
} }
virtual const ADGameDescription *fallbackDetect(const FileMap &allFiles, const Common::FSList &fslist) const { 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 if (matchedDesc) { // We got a match
Common::String report = Common::String::format(_("Your game version has been detected using " Common::String report = Common::String::format(_("Your game version has been detected using "