diff options
author | Paul Gilbert | 2015-05-23 10:39:47 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-05-23 10:39:47 -0400 |
commit | c8cfca749a5da09aead4ca0c499def9afab5317c (patch) | |
tree | d6b2d455ad31258e0113a1dfe7185f588935d5ef /engines/sherlock/scene.cpp | |
parent | b4b6bf63dbfd3f952f4ca207467315396b53bd23 (diff) | |
download | scummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.tar.gz scummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.tar.bz2 scummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.zip |
SHERLOCK: Fix Rose Tattoo scene loading problems from merge
Diffstat (limited to 'engines/sherlock/scene.cpp')
-rw-r--r-- | engines/sherlock/scene.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp index 2c80bfbd39..933e60d96d 100644 --- a/engines/sherlock/scene.cpp +++ b/engines/sherlock/scene.cpp @@ -311,27 +311,32 @@ bool Scene::loadScene(const Common::String &filename) { bgInfo[idx].load(*rrmStream); // Read information - if (IS_SERRATED_SCALPEL) { - Common::SeekableReadStream *infoStream = !_lzwMode ? rrmStream : - res.decompress(*rrmStream, bgHeader._numStructs * 569 + bgHeader._descSize + bgHeader._seqSize); + if (IS_ROSE_TATTOO) { + // Load shapes + Common::SeekableReadStream *infoStream = !_lzwMode ? rrmStream : res.decompress(*rrmStream, bgHeader._numStructs * 625); _bgShapes.resize(bgHeader._numStructs); for (int idx = 0; idx < bgHeader._numStructs; ++idx) - _bgShapes[idx].load(*infoStream, false); + _bgShapes[idx].load(*infoStream, _vm->getGameID() == GType_RoseTattoo); - if (bgHeader._descSize) { - _descText.resize(bgHeader._descSize); - infoStream->read(&_descText[0], bgHeader._descSize); - } + if (_lzwMode) + delete infoStream; - if (bgHeader._seqSize) { - _sequenceBuffer.resize(bgHeader._seqSize); - infoStream->read(&_sequenceBuffer[0], bgHeader._seqSize); - } + // Load description text + _descText.resize(bgHeader._descSize); + if (_lzwMode) + res.decompress(*rrmStream, (byte *)&_descText[0], bgHeader._descSize); + else + rrmStream->read(&_descText[0], bgHeader._descSize); + // Load sequences + _sequenceBuffer.resize(bgHeader._seqSize); if (_lzwMode) - delete infoStream; + res.decompress(*rrmStream, &_sequenceBuffer[0], bgHeader._seqSize); + else + rrmStream->read(&_sequenceBuffer[0], bgHeader._seqSize); } else if (!_lzwMode) { + // Serrated Scalpel uncompressed info _bgShapes.resize(bgHeader._numStructs); for (int idx = 0; idx < bgHeader._numStructs; ++idx) _bgShapes[idx].load(*rrmStream, false); @@ -346,6 +351,7 @@ bool Scene::loadScene(const Common::String &filename) { rrmStream->read(&_sequenceBuffer[0], bgHeader._seqSize); } } else { + // Serrated Scalpel compressed info Common::SeekableReadStream *infoStream; // Read shapes |