diff options
author | Thomas Fach-Pedersen | 2014-05-17 17:13:49 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-09-29 22:21:00 +0200 |
commit | f0432bdf2568a0390e02ff18dd73ea5296a007e2 (patch) | |
tree | 855c77dc0ed4c14bf2012391ac863d51f33aab4c /engines/bladerunner/bladerunner.cpp | |
parent | 5c69ed59951c9436c5dd450396fc16dd5ab38f83 (diff) | |
download | scummvm-rg350-f0432bdf2568a0390e02ff18dd73ea5296a007e2.tar.gz scummvm-rg350-f0432bdf2568a0390e02ff18dd73ea5296a007e2.tar.bz2 scummvm-rg350-f0432bdf2568a0390e02ff18dd73ea5296a007e2.zip |
BLADERUNNER: Split VQA decoder into player and decoder, add Outtake player
Diffstat (limited to 'engines/bladerunner/bladerunner.cpp')
-rw-r--r-- | engines/bladerunner/bladerunner.cpp | 51 |
1 files changed, 4 insertions, 47 deletions
diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index 7e8466c14a..bcf8c090a8 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -25,6 +25,7 @@ #include "bladerunner/chapters.h" #include "bladerunner/gameinfo.h" #include "bladerunner/image.h" +#include "bladerunner/outtake.h" #include "bladerunner/settings.h" #include "bladerunner/vqa_decoder.h" @@ -206,56 +207,12 @@ void BladeRunnerEngine::handleEvents() { } } -void BladeRunnerEngine::playOuttake(int id, bool no_localization) { +void BladeRunnerEngine::outtakePlay(int id, bool noLocalization, int container) { Common::String name = _gameInfo->getOuttake(id); - if (no_localization) - name += ".VQA"; - else - name += "_E.VQA"; + OuttakePlayer player(this); - Common::SeekableReadStream *s = getResourceStream(name); - if (!s) - return; - - VQADecoder vqa_decoder(s); - - bool b = vqa_decoder.readHeader(); - if (!b) return; - - uint32 frame_count = 0; - uint32 start_time = 0; - uint32 next_frame_time = 0; - - for (;;) - { - handleEvents(); - // TODO: Handle skips - if (shouldQuit()) - break; - - uint32 cur_time = next_frame_time + 1; - - if (next_frame_time <= cur_time) - { - int frame_number = vqa_decoder.readFrame(); - debug("frame_number: %d", frame_number); - - if (frame_number < 0) - break; - - b = vqa_decoder.decodeFrame((uint16*)_surface1.getPixels()); - - _system->copyRectToScreen(_surface1.getPixels(), _surface1.pitch, 0, 0, _surface1.w, _surface1.h); - _system->updateScreen(); - - ++frame_count; - - if (!next_frame_time) - next_frame_time = cur_time; - next_frame_time = next_frame_time + (60 * 1000) / 15; - } - } + player.play(name, noLocalization, -1); } bool BladeRunnerEngine::openArchive(const Common::String &name) { |