diff options
author | Filippos Karapetis | 2013-01-04 23:06:19 +0200 |
---|---|---|
committer | Filippos Karapetis | 2013-01-04 23:06:19 +0200 |
commit | 00c0986562f1eb0cd3e4732d04b4ceb2259eb154 (patch) | |
tree | 7729c6a0a5b4b738ac29f3ff08604feca3aa710e /engines | |
parent | c1b0c80cce2aa20b854836fe003b31ed1ad4e6e6 (diff) | |
download | scummvm-rg350-00c0986562f1eb0cd3e4732d04b4ceb2259eb154.tar.gz scummvm-rg350-00c0986562f1eb0cd3e4732d04b4ceb2259eb154.tar.bz2 scummvm-rg350-00c0986562f1eb0cd3e4732d04b4ceb2259eb154.zip |
DRASCULA: More animation cleanup. Separate subfunction of animation_12_5()
Diffstat (limited to 'engines')
-rw-r--r-- | engines/drascula/animation.cpp | 130 | ||||
-rw-r--r-- | engines/drascula/drascula.h | 1 | ||||
-rw-r--r-- | engines/drascula/graphics.cpp | 2 |
3 files changed, 62 insertions, 71 deletions
diff --git a/engines/drascula/animation.cpp b/engines/drascula/animation.cpp index 6bb1b3b132..53cba9a7a4 100644 --- a/engines/drascula/animation.cpp +++ b/engines/drascula/animation.cpp @@ -91,12 +91,8 @@ void DrasculaEngine::animation_1_1() { playFLI("scrollb.bin", 9); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; clearRoom(); playSound(5); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("scr2.bin", 17)) break; stopSound(); @@ -193,8 +189,6 @@ void DrasculaEngine::animation_1_1() { if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) break; talk_drascula(3); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("lib.bin", 16)) break; if (animate("lib2.bin", 16)) @@ -210,8 +204,6 @@ void DrasculaEngine::animation_1_1() { loadPic("plan1.alg", screenSurface, HALF_PAL); updateScreen(); talk_solo(_textd[5], "d5.als"); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("lib2.bin", 16)) break; clearRoom(); @@ -219,8 +211,6 @@ void DrasculaEngine::animation_1_1() { updateScreen(); pause(20); talk_solo(_textd[6], "d6.als"); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("lib2.bin", 16)) break; clearRoom(); @@ -254,8 +244,6 @@ void DrasculaEngine::animation_1_1() { break; playMusic(11); talk_drascula(10); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("rayo1.bin", 16)) break; playSound(5); @@ -382,9 +370,6 @@ void DrasculaEngine::animation_2_1() { term_int = 0; while (!shouldQuit()) { - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; - if (animate("ag.bin", 14)) break; @@ -454,13 +439,8 @@ void DrasculaEngine::animation_2_1() { curY = 95; trackProtagonist = 1; hare_se_ve = 1; - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; loadPic("97g.alg", extraSurface); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; - if (animate("lev.bin", 15)) break; @@ -518,8 +498,6 @@ void DrasculaEngine::animation_2_1() { break; talk_bj(12); gotoObject(157, 98 + curHeight); - if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()) - break; if (animate("bes.bin", 16)) break; playMusic(11); @@ -879,6 +857,20 @@ void DrasculaEngine::animation_20_2() { void DrasculaEngine::animation_23_2() { debug(4, "animation_23_2()"); + int p_x, p_y; + int maxN; + int animX, animY; + + // Animation offsets - without earplugs + int x1[] = {1, 38, 75, 112, 75, 112, 75, 112, 149, 112, 149, 112, 149, 186, 223, 260, + 1, 38, 75, 112, 149, 112, 149, 112, 149, 112, 149, 186, 223, 260, 260, 260, 260, 223}; + int y1[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 1, 1, 1, 1}; + + // Animation offsets - with earplugs + int x2[] = {1, 35, 69, 103, 137, 171, 205, 239, 273, 1, 35, 69, 103, 137}; + int y2[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 73, 73, 73, 73}; + loadPic("an24.alg", frontSurface); flags[21] = 1; @@ -907,40 +899,36 @@ void DrasculaEngine::animation_23_2() { if (flags[29] == 0) { // John isn't wearing earplugs - int p_x = curX + 2, p_y = curY - 3; - int x[] = {1, 38, 75, 112, 75, 112, 75, 112, 149, 112, 149, 112, 149, 186, 223, 260, - 1, 38, 75, 112, 149, 112, 149, 112, 149, 112, 149, 186, 223, 260, 260, 260, 260, 223}; - int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 1, 1, 1, 1}; + p_x = curX + 2; + p_y = curY - 3; + maxN = 34; + animX = 36; + animY = 74; loadPic("an23.alg", backSurface); - - for (int n = 0; n < 34; n++) { - copyRect(p_x, p_y, p_x, p_y, 36, 74, bgSurface, screenSurface); - copyRect(x[n], y[n], p_x, p_y, 36, 74, backSurface, screenSurface); - updateRefresh(); - updateScreen(p_x, p_y, p_x, p_y, 36, 74, screenSurface); - updateEvents(); - pause(5); - } } else { // John is wearing earplugs - int p_x = curX + 4, p_y = curY; - int x[] = {1, 35, 69, 103, 137, 171, 205, 239, 273, 1, 35, 69, 103, 137}; - int y[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 73, 73, 73, 73}; + p_x = curX + 4; + p_y = curY; + maxN = 14; + animX = 33; + animY = 71; pause(50); loadPic("an23_2.alg", backSurface); + } - for (int n = 0; n < 14; n++) { - copyRect(p_x, p_y, p_x, p_y, 33, 71, bgSurface, screenSurface); - copyRect(x[n], y[n], p_x, p_y, 33, 71, backSurface, screenSurface); - updateRefresh(); - updateScreen(p_x,p_y, p_x,p_y, 33,71, screenSurface); - updateEvents(); - pause(5); - } + for (int n = 0; n < maxN; n++) { + copyRect(p_x, p_y, p_x, p_y, animX, animY, bgSurface, screenSurface); + if (flags[29] == 0) + copyRect(x1[n], y1[n], p_x, p_y, animX, animY, backSurface, screenSurface); + else + copyRect(x2[n], y2[n], p_x, p_y, animX, animY, backSurface, screenSurface); + updateRefresh(); + updateScreen(p_x, p_y, p_x, p_y, animX, animY, screenSurface); + updateEvents(); + pause(5); } loadPic(99, backSurface); @@ -1443,11 +1431,34 @@ void DrasculaEngine::animation_12_5() { flags[1] = 1; - // Frankenstein walks to the left and destoys the wall - start + animation_12_5_frankenstein(); + + playSound(1); + hiccup(12); + finishSound(); + + loadPic(99, backSurface); + + gotoObject(40, 169); + gotoObject(-14, 175); + + doBreak = 1; + previousMusic = roomMusic; + hare_se_ve = 1; + clearRoom(); + trackProtagonist = 1; + characterMoved = 0; + curX = -1; + objExit = 104; + selectVerb(kVerbNone); + enterRoom(57); +} + +void DrasculaEngine::animation_12_5_frankenstein() { int frank_x = 199; int frus_x[] = {1, 46, 91, 136, 181, 226, 271}; int frus_y[] = {1, 1, 1, 1, 1, 1, 1, 89}; - frame = 0; + int frame = 0; loadPic("auxfr.alg", backSurface); @@ -1473,27 +1484,6 @@ void DrasculaEngine::animation_12_5() { updateEvents(); pause(6); } - // Frankenstein walks to the left and destoys the wall - end - - playSound(1); - hiccup(12); - finishSound(); - - loadPic(99, backSurface); - - gotoObject(40, 169); - gotoObject(-14, 175); - - doBreak = 1; - previousMusic = roomMusic; - hare_se_ve = 1; - clearRoom(); - trackProtagonist = 1; - characterMoved = 0; - curX = -1; - objExit = 104; - selectVerb(kVerbNone); - enterRoom(57); } void DrasculaEngine::animation_14_5() { diff --git a/engines/drascula/drascula.h b/engines/drascula/drascula.h index 9f13d36c9e..3259fa63bc 100644 --- a/engines/drascula/drascula.h +++ b/engines/drascula/drascula.h @@ -696,6 +696,7 @@ public: void animation_1_5(); // John finds BJ void animation_5_5(); // ??? void animation_12_5(); // Frankenstein comes to life + void animation_12_5_frankenstein(); void animation_14_5(); // John finds out that an object is empty // void animation_1_6(); // ??? diff --git a/engines/drascula/graphics.cpp b/engines/drascula/graphics.cpp index 590561f0bd..3bdf724670 100644 --- a/engines/drascula/graphics.cpp +++ b/engines/drascula/graphics.cpp @@ -668,7 +668,7 @@ bool DrasculaEngine::animate(const char *animationFile, int FPS) { } delete stream; - return ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE)); + return ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit()); } } // End of namespace Drascula |