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.)
This commit is contained in:
parent
0f2e7fcdf0
commit
e11a370fe4
2 changed files with 29 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue