diff options
Diffstat (limited to 'engines/director/director.cpp')
-rw-r--r-- | engines/director/director.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/director/director.cpp b/engines/director/director.cpp index 2081ebdc89..c7ae940873 100644 --- a/engines/director/director.cpp +++ b/engines/director/director.cpp @@ -58,6 +58,11 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam _currentPalette = 0; //FIXME _sharedMMM = "SHARDCST.MMM"; + _sharedCasts = new Common::HashMap<int, Cast *>(); + _sharedDIB = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>(); + _sharedBMP = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>(); + _sharedSTXT = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>(); + _sharedSound = new Common::HashMap<int, Common::SeekableSubReadStreamEndian *>(); _movies = new Common::HashMap<Common::String, Score *>(); const Common::FSNode gameDataDir(ConfMan.get("path")); @@ -423,6 +428,15 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) { } } + Common::Array<uint16> bmp = shardcst->getResourceIDList(MKTAG('B','I','T','D')); + + if (bmp.size() != 0) { + Common::Array<uint16>::iterator iterator; + for (iterator = bmp.begin(); iterator != bmp.end(); ++iterator) { + _sharedBMP->setVal(*iterator, shardcst->getResource(MKTAG('B','I','T','D'), *iterator)); + } + } + Common::Array<uint16> sound = shardcst->getResourceIDList(MKTAG('S','N','D',' ')); if (stxt.size() != 0) { |