aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scalpel/scalpel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/scalpel/scalpel.cpp')
-rw-r--r--engines/sherlock/scalpel/scalpel.cpp98
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);