aboutsummaryrefslogtreecommitdiff
path: root/engines/drascula/animation.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2008-09-16 10:44:07 +0000
committerFilippos Karapetis2008-09-16 10:44:07 +0000
commitd95e0059a22677bcf93864471bbab453ddf29377 (patch)
treea4c9d82de1ab7b5c6a5e3b7d0f5f23fcb70185bd /engines/drascula/animation.cpp
parentc36c58ca40df93e091c499f534362453d92e5ffa (diff)
downloadscummvm-rg350-d95e0059a22677bcf93864471bbab453ddf29377.tar.gz
scummvm-rg350-d95e0059a22677bcf93864471bbab453ddf29377.tar.bz2
scummvm-rg350-d95e0059a22677bcf93864471bbab453ddf29377.zip
Cleaned up and fixed the cutscene with Von Braun's story. Fixes bugs #2111804 - "DRASCULA: Cut scene bugs" and #2059648 - "DRASCULA: VonBraun's song"
svn-id: r34574
Diffstat (limited to 'engines/drascula/animation.cpp')
-rw-r--r--engines/drascula/animation.cpp117
1 files changed, 27 insertions, 90 deletions
diff --git a/engines/drascula/animation.cpp b/engines/drascula/animation.cpp
index 5dacaec9eb..7d1fe92301 100644
--- a/engines/drascula/animation.cpp
+++ b/engines/drascula/animation.cpp
@@ -744,124 +744,61 @@ void DrasculaEngine::animation_14_2() {
loadPic(99, backSurface);
}
+// The drunk tells us about Von Braun
void DrasculaEngine::animation_16_2() {
+ char curPic[20];
talk_drunk(12);
talk(371);
clearRoom();
+ // FIXME: Track 31 is missing from the soundtrack available
+ // from ScummVM's downloads page, so for now we're using the
+ // Spanish track 29
+#if 1
+ playMusic(30);
+#else
if (_lang == kSpanish)
playMusic(30);
else
playMusic(32);
+#endif
- int key = getScan();
- if (key != 0)
+ if (getScan() != 0)
goto asco;
color_abc(kColorDarkGreen);
- loadPic("his1.alg", bgSurface, HALF_PAL);
-
- copyBackground();
-
- centerText(_texthis[1], 180, 180);
-
- updateScreen();
-
- key = getScan();
- if (key != 0)
- goto asco;
-
- if (_lang == kSpanish)
- _system->delayMillis(3000);
- else
- _system->delayMillis(4000);
-
- key = getScan();
- if (key != 0)
- goto asco;
-
- fadeToBlack(1);
- key = getScan();
- if (key != 0)
- goto asco;
-
- clearRoom();
- loadPic("his2.alg", bgSurface, HALF_PAL);
- copyBackground();
-
- centerText(_texthis[2], 180, 180);
-
- updateScreen();
- key = getScan();
- if (key != 0)
- goto asco;
-
- if (_lang == kSpanish)
- _system->delayMillis(3000);
- else
- _system->delayMillis(4000);
-
- key = getScan();
- if (key != 0)
- goto asco;
-
- fadeToBlack(1);
- key = getScan();
- if (key != 0)
- goto asco;
-
- clearRoom();
- loadPic("his3.alg", bgSurface, HALF_PAL);
- copyBackground();
+ for (int i = 1; i <= 4; i++) {
+ if (i < 4)
+ sprintf(curPic, "his%i.alg", i);
+ else
+ strcpy(curPic, "his4_1.alg");
- centerText(_texthis[3], 180, 180);
+ loadPic(curPic, screenSurface, HALF_PAL);
+ centerText(_texthis[i], 180, 180);
+ updateScreen();
- updateScreen();
- key = getScan();
- if (key != 0)
- goto asco;
+ if (getScan() != 0)
+ goto asco;
- if (_lang == kSpanish)
- _system->delayMillis(3000);
- else
- _system->delayMillis(4000);
+ delay(3000);
+ fadeToBlack(1);
- key = getScan();
- if (key != 0)
- goto asco;
+ if (getScan() != 0)
+ goto asco;
- fadeToBlack(1);
+ clearRoom();
+ }
- clearRoom();
loadPic("his4_1.alg", bgSurface, HALF_PAL);
loadPic("his4_2.alg", drawSurface3);
- copyBackground(0, 0, 0, 0, 320, 200, drawSurface3, screenSurface);
-
- centerText(_texthis[1], 180, 180);
-
- updateScreen();
- key = getScan();
- if (key != 0)
- goto asco;
-
- if (_lang == kSpanish)
- _system->delayMillis(2000);
- else
- _system->delayMillis(4000);
-
- key = getScan();
- if (key != 0)
- goto asco;
-
for (int l = 1; l < 200; l++) {
copyBackground(0, 0, 0, l, 320, 200 - l, drawSurface3, screenSurface);
copyBackground(0, 200 - l, 0, 0, 320, l, bgSurface, screenSurface);
updateScreen();
- key = getScan();
- if (key != 0)
+ if (getScan() != 0)
goto asco;
}