[Scummvm-cvs-logs] scummvm branch-1-8 -> 2cb1a23628a5aecd53715f7bede5297d39e7639b

eriktorbjorn eriktorbjorn at telia.com
Wed Mar 9 21:28:36 CET 2016


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:
2cb1a23628 SCUMM: Fix detection of Maniac Mansion from within DoTT


Commit: 2cb1a23628a5aecd53715f7bede5297d39e7639b
    https://github.com/scummvm/scummvm/commit/2cb1a23628a5aecd53715f7bede5297d39e7639b
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2016-03-09T21:27:44+01:00

Commit Message:
SCUMM: Fix detection of Maniac Mansion from within DoTT

It turns out that in some versions of ScummVM, paths end with a
directory separator, while in others they don't. This should handle
both cases, I hope. (It's a bit tricky for me to test.)

Changed paths:
    NEWS
    engines/scumm/scumm.cpp



diff --git a/NEWS b/NEWS
index cdae78c..d68cb89 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,11 @@
 For a more comprehensive changelog of the latest experimental code, see:
         https://github.com/scummvm/scummvm/commits/
 
+1.8.1 (XXXX-XX-XX)
+ SCUMM:
+   - Fixed detection of Maniac Mansion from Day of the Tentacle in the Windows
+     version of ScummVM.
+
 1.8.0 (2016-03-04)
  New Games:
    - Added support for Rex Nebular and the Cosmic Gender Bender.
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 24d676a..8d6214c 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -2608,13 +2608,31 @@ bool ScummEngine::startManiac() {
 		Common::ConfigManager::DomainMap::iterator iter = ConfMan.beginGameDomains();
 		for (; iter != ConfMan.endGameDomains(); ++iter) {
 			Common::ConfigManager::Domain &dom = iter->_value;
-			Common::String path = dom.getVal("path");
+			Common::String path1 = dom.getVal("path");
 
-			if (path.hasPrefix(currentPath)) {
-				path.erase(0, currentPath.size() + 1);
-				if (path.equalsIgnoreCase("maniac")) {
-					maniacTarget = iter->_key;
-					break;
+			if (path1.hasPrefix(currentPath)) {
+				// In some ports (e.g. Windows), the "path" will end with a
+				// path separator. In others (e.g. Linux), it won't. And
+				// we have no way of knowing exactly what the separator
+				// is. The technical term for this is "annoying".
+
+				path1.erase(0, currentPath.size());
+
+				if (!path1.empty()) {
+					// If we've found the path we're looking for, all that
+					// remains now is the "maniac" part of it. If paths end
+					// with a separator, we'll have "maniac" followed by a
+					// separator. If they don't, we'll have a separator
+					// followed by "maniac".
+					Common::String path2 = path1;
+
+					path1.erase(0, 1);
+					path2.deleteLastChar();
+
+					if (path1.equalsIgnoreCase("maniac") || path2.equalsIgnoreCase("maniac")) {
+						maniacTarget = iter->_key;
+						break;
+					}
 				}
 			}
 		}






More information about the Scummvm-git-logs mailing list