aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/agos/agos.h4
-rw-r--r--engines/agos/res.cpp18
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);