aboutsummaryrefslogtreecommitdiff
path: root/engines/director/resource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director/resource.cpp')
-rw-r--r--engines/director/resource.cpp10
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;