From 9319eee100b6c813c2bbe50da79f741e06649018 Mon Sep 17 00:00:00 2001 From: Dmitry Iskrich Date: Tue, 28 Jun 2016 16:58:26 +0300 Subject: [PATCH] DIRECTOR: Loading shared DIB, STXT --- engines/director/director.cpp | 22 ++++++++++++++++++++-- engines/director/director.h | 6 ++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/engines/director/director.cpp b/engines/director/director.cpp index edb36e7d95f6..3fbc0b643fc8 100644 --- a/engines/director/director.cpp +++ b/engines/director/director.cpp @@ -372,7 +372,7 @@ void DirectorEngine::setPalette(byte *palette, uint16 count) { _currentPaletteLength = count; } -Common::HashMap DirectorEngine::loadSharedCastsFrom(Common::String filename) { +void DirectorEngine::loadSharedCastsFrom(Common::String filename) { //TODO d4 arch RIFFArchive *shardcst = new RIFFArchive(); @@ -383,6 +383,24 @@ Common::HashMap DirectorEngine::loadSharedCastsFrom(Common::String Common::SeekableSubReadStreamEndian *castStream = shardcst->getResource(MKTAG('V','W','C','R'), 1024); castScore->loadCastData(*castStream); - return castScore->_casts; + _sharedCasts = castScore->_casts; + Common::Array dib = shardcst->getResourceIDList(MKTAG('D','I','B',' ')); + + if (dib.size() != 0) { + Common::Array::iterator iterator; + for (iterator = dib.begin(); iterator != dib.end(); ++iterator) { + _sharedDIB[*iterator] = shardcst->getResource(MKTAG('D','I','B',' '), *iterator); + } + } + + Common::Array stxt = shardcst->getResourceIDList(MKTAG('D','I','B',' ')); + + if (stxt.size() != 0) { + Common::Array::iterator iterator; + for (iterator = stxt.begin(); iterator != stxt.end(); ++iterator) { + _sharedSTXT[*iterator] = shardcst->getResource(MKTAG('S','T','X','T'), *iterator); + } + } } + } // End of namespace Director diff --git a/engines/director/director.h b/engines/director/director.h index c2559b10fb4f..566bb2ee9a7c 100644 --- a/engines/director/director.h +++ b/engines/director/director.h @@ -66,7 +66,7 @@ class DirectorEngine : public ::Engine { bool hasFeature(EngineFeature f) const; const byte *getPalette() const { return _currentPalette; } uint16 getPaletteColorCount() const { return _currentPaletteLength; } - Common::HashMap loadSharedCastsFrom(Common::String filename); + void loadSharedCastsFrom(Common::String filename); Common::HashMap *_movies; Score *_currentScore; @@ -88,7 +88,9 @@ class DirectorEngine : public ::Engine { void loadMac(); Common::String readPascalString(Common::SeekableReadStream &stream); - + Common::HashMap _sharedCasts; + Common::HashMap _sharedDIB; + Common::HashMap _sharedSTXT; Archive *_mainArchive; Common::MacResManager *_macBinary; DirectorSound *_soundManager;