diff options
Diffstat (limited to 'engines/director/resource.cpp')
-rw-r--r-- | engines/director/resource.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp index 61e46e9a8d..bcf5db61bc 100644 --- a/engines/director/resource.cpp +++ b/engines/director/resource.cpp @@ -210,7 +210,15 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) { Score *castScore = new Score(this, shardcst); castScore->loadConfig(*shardcst->getResource(MKTAG('V','W','C','F'), 1024)); - castScore->loadCastData(*shardcst->getResource(MKTAG('V','W','C','R'), 1024)); + + if (getVersion() < 4) + castScore->loadCastDataD2(*shardcst->getResource(MKTAG('V','W','C','R'), 1024)); + + Common::Array<uint16> cast = shardcst->getResourceIDList(MKTAG('C','A','S','t')); + if (cast.size() > 0) { + for (Common::Array<uint16>::iterator iterator = cast.begin(); iterator != cast.end(); ++iterator) + castScore->loadCastData(*shardcst->getResource(MKTAG('C','A','S','t'), *iterator), *iterator); + } _sharedCasts = &castScore->_casts; |