[Scummvm-git-logs] scummvm master -> 6f3ad342cd75cb697bd02a083ffe47482fe74416
sev-
noreply at scummvm.org
Fri Feb 10 00:24:29 UTC 2023
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b7b5ece6b5 COMMON: Added possibility to query archive from SearchSet
6f3ad342cd DIRECTOR: LINGO: Mix in files from quirks cache to the getNthFileNameInFolder() built-in
Commit: b7b5ece6b504892cd04c4a926ba69400b51c2733
https://github.com/scummvm/scummvm/commit/b7b5ece6b504892cd04c4a926ba69400b51c2733
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-02-10T01:19:34+01:00
Commit Message:
COMMON: Added possibility to query archive from SearchSet
Changed paths:
common/archive.cpp
common/archive.h
diff --git a/common/archive.cpp b/common/archive.cpp
index bb4c2c10a4e..8875c80c298 100644
--- a/common/archive.cpp
+++ b/common/archive.cpp
@@ -221,6 +221,15 @@ bool SearchSet::hasArchive(const String &name) const {
return (find(name) != _list.end());
}
+Archive *SearchSet::getArchive(const String &name) const {
+ auto arch = find(name);
+
+ if (arch == _list.end())
+ return nullptr;
+
+ return arch->_arc;
+}
+
void SearchSet::clear() {
for (ArchiveNodeList::iterator i = _list.begin(); i != _list.end(); ++i) {
if (i->_autoFree)
diff --git a/common/archive.h b/common/archive.h
index 93741e547d9..855c4162998 100644
--- a/common/archive.h
+++ b/common/archive.h
@@ -310,6 +310,11 @@ public:
*/
bool hasArchive(const String &name) const;
+ /**
+ * Looks up an archive in the searchable set.
+ */
+ Archive *getArchive(const String &name) const;
+
/**
* Empty the searchable set.
*/
Commit: 6f3ad342cd75cb697bd02a083ffe47482fe74416
https://github.com/scummvm/scummvm/commit/6f3ad342cd75cb697bd02a083ffe47482fe74416
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-02-10T01:23:31+01:00
Commit Message:
DIRECTOR: LINGO: Mix in files from quirks cache to the getNthFileNameInFolder() built-in
Changed paths:
engines/director/game-quirks.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/types.h
diff --git a/engines/director/game-quirks.cpp b/engines/director/game-quirks.cpp
index 3f8f16109b0..f034798c8cc 100644
--- a/engines/director/game-quirks.cpp
+++ b/engines/director/game-quirks.cpp
@@ -145,7 +145,7 @@ void DirectorEngine::gameQuirks(const char *target, Common::Platform platform) {
if (!list.empty()) {
CachedArchive *archive = new CachedArchive(list);
- SearchMan.add("cache", archive);
+ SearchMan.add(kQuirksCacheArchive, archive);
}
}
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 0402968ecb4..eba024306a3 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1164,6 +1164,20 @@ void LB::b_getNthFileNameInFolder(int nargs) {
Common::Array<Common::String> fileNameList;
for (uint i = 0; i < f.size(); i++)
fileNameList.push_back(f[i].getName());
+
+ // Now mix in any files coming from the quirks
+ Common::Archive *cache = SearchMan.getArchive(kQuirksCacheArchive);
+
+ if (cache) {
+ Common::ArchiveMemberList files;
+
+ cache->listMatchingMembers(files, path + (path.empty() ? "*" : "/*"), true);
+
+ for (auto &fi : files) {
+ fileNameList.push_back(fi->getName().c_str());
+ }
+ }
+
Common::sort(fileNameList.begin(), fileNameList.end());
r = Datum(fileNameList[fileNum]);
}
diff --git a/engines/director/types.h b/engines/director/types.h
index 7f28f3f569c..fba654e2f4e 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -30,6 +30,8 @@ enum {
kFewFamesMaxCounter = 19,
};
+#define kQuirksCacheArchive "quirks"
+
enum MovieFlag {
kMovieFlagAllowOutdatedLingo = (1 << 8)
};
More information about the Scummvm-git-logs
mailing list