diff options
-rw-r--r-- | engines/sci/resource.cpp | 10 | ||||
-rw-r--r-- | engines/sci/resource_intern.h | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 9a53627df3..0846b93d04 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -345,6 +345,14 @@ Common::SeekableReadStream *ResourceManager::getVolumeFile(ResourceSource *sourc Common::List<Common::File *>::iterator it = _volumeFiles.begin(); Common::File *file; +#ifdef ENABLE_SCI32 + ChunkResourceSource *chunkSource = dynamic_cast<ChunkResourceSource *>(source); + if (chunkSource != nullptr) { + Resource *res = findResource(ResourceId(kResourceTypeChunk, chunkSource->getNumber()), false); + return res ? res->makeStream() : nullptr; + } +#endif + if (source->_resourceFile) return source->_resourceFile->createReadStream(); @@ -843,7 +851,7 @@ void IntMapResourceSource::scanSource(ResourceManager *resMan) { ChunkResourceSource::ChunkResourceSource(const Common::String &name, uint16 number) : ResourceSource(kSourceChunk, name) { - _number = 0; + _number = number; } void ChunkResourceSource::scanSource(ResourceManager *resMan) { diff --git a/engines/sci/resource_intern.h b/engines/sci/resource_intern.h index fe4b0a97f4..f198eddeb3 100644 --- a/engines/sci/resource_intern.h +++ b/engines/sci/resource_intern.h @@ -204,6 +204,8 @@ public: virtual void scanSource(ResourceManager *resMan); virtual void loadResource(ResourceManager *resMan, Resource *res); + uint16 getNumber() const { return _number; } + protected: uint16 _number; |