diff options
Diffstat (limited to 'engines/sherlock/scalpel/scalpel.cpp')
-rw-r--r-- | engines/sherlock/scalpel/scalpel.cpp | 98 |
1 files changed, 97 insertions, 1 deletions
diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp index caa0f70098..42cbf704f3 100644 --- a/engines/sherlock/scalpel/scalpel.cpp +++ b/engines/sherlock/scalpel/scalpel.cpp @@ -562,6 +562,8 @@ bool ScalpelEngine::showCityCutscene3DO() { finished = _animation->play3DO("26open2", true, 1, 0, 2); if (finished) { + _screen->_backBuffer2.blitFrom(*_screen); + // "Sherlock Holmes" (title) ImageFile3DO titleImage_SherlockHolmesTitle("title1ab.cel"); @@ -576,6 +578,29 @@ bool ScalpelEngine::showCityCutscene3DO() { finished = _events->delay(3500, true); } // Title is supposed to get faded away after that + if (finished) { + // Restore screen + _screen->blitFrom(_screen->_backBuffer2); + } + } + + if (finished) + finished = _events->delay(2000); + + if (finished) { + // TODO: fade to black + _screen->clear(); + } + + if (finished) { + // "In the alley behind the Regency Theatre..." + ImageFile3DO titleImage_InTheAlley("title1d.cel"); + + _screen->transBlitFromUnscaled3DO(titleImage_InTheAlley[0]._frame, Common::Point(72, 51)); + // TODO: Supposed to get faded in and out + finished = _events->delay(2500, true); + + // Fade out } return finished; } @@ -583,21 +608,74 @@ bool ScalpelEngine::showCityCutscene3DO() { bool ScalpelEngine::showAlleyCutscene3DO() { bool finished = _animation->play3DO("27PRO1", true, 1, 3, 2); + if (finished) { + // Fade out... + finished = _events->delay(1000, true); + } + if (finished) finished = _animation->play3DO("27PRO2", true, 1, 0, 2); + if (finished) { + // Show screaming victim + ImageFile3DO titleImage_ScreamingVictim("scream.cel"); + + _screen->transBlitFromUnscaled3DO(titleImage_ScreamingVictim[0]._frame, Common::Point(0, 0)); + + // Play "scream.aiff" + if (_sound->_voices) + _sound->playSound("prologue/sounds/scream.aiff", WAIT_RETURN_IMMEDIATELY, 100); + + finished = _events->delay(6000, true); + } + + if (finished) { + // TODO: quick fade out + _screen->clear(); + + finished = _events->delay(2000, true); + } + if (finished) finished = _animation->play3DO("27PRO3", true, 1, 0, 2); + if (finished) { + // Fade to black + _screen->clear(); + } + + if (finished) { + // "Early the following morning on Baker Street..." + ImageFile3DO titleImage_EarlyTheFollowingMorning("title3.cel"); + + _screen->transBlitFromUnscaled3DO(titleImage_EarlyTheFollowingMorning[0]._frame, Common::Point(35, 51)); + // TODO: Fade in + + finished = _events->delay(3000, true); + } + return finished; } bool ScalpelEngine::showStreetCutscene3DO() { - bool finished = _animation->play3DO("14KICK", true, 1, 3, 2); + // wait a bit + bool finished = _events->delay(500); + + if (finished) { + // fade out "Early the following morning..." + _screen->clear(); + + // wait for music a bit + finished = _events->delay(1000, true); + } + + finished = _animation->play3DO("14KICK", true, 1, 3, 2); if (finished) finished = _animation->play3DO("14NOTE", true, 1, 0, 3); + // TODO: fade out + return finished; } @@ -607,6 +685,24 @@ bool ScalpelEngine::showOfficeCutscene3DO() { if (finished) finished = _animation->play3DO("COFF2", true, 1, 0, 3); + if (finished) { + // Show the note + ImageFile3DO titleImage_CoffeeNote("note.cel"); + + _screen->clear(); + _screen->transBlitFromUnscaled3DO(titleImage_CoffeeNote[0]._frame, Common::Point(0, 0)); + + if (_sound->_voices) { + finished = _sound->playSound("prologue/sounds/note.aiff", WAIT_KBD_OR_FINISH); + } else + finished = _events->delay(19000); + + if (finished) { + _events->clearEvents(); + finished = _events->delay(500); + } + } + if (finished) finished = _animation->play3DO("COFF3", true, 1, 0, 3); |