[Scummvm-cvs-logs] SF.net SVN: scummvm:[49822] scummvm/trunk/engines/sci

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Jun 15 14:14:39 CEST 2010


Revision: 49822
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49822&view=rev
Author:   fingolfin
Date:     2010-06-15 12:14:39 +0000 (Tue, 15 Jun 2010)

Log Message:
-----------
SCI: Pass volume number to ResourceSource subclass constructors; make ResourceSource::volume_number const

Modified Paths:
--------------
    scummvm/trunk/engines/sci/resource.cpp
    scummvm/trunk/engines/sci/resource.h
    scummvm/trunk/engines/sci/resource_audio.cpp
    scummvm/trunk/engines/sci/resource_intern.h

Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp	2010-06-15 12:14:15 UTC (rev 49821)
+++ scummvm/trunk/engines/sci/resource.cpp	2010-06-15 12:14:39 UTC (rev 49822)
@@ -168,11 +168,10 @@
 }
 
 
-ResourceSource::ResourceSource(ResSourceType type, const Common::String &name)
- : _sourceType(type), _name(name) {
+ResourceSource::ResourceSource(ResSourceType type, const Common::String &name, int volNum)
+ : _sourceType(type), _name(name), volume_number(volNum) {
 	scanned = false;
 	_resourceFile = 0;
-	volume_number = 0;
 	associated_map = NULL;
 	audioCompressionType = 0;
 	audioCompressionOffsetMapping = NULL;
@@ -181,8 +180,8 @@
 ResourceSource::~ResourceSource() {
 }
 
-MacResourceForkResourceSource::MacResourceForkResourceSource(const Common::String &name)
- : ResourceSource(kSourceMacResourceFork, name) {
+MacResourceForkResourceSource::MacResourceForkResourceSource(const Common::String &name, int volNum)
+ : ResourceSource(kSourceMacResourceFork, name, volNum) {
 	_macResMan = new Common::MacResManager();
 	assert(_macResMan);
 }
@@ -196,28 +195,24 @@
 // Resource source list management
 
 ResourceSource *ResourceManager::addExternalMap(const Common::String &filename, int volume_nr) {
-	ResourceSource *newsrc = new ExtMapResourceSource(filename);
+	ResourceSource *newsrc = new ExtMapResourceSource(filename, volume_nr);
 
-	newsrc->volume_number = volume_nr;
-
 	_sources.push_back(newsrc);
 	return newsrc;
 }
 
 ResourceSource *ResourceManager::addExternalMap(const Common::FSNode *mapFile, int volume_nr) {
-	ResourceSource *newsrc = new ExtMapResourceSource(mapFile->getName());
+	ResourceSource *newsrc = new ExtMapResourceSource(mapFile->getName(), volume_nr);
 
 	newsrc->_resourceFile = mapFile;
-	newsrc->volume_number = volume_nr;
 
 	_sources.push_back(newsrc);
 	return newsrc;
 }
 
-ResourceSource *ResourceManager::addSource(ResourceSource *newsrc, int number) {
+ResourceSource *ResourceManager::addSource(ResourceSource *newsrc) {
 	assert(newsrc);
 
-	newsrc->volume_number = number;
 	if (newsrc->getSourceType() == kSourceAudioVolume) {
 		// TODO: Move this call into the AudioVolumeResourceSource constructor.
 		// Need to verify if this is safe, though; in particular, whether this
@@ -230,11 +225,10 @@
 	return newsrc;
 }
 
-ResourceSource *ResourceManager::addSource(ResourceSource *newsrc, const Common::FSNode *resFile, int number) {
+ResourceSource *ResourceManager::addSource(ResourceSource *newsrc, const Common::FSNode *resFile) {
 	assert(newsrc);
 
 	newsrc->_resourceFile = resFile;
-	newsrc->volume_number = number;
 	if (newsrc->getSourceType() == kSourceAudioVolume) {
 		// TODO: Move this call into the AudioVolumeResourceSource constructor.
 		// Need to verify if this is safe, though; in particular, whether this
@@ -492,12 +486,12 @@
 			const char *dot = strrchr(name.c_str(), '.');
 			int number = atoi(dot + 1);
 
-			addSource(new VolumeResourceSource(name, map), number);
+			addSource(new VolumeResourceSource(name, map, number));
 		}
 #ifdef ENABLE_SCI32
 		// GK1CD hires content
 		if (Common::File::exists("alt.map") && Common::File::exists("resource.alt"))
-			addSource(new VolumeResourceSource("resource.alt", addExternalMap("alt.map", 10)), 10);
+			addSource(new VolumeResourceSource("resource.alt", addExternalMap("alt.map", 10), 10));
 #endif
 	} else if (Common::File::exists("Data1")) {
 		// Mac SCI1.1+ file naming scheme
@@ -505,7 +499,7 @@
 
 		for (Common::ArchiveMemberList::const_iterator x = files.begin(); x != files.end(); ++x) {
 			Common::String filename = (*x)->getName();
-			addSource(new MacResourceForkResourceSource(filename), atoi(filename.c_str() + 4));
+			addSource(new MacResourceForkResourceSource(filename, atoi(filename.c_str() + 4)));
 		}
 #ifdef ENABLE_SCI32
 		// Mac SCI32 games have extra folders for patches
@@ -517,7 +511,7 @@
 
 		// There can also be a "Patches" resource fork with patches
 		if (Common::File::exists("Patches"))
-			addSource(new MacResourceForkResourceSource("Patches"), 100);
+			addSource(new MacResourceForkResourceSource("Patches", 100));
 	} else {
 		// SCI2.1-SCI3 file naming scheme
 		Common::ArchiveMemberList mapFiles;
@@ -537,7 +531,7 @@
 				int resNumber = atoi(strrchr(resName.c_str(), '.') + 1);
 
 				if (mapNumber == resNumber) {
-					addSource(new VolumeResourceSource(resName, addExternalMap(mapName, mapNumber)), mapNumber);
+					addSource(new VolumeResourceSource(resName, addExternalMap(mapName, mapNumber), mapNumber));
 					break;
 				}
 			}
@@ -546,7 +540,7 @@
 		// SCI2.1 resource patches
 		if (Common::File::exists("resmap.pat") && Common::File::exists("ressci.pat")) {
 			// We add this resource with a map which surely won't exist
-			addSource(new VolumeResourceSource("ressci.pat", addExternalMap("resmap.pat", 100)), 100);
+			addSource(new VolumeResourceSource("ressci.pat", addExternalMap("resmap.pat", 100), 100));
 		}
 	}
 #else
@@ -556,7 +550,7 @@
 
 	addPatchDir(".");
 	if (Common::File::exists("message.map"))
-		addSource(new VolumeResourceSource("resource.msg", addExternalMap("message.map")), 0);
+		addSource(new VolumeResourceSource("resource.msg", addExternalMap("message.map"), 0));
 
 	return 1;
 }
@@ -600,7 +594,7 @@
 
 #ifdef ENABLE_SCI32
 	if (sci21PatchMap && sci21PatchRes)
-		addSource(new VolumeResourceSource(sci21PatchRes->getName(), sci21PatchMap), sci21PatchRes, 100);
+		addSource(new VolumeResourceSource(sci21PatchRes->getName(), sci21PatchMap, 100), sci21PatchRes);
 #endif
 
 	// Now find all the resource.0?? files
@@ -615,7 +609,7 @@
 			const char *dot = strrchr(filename.c_str(), '.');
 			int number = atoi(dot + 1);
 
-			addSource(new VolumeResourceSource(file->getName(), map), file, number);
+			addSource(new VolumeResourceSource(file->getName(), map, number), file);
 		}
 	}
 
@@ -630,12 +624,12 @@
 	Common::List<ResourceId>::iterator itr = resources->begin();
 
 	while (itr != resources->end()) {
-		ResourceSource *src = addSource(new IntMapResourceSource("MAP"), itr->number);
+		ResourceSource *src = addSource(new IntMapResourceSource("MAP", itr->number));
 
 		if ((itr->number == 65535) && Common::File::exists("RESOURCE.SFX"))
-			addSource(new AudioVolumeResourceSource("RESOURCE.SFX", src), 0);
+			addSource(new AudioVolumeResourceSource("RESOURCE.SFX", src, 0));
 		else if (Common::File::exists("RESOURCE.AUD"))
-			addSource(new AudioVolumeResourceSource("RESOURCE.AUD", src), 0);
+			addSource(new AudioVolumeResourceSource("RESOURCE.AUD", src, 0));
 
 		++itr;
 	}

Modified: scummvm/trunk/engines/sci/resource.h
===================================================================
--- scummvm/trunk/engines/sci/resource.h	2010-06-15 12:14:15 UTC (rev 49821)
+++ scummvm/trunk/engines/sci/resource.h	2010-06-15 12:14:39 UTC (rev 49822)
@@ -339,9 +339,9 @@
 	 * @param source	The new source to add
 	 * @return A pointer to the added source structure, or NULL if an error occurred.
 	 */
-	ResourceSource *addSource(ResourceSource *source, int number);
+	ResourceSource *addSource(ResourceSource *source);
 
-	ResourceSource *addSource(ResourceSource *source, const Common::FSNode *resFile, int number);
+	ResourceSource *addSource(ResourceSource *source, const Common::FSNode *resFile);
 
 	/**
 	 * Add an external (i.e., separate file) map resource to the resource manager's list of sources.

Modified: scummvm/trunk/engines/sci/resource_audio.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource_audio.cpp	2010-06-15 12:14:15 UTC (rev 49821)
+++ scummvm/trunk/engines/sci/resource_audio.cpp	2010-06-15 12:14:39 UTC (rev 49822)
@@ -33,6 +33,10 @@
 
 namespace Sci {
 
+AudioVolumeResourceSource::AudioVolumeResourceSource(const Common::String &name, ResourceSource *map, int volNum)
+	: VolumeResourceSource(name, map, volNum, kSourceAudioVolume) {
+}
+
 void ResourceManager::checkIfAudioVolumeIsCompressed(ResourceSource *source) {
 	Common::SeekableReadStream *fileStream = getVolumeFile(source);
 
@@ -433,7 +437,7 @@
 		return;
 	}
 
-	_audioMapSCI1 = addSource(new ExtAudioMapResourceSource(fullname), language);
+	_audioMapSCI1 = addSource(new ExtAudioMapResourceSource(fullname, language));
 
 	// Search for audio volumes for this language and add them to the source list
 	Common::ArchiveMemberList files;
@@ -443,7 +447,7 @@
 		const char *dot = strrchr(name.c_str(), '.');
 		int number = atoi(dot + 1);
 
-		addSource(new AudioVolumeResourceSource(name, _audioMapSCI1), number);
+		addSource(new AudioVolumeResourceSource(name, _audioMapSCI1, number));
 	}
 
 	scanNewSources();

Modified: scummvm/trunk/engines/sci/resource_intern.h
===================================================================
--- scummvm/trunk/engines/sci/resource_intern.h	2010-06-15 12:14:15 UTC (rev 49821)
+++ scummvm/trunk/engines/sci/resource_intern.h	2010-06-15 12:14:39 UTC (rev 49822)
@@ -55,13 +55,13 @@
 public:
 	bool scanned;
 	const Common::FSNode *_resourceFile;
-	int volume_number;
+	const int volume_number;
 	ResourceSource *associated_map;	// TODO: Move to VolumeResourceSource
 	uint32 audioCompressionType;	// TODO: Move to AudioVolumeResourceSource
 	int32 *audioCompressionOffsetMapping;	// TODO: Move to AudioVolumeResourceSource
 
 protected:
-	ResourceSource(ResSourceType type, const Common::String &name);
+	ResourceSource(ResSourceType type, const Common::String &name, int volNum = 0);
 public:
 	virtual ~ResourceSource();
 
@@ -74,7 +74,7 @@
 	/**
 	 * TODO: Document this
 	 */
-	virtual ResourceSource *findVolume(ResourceSource *map, int volume_nr) {
+	virtual ResourceSource *findVolume(ResourceSource *map, int volNum) {
 		return NULL;
 	};
 
@@ -107,13 +107,13 @@
 
 class VolumeResourceSource : public ResourceSource {
 public:
-	VolumeResourceSource(const Common::String &name, ResourceSource *map, ResSourceType type = kSourceVolume)
-		: ResourceSource(type, name) {
+	VolumeResourceSource(const Common::String &name, ResourceSource *map, int volNum, ResSourceType type = kSourceVolume)
+		: ResourceSource(type, name, volNum) {
 		associated_map = map;
 	}
 
-	virtual ResourceSource *findVolume(ResourceSource *map, int volume_nr) {
-		if (associated_map == map && volume_number == volume_nr)
+	virtual ResourceSource *findVolume(ResourceSource *map, int volNum) {
+		if (associated_map == map && volume_number == volNum)
 			return this;
 		return NULL;
 	};
@@ -121,30 +121,34 @@
 
 class ExtMapResourceSource : public ResourceSource {
 public:
-	ExtMapResourceSource(const Common::String &name) : ResourceSource(kSourceExtMap, name) {}
+	ExtMapResourceSource(const Common::String &name, int volNum)
+		: ResourceSource(kSourceExtMap, name, volNum) {
+	}
 
 	virtual void scanSource(ResourceManager *resMan);
 };
 
 class IntMapResourceSource : public ResourceSource {
 public:
-	IntMapResourceSource(const Common::String &name) : ResourceSource(kSourceIntMap, name) {}
+	IntMapResourceSource(const Common::String &name, int volNum)
+		: ResourceSource(kSourceIntMap, name, volNum) {
+	}
 
 	virtual void scanSource(ResourceManager *resMan);
 };
 
 class AudioVolumeResourceSource : public VolumeResourceSource {
 public:
-	AudioVolumeResourceSource(const Common::String &name, ResourceSource *map)
-		: VolumeResourceSource(name, map, kSourceAudioVolume) {
-	}
+	AudioVolumeResourceSource(const Common::String &name, ResourceSource *map, int volNum);
 
 	virtual void loadResource(Resource *res, ResourceManager *resMan);
 };
 
 class ExtAudioMapResourceSource : public ResourceSource {
 public:
-	ExtAudioMapResourceSource(const Common::String &name) : ResourceSource(kSourceExtAudioMap, name) {}
+	ExtAudioMapResourceSource(const Common::String &name, int volNum)
+		: ResourceSource(kSourceExtAudioMap, name, volNum) {
+	}
 
 	virtual void scanSource(ResourceManager *resMan);
 };
@@ -161,7 +165,7 @@
 	Common::MacResManager *_macResMan;
 
 public:
-	MacResourceForkResourceSource(const Common::String &name);
+	MacResourceForkResourceSource(const Common::String &name, int volNum);
 	~MacResourceForkResourceSource();
 
 	/**


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list