diff options
-rw-r--r-- | engines/agos/agos.h | 4 | ||||
-rw-r--r-- | engines/agos/res.cpp | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 9b9cbce94f..d9f982a0fa 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -198,6 +198,10 @@ public: #endif virtual bool hasFile(const Common::String &name) const; + virtual int listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern) const; + virtual int listMembers(Common::ArchiveMemberList &list) const; + + virtual const Common::ArchiveMemberPtr getMember(const Common::String &name) const; virtual Common::SeekableReadStream *createReadStreamForMember(const Common::String &filename) const; private: diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index 03acb0a161..0305879390 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -54,6 +54,24 @@ bool ArchiveMan::hasFile(const Common::String &name) const { return Common::SearchSet::hasFile(name); } +int ArchiveMan::listMatchingMembers(Common::ArchiveMemberList &list, const Common::String &pattern) const { + const int matches = _fallBack ? SearchMan.listMatchingMembers(list, pattern) : 0; + return matches + Common::SearchSet::listMatchingMembers(list, pattern); +} + +int ArchiveMan::listMembers(Common::ArchiveMemberList &list) const { + const int matches = _fallBack ? SearchMan.listMembers(list) : 0; + return matches + Common::SearchSet::listMembers(list); +} + +const Common::ArchiveMemberPtr ArchiveMan::getMember(const Common::String &name) const { + Common::ArchiveMemberPtr ptr = _fallBack ? SearchMan.getMember(name) : Common::ArchiveMemberPtr(); + if (ptr) + return ptr; + + return Common::SearchSet::getMember(name); +} + Common::SeekableReadStream *ArchiveMan::createReadStreamForMember(const Common::String &filename) const { if (_fallBack && SearchMan.hasFile(filename)) { return SearchMan.createReadStreamForMember(filename); |