From f8583622848e1d3d451871ad944645b38714b3ce Mon Sep 17 00:00:00 2001 From: Dmitry Iskrich Date: Wed, 1 Jun 2016 17:38:09 +0300 Subject: [PATCH] DIRECTOR: Move score loading resource to constructor --- engines/director/director.cpp | 10 +--------- engines/director/score.cpp | 13 +++++++++++-- engines/director/score.h | 10 +++++----- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/engines/director/director.cpp b/engines/director/director.cpp index bd08adfb2f92..a044f23cc4a2 100644 --- a/engines/director/director.cpp +++ b/engines/director/director.cpp @@ -70,15 +70,7 @@ Common::Error DirectorEngine::run() { _mainArchive = new RIFFArchive(); _mainArchive->openFile("bookshelf_example.mmm"); - Common::SeekableReadStream *scr = _mainArchive->getResource(MKTAG('V','W','S','C'), 1024); - Score score(*scr, *_mainArchive); - - Common::SeekableReadStream *conf = _mainArchive->getResource(MKTAG('V','W','C','F'), 1024); - score.loadConfig(*conf); - - Common::SeekableReadStream *records = _mainArchive->getResource(MKTAG('V','W','C','R'), 1024); - score.loadCastData(*records); - + Score score(*_mainArchive); score.play(); if (getPlatform() == Common::kPlatformWindows) diff --git a/engines/director/score.cpp b/engines/director/score.cpp index abeb894145b7..ed4d11ffe574 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -35,11 +35,20 @@ namespace Director { -Score::Score(Common::SeekableReadStream &stream, Archive &movie) { +Score::Score(Archive &movie) { _surface = new Graphics::ManagedSurface; - _movieArchive = &movie; + 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)); +} + +void Score::loadFrames(Common::SeekableReadStream &stream) { uint32 size = stream.readUint32BE(); size -= 4; uint16 channelSize; diff --git a/engines/director/score.h b/engines/director/score.h index 0656ed1d6bac..ba10f2df7e7c 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -184,17 +184,17 @@ class Frame { class Score { public: - Score(Common::SeekableReadStream &stream, Archive &movie); - void readVersion(uint32 rid); - void loadConfig(Common::SeekableReadStream &stream); - void loadCastData(Common::SeekableReadStream &stream); + Score(Archive &movie); static Common::Rect readRect(Common::SeekableReadStream &stream); void play(); private: void processEvents(); void display(); - + void readVersion(uint32 rid); + void loadConfig(Common::SeekableReadStream &stream); + void loadCastData(Common::SeekableReadStream &stream); + void loadFrames(Common::SeekableReadStream &stream); public: Common::Array _frames; Common::HashMap _casts;