SCI: Add virtual method ResourceSource::scanSource
svn-id: r49816
This commit is contained in:
parent
89cf6f7cb1
commit
055ee6ab5b
3 changed files with 56 additions and 28 deletions
|
@ -623,38 +623,41 @@ void ResourceManager::scanNewSources() {
|
|||
|
||||
if (!source->scanned) {
|
||||
source->scanned = true;
|
||||
switch (source->getSourceType()) {
|
||||
case kSourceDirectory:
|
||||
readResourcePatches(source);
|
||||
|
||||
// We can't use getSciVersion() at this point, thus using _volVersion
|
||||
if (_volVersion >= kResVersionSci11) // SCI1.1+
|
||||
readResourcePatchesBase36(source);
|
||||
|
||||
readWaveAudioPatches();
|
||||
break;
|
||||
case kSourceExtMap:
|
||||
if (_mapVersion < kResVersionSci1Late)
|
||||
readResourceMapSCI0(source);
|
||||
else
|
||||
readResourceMapSCI1(source);
|
||||
break;
|
||||
case kSourceExtAudioMap:
|
||||
readAudioMapSCI1(source);
|
||||
break;
|
||||
case kSourceIntMap:
|
||||
readAudioMapSCI11(source);
|
||||
break;
|
||||
case kSourceMacResourceFork:
|
||||
readMacResourceFork(source);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
source->scanSource(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DirectoryResourceSource::scanSource(ResourceManager *resMan) {
|
||||
resMan->readResourcePatches(this);
|
||||
|
||||
// We can't use getSciVersion() at this point, thus using _volVersion
|
||||
if (resMan->_volVersion >= ResourceManager::kResVersionSci11) // SCI1.1+
|
||||
resMan->readResourcePatchesBase36(this);
|
||||
|
||||
resMan->readWaveAudioPatches();
|
||||
}
|
||||
|
||||
void ExtMapResourceSource::scanSource(ResourceManager *resMan) {
|
||||
if (resMan->_mapVersion < ResourceManager::kResVersionSci1Late)
|
||||
resMan->readResourceMapSCI0(this);
|
||||
else
|
||||
resMan->readResourceMapSCI1(this);
|
||||
}
|
||||
|
||||
void ExtAudioMapResourceSource::scanSource(ResourceManager *resMan) {
|
||||
resMan->readAudioMapSCI1(this);
|
||||
}
|
||||
|
||||
void IntMapResourceSource::scanSource(ResourceManager *resMan) {
|
||||
resMan->readAudioMapSCI11(this);
|
||||
}
|
||||
|
||||
void MacResourceForkResourceSource::scanSource(ResourceManager *resMan) {
|
||||
resMan->readMacResourceFork(this);
|
||||
}
|
||||
|
||||
|
||||
void ResourceManager::freeResourceSources() {
|
||||
for (Common::List<ResourceSource *>::iterator it = _sources.begin(); it != _sources.end(); ++it)
|
||||
delete *it;
|
||||
|
|
|
@ -194,6 +194,15 @@ protected:
|
|||
typedef Common::HashMap<ResourceId, Resource *, ResourceIdHash, ResourceIdEqualTo> ResourceMap;
|
||||
|
||||
class ResourceManager {
|
||||
// FIXME: These 'friend' declarations are meant to be a temporary hack to
|
||||
// ease transition to the ResourceSource class system.
|
||||
friend class ResourceSource;
|
||||
friend class DirectoryResourceSource;
|
||||
friend class ExtMapResourceSource;
|
||||
friend class IntMapResourceSource;
|
||||
friend class ExtAudioMapResourceSource;
|
||||
friend class MacResourceForkResourceSource;
|
||||
|
||||
public:
|
||||
enum ResVersion {
|
||||
kResVersionUnknown,
|
||||
|
|
|
@ -72,11 +72,19 @@ public:
|
|||
virtual ResourceSource *findVolume(ResourceSource *map, int volume_nr) {
|
||||
return NULL;
|
||||
};
|
||||
|
||||
/**
|
||||
* Scan this source for TODO.
|
||||
* TODO: The resMan param for now is just a hack.
|
||||
*/
|
||||
virtual void scanSource(ResourceManager *resMan) {}
|
||||
};
|
||||
|
||||
class DirectoryResourceSource : public ResourceSource {
|
||||
public:
|
||||
DirectoryResourceSource(const Common::String &name) : ResourceSource(kSourceDirectory, name) {}
|
||||
|
||||
virtual void scanSource(ResourceManager *resMan);
|
||||
};
|
||||
|
||||
class PatchResourceSource : public ResourceSource {
|
||||
|
@ -101,11 +109,15 @@ public:
|
|||
class ExtMapResourceSource : public ResourceSource {
|
||||
public:
|
||||
ExtMapResourceSource(const Common::String &name) : ResourceSource(kSourceExtMap, name) {}
|
||||
|
||||
virtual void scanSource(ResourceManager *resMan);
|
||||
};
|
||||
|
||||
class IntMapResourceSource : public ResourceSource {
|
||||
public:
|
||||
IntMapResourceSource(const Common::String &name) : ResourceSource(kSourceIntMap, name) {}
|
||||
|
||||
virtual void scanSource(ResourceManager *resMan);
|
||||
};
|
||||
|
||||
class AudioVolumeResourceSource : public VolumeResourceSource {
|
||||
|
@ -118,6 +130,8 @@ public:
|
|||
class ExtAudioMapResourceSource : public ResourceSource {
|
||||
public:
|
||||
ExtAudioMapResourceSource(const Common::String &name) : ResourceSource(kSourceExtAudioMap, name) {}
|
||||
|
||||
virtual void scanSource(ResourceManager *resMan);
|
||||
};
|
||||
|
||||
class WaveResourceSource : public ResourceSource {
|
||||
|
@ -128,6 +142,8 @@ public:
|
|||
class MacResourceForkResourceSource : public ResourceSource {
|
||||
public:
|
||||
MacResourceForkResourceSource(const Common::String &name) : ResourceSource(kSourceMacResourceFork, name) {}
|
||||
|
||||
virtual void scanSource(ResourceManager *resMan);
|
||||
};
|
||||
|
||||
} // End of namespace Sci
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue