[Scummvm-cvs-logs] scummvm master -> e11a370fe45aa96d240ff5f10e7263fdfc02bb01

eriktorbjorn eriktorbjorn at telia.com
Wed Mar 9 21:24:58 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:
e11a370fe4 SCUMM: Fix detection of Maniac Mansion from within DoTT


Commit: e11a370fe45aa96d240ff5f10e7263fdfc02bb01
    https://github.com/scummvm/scummvm/commit/e11a370fe45aa96d240ff5f10e7263fdfc02bb01
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2016-03-09T21:24:32+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 0dae4ff..db78085 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,11 @@ For a more comprehensive changelog of the latest experimental code, see:
    - Added optional "pause, when entering commands" feature, that was only available
      in the original interpreter for Hercules rendering.
 
+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