[Scummvm-cvs-logs] CVS: scummvm/scumm scumm.cpp,1.67,1.68 scumm.h,1.418,1.419

Max Horn fingolfin at users.sourceforge.net
Sun Jun 27 17:08:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6146/scumm

Modified Files:
	scumm.cpp scumm.h 
Log Message:
Enhanced default directory support in the File class; now one can specify arbitrary many default search directories

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -d -r1.67 -r1.68
--- scumm.cpp	27 Jun 2004 22:19:21 -0000	1.67
+++ scumm.cpp	28 Jun 2004 00:06:16 -0000	1.68
@@ -352,6 +352,50 @@
 	  gdi(this), _pauseDialog(0), _optionsDialog(0), _mainMenuDialog(0),
 	  _targetName(detector->_targetName) {
 
+	// Add default file directories.
+	// FIXME: Which games use "rooms" or "ROOMS" ???
+	if (_version < 7) {
+		File::addDefaultDirectory(_gameDataPath + "/ROOMS/");
+		File::addDefaultDirectory(_gameDataPath + "/rooms/");
+	}
+
+	if ((_features & GF_MACINTOSH) && (_version == 3)) {
+		// This is the for the Mac version of Indy3/Loom
+		File::addDefaultDirectory(_gameDataPath + "/Rooms 1/");
+		File::addDefaultDirectory(_gameDataPath + "/Rooms 2/");
+		File::addDefaultDirectory(_gameDataPath + "/Rooms 3/");
+	}
+
+#ifdef MACOSX
+	if (_version == 8 && !memcmp(_gameDataPath.c_str(), "/Volumes/MONKEY3_", 17)) {
+		// Special case for COMI on Mac OS X. The mount points on OS X depend
+		// on the volume name. Hence if playing from CD, we'd get a problem.
+		// So if loading of a resource file fails, we fall back to the (fixed)
+		// CD mount points (/Volumes/MONKEY3_1 and /Volumes/MONKEY3_2).
+		//
+		// This check for whether we play from CD is very crude, though.
+
+		File::addDefaultDirectory("/Volumes/MONKEY3_1/RESOURCE/");
+		File::addDefaultDirectory("/Volumes/MONKEY3_1/resource/");
+		File::addDefaultDirectory("/Volumes/MONKEY3_2/");
+		File::addDefaultDirectory("/Volumes/MONKEY3_2/RESOURCE/");
+		File::addDefaultDirectory("/Volumes/MONKEY3_2/resource/");
+	} else
+#endif
+	if (_version == 8) {
+		// This is for COMI
+		File::addDefaultDirectory(_gameDataPath + "/RESOURCE/");
+		File::addDefaultDirectory(_gameDataPath + "/resource/");
+	}
+
+	if (_version == 7) {
+		// This is for Full Throttle & The Dig
+		File::addDefaultDirectory(_gameDataPath + "/VIDEO/");
+		File::addDefaultDirectory(_gameDataPath + "/video/");
+		File::addDefaultDirectory(_gameDataPath + "/DATA/");
+		File::addDefaultDirectory(_gameDataPath + "/data/");
+	}
+
 	// Init all vars - maybe now we can get rid of our custom new/delete operators?
 	_imuse = NULL;
 	_imuseDigital = NULL;
@@ -2770,42 +2814,6 @@
 	return 	_2byteFontPtr + ((_2byteWidth + 7) / 8) * _2byteHeight * idx;
 }
 
-
-const char *ScummEngine::getGameDataPath() const {
-#ifdef MACOSX
-	if (_version == 8 && !memcmp(_gameDataPath.c_str(), "/Volumes/MONKEY3_", 17)) {
-		// TODO: The following hack is currently inactive, since Fingolfin
-		// removed most calls to getGameDataPath(). This will soon be put 
-		// back into place once the File::setDefaultDirectory() method is
-		// replaced by a more flexible system...
-
-	
-		// Special case for COMI on Mac OS X. The mount points on OS X depend
-		// on the volume name. Hence if playing from CD, we'd get a problem.
-		// So if loading of a resource file fails, we fall back to the (fixed)
-		// CD mount points (/Volumes/MONKEY3_1 and /Volumes/MONKEY3_2).
-		//
-		// The check for whether we play from CD or not is very hackish, though.
-		static char buf[256];
-		struct stat st;
-		int disk = (_scummVars && _scummVars[VAR_CURRENTDISK] == 2) ? 2 : 1;
-		sprintf(buf, "/Volumes/MONKEY3_%d", disk);
-	
-		if (!stat(buf, &st)) {
-			return buf;
-		}
-	
-		// Apparently that disk is not inserted. However since many data files
-		// (fonts, comi.la0) are on both disks, we also try the other CD.
-		disk = (disk == 1) ? 2 : 1;
-		sprintf(buf, "/Volumes/MONKEY3_%d", disk);
-		return buf;
-	}
-#endif
-
-	return _gameDataPath.c_str();
-}
-
 void ScummEngine::errorString(const char *buf1, char *buf2) {
 	if (_currentScript != 0xFF) {
 		ScriptSlot *ss = &vm.slot[_currentScript];

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.418
retrieving revision 1.419
diff -u -d -r1.418 -r1.419
--- scumm.h	27 Jun 2004 21:06:03 -0000	1.418
+++ scumm.h	28 Jun 2004 00:06:16 -0000	1.419
@@ -387,7 +387,6 @@
 	// Misc utility functions
 	uint32 _debugFlags;
 	const char *getGameName() const { return _gameName.c_str(); }
-	const char *getGameDataPath() const;
 
 	// Cursor/palette
 	void updateCursor();





More information about the Scummvm-git-logs mailing list