[Scummvm-git-logs] scummvm master -> 04bc7f983ab7fbb04738ec28ffde5dba3e898eaf

phcoder noreply at scummvm.org
Thu Jan 19 16:30:11 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
04bc7f983a NEVERHOOD: Allow loading NHC from extrapath


Commit: 04bc7f983ab7fbb04738ec28ffde5dba3e898eaf
    https://github.com/scummvm/scummvm/commit/04bc7f983ab7fbb04738ec28ffde5dba3e898eaf
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2023-01-19T19:30:06+03:00

Commit Message:
NEVERHOOD: Allow loading NHC from extrapath

We can't use SearchMan directly in dialogs.cpp as the engine may not be
running when dialogs.cpp is called

Changed paths:
    engines/neverhood/dialogs.cpp
    engines/neverhood/neverhood.cpp


diff --git a/engines/neverhood/dialogs.cpp b/engines/neverhood/dialogs.cpp
index c5d0886a5bf..b147e92a32f 100644
--- a/engines/neverhood/dialogs.cpp
+++ b/engines/neverhood/dialogs.cpp
@@ -63,13 +63,20 @@ NeverhoodOptionsWidget::NeverhoodOptionsWidget(GuiObject *boss, const Common::St
 		"NeverhoodGameOptionsDialog.RepeatWillieHint", _("Repeat useful Willie's hint"),
 		_("Repeat actual useful hint by Willie"));
 
-	Common::String path = ConfMan.get("path", _domain);
-	Common::FSDirectory dir(path);
-	Common::FSDirectory *langdir = dir.getSubDirectory("language");
+	Common::FSDirectory dir(ConfMan.get("path", _domain));
+	Common::String extraPath(ConfMan.get("extrapath", _domain));
+	Common::FSDirectory extraDir(extraPath);
+	Common::Array<Common::FSDirectory *> langdirs = { &dir, dir.getSubDirectory("language") };
+	if (!extraPath.empty()) {
+		langdirs.push_back(&extraDir);
+		langdirs.push_back(extraDir.getSubDirectory("language"));
+	}
 	_nhcFiles.push_back("");
-	if (langdir) {
+	for (Common::Array<Common::FSDirectory *>::const_iterator langdir = langdirs.begin(); langdir != langdirs.end(); langdir++) {
 		Common::ArchiveMemberList nhcFileList;
-		langdir->listMatchingMembers(nhcFileList, "*.nhc");
+		if (!(*langdir))
+			continue;
+		(*langdir)->listMatchingMembers(nhcFileList, "*.nhc");
 
 		for (Common::ArchiveMemberList::iterator iter = nhcFileList.begin(); iter != nhcFileList.end(); ++iter) {
 			Common::String nhcFileName = (*iter)->getName();
diff --git a/engines/neverhood/neverhood.cpp b/engines/neverhood/neverhood.cpp
index b6cfc2c99b8..eb20ae8e88e 100644
--- a/engines/neverhood/neverhood.cpp
+++ b/engines/neverhood/neverhood.cpp
@@ -70,6 +70,7 @@ Common::Error NeverhoodEngine::run() {
 	const Common::FSNode gameDataDir(ConfMan.get("path"));
 
 	SearchMan.addSubDirectoryMatching(gameDataDir, "data");
+	SearchMan.addSubDirectoryMatching(gameDataDir, "language");
 
 	_isSaveAllowed = false;
 
@@ -101,7 +102,7 @@ Common::Error NeverhoodEngine::run() {
 	}
 
 	Common::String nhcFile = ConfMan.get("nhc_file");
-	if (!nhcFile.empty() && _res->addNhcArchive("language/" + nhcFile + ".nhc")) {
+	if (!nhcFile.empty() && _res->addNhcArchive(nhcFile + ".nhc")) {
 		uint32 fontSpecHash = calcHash("asRecFont");
 		if (_res->nhcExists(fontSpecHash, kResTypeData)) {
 			DataResource fontData(this);




More information about the Scummvm-git-logs mailing list