aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/director/score.cpp33
-rw-r--r--engines/director/score.h3
2 files changed, 19 insertions, 17 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 8a40670cf7..04b61a6778 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -59,12 +59,25 @@ Score::Score(DirectorEngine *vm) {
}
void Score::loadArchive() {
+ Common::Array<uint16> clutList = _movieArchive->getResourceIDList(MKTAG('C','L','U','T'));
+
+ if (clutList.size() > 1)
+ error("More than one palette was found");
+
+ if (clutList.size() == 0)
+ error("CLUT not found");
+
+ Common::SeekableReadStream *pal = _movieArchive->getResource(MKTAG('C', 'L', 'U', 'T'), clutList[0]);
+
+ loadPalette(*pal);
+ g_system->getPaletteManager()->setPalette(_vm->getPalette(), 0, _vm->getPaletteColorCount());
assert(_movieArchive->hasResource(MKTAG('V','W','S','C'), 1024));
assert(_movieArchive->hasResource(MKTAG('V','W','C','F'), 1024));
assert(_movieArchive->hasResource(MKTAG('V','W','C','R'), 1024));
loadFrames(*_movieArchive->getResource(MKTAG('V','W','S','C'), 1024));
loadConfig(*_movieArchive->getResource(MKTAG('V','W','C','F'), 1024));
loadCastData(*_movieArchive->getResource(MKTAG('V','W','C','R'), 1024));
+
if (_movieArchive->hasResource(MKTAG('V','W','A','C'), 1024)) {
loadActions(*_movieArchive->getResource(MKTAG('V','W','A','C'), 1024));
}
@@ -95,20 +108,6 @@ void Score::loadArchive() {
loadScriptText(*_movieArchive->getResource(MKTAG('S','T','X','T'), *iterator));
}
}
-
-
- Common::Array<uint16> clutList = _movieArchive->getResourceIDList(MKTAG('C','L','U','T'));
-
- if (clutList.size() > 1)
- error("More than one palette was found");
-
- if (clutList.size() == 0)
- error("CLUT not found");
-
- Common::SeekableReadStream *pal = _movieArchive->getResource(MKTAG('C', 'L', 'U', 'T'), clutList[0]);
-
- loadPalette(*pal);
- g_system->getPaletteManager()->setPalette(_vm->getPalette(), 0, _vm->getPaletteColorCount());
}
Score::~Score() {
@@ -148,7 +147,7 @@ void Score::loadFrames(Common::SeekableReadStream &stream) {
uint16 channelSize;
uint16 channelOffset;
- Frame *initial = new Frame();
+ Frame *initial = new Frame(_vm);
_frames.push_back(initial);
while (size != 0) {
@@ -652,7 +651,8 @@ void Score::processEvents() {
}
}
-Frame::Frame() {
+Frame::Frame(DirectorEngine *vm) {
+ _vm = vm;
_transDuration = 0;
_transArea = 0;
_transChunkSize = 0;
@@ -676,6 +676,7 @@ Frame::Frame() {
}
Frame::Frame(const Frame &frame) {
+ _vm = frame._vm;
_actionId = frame._actionId;
_transArea = frame._transArea;
_transDuration = frame._transDuration;
diff --git a/engines/director/score.h b/engines/director/score.h
index 9ac8685090..626e47b415 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -246,7 +246,7 @@ public:
class Frame {
public:
- Frame();
+ Frame(DirectorEngine *vm);
Frame(const Frame &frame);
~Frame();
@@ -282,6 +282,7 @@ public:
uint8 _blend;
Common::Array<Sprite *> _sprites;
Common::Array<Common::Rect > _drawRects;
+ DirectorEngine *_vm;
};
class Score {