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:
parent
63e13c5d2c
commit
2c760cb15e
7 changed files with 19 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue