diff options
Diffstat (limited to 'engines/director')
-rw-r--r-- | engines/director/director.cpp | 10 | ||||
-rw-r--r-- | engines/director/score.cpp | 13 | ||||
-rw-r--r-- | 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 bd08adfb2f..a044f23cc4 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 abeb894145..ed4d11ffe5 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 0656ed1d6b..ba10f2df7e 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -184,17 +184,17 @@ public: 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<Frame *> _frames; Common::HashMap<int, Cast *> _casts; |