[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