diff options
author | Norbert Lange | 2009-08-16 16:39:34 +0000 |
---|---|---|
committer | Norbert Lange | 2009-08-16 16:39:34 +0000 |
commit | c96affd0c1e5480fe1a4a3d3e82583c795570d21 (patch) | |
tree | 3f3a71bc02976024345c5c3e44534055d9c9c4cd /engines/kyra/sequences_lok.cpp | |
parent | 2b147c57161cdacf3cdc5bc572ce46160cbd6b5e (diff) | |
parent | ce30a513acdaab2ca5eacd136cc80ade1beabb3a (diff) | |
download | scummvm-rg350-c96affd0c1e5480fe1a4a3d3e82583c795570d21.tar.gz scummvm-rg350-c96affd0c1e5480fe1a4a3d3e82583c795570d21.tar.bz2 scummvm-rg350-c96affd0c1e5480fe1a4a3d3e82583c795570d21.zip |
merge with trunk
svn-id: r43443
Diffstat (limited to 'engines/kyra/sequences_lok.cpp')
-rw-r--r-- | engines/kyra/sequences_lok.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/engines/kyra/sequences_lok.cpp b/engines/kyra/sequences_lok.cpp index 83b4dd9af4..e6dfd9efe2 100644 --- a/engines/kyra/sequences_lok.cpp +++ b/engines/kyra/sequences_lok.cpp @@ -1143,8 +1143,16 @@ void KyraEngine_LoK::seq_playEnding() { _screen->showMouse(); if (_flags.platform == Common::kPlatformAmiga) { - while (!shouldQuit()) + _screen->_charWidth = -2; + _screen->setCurPage(2); + + _screen->getPalette(2).clear(); + _screen->setScreenPalette(_screen->getPalette(2)); + + while (!shouldQuit()) { seq_playCreditsAmiga(); + delayUntil(_system->getMillis() + 300 * _tickLength); + } } else { seq_playCredits(); } @@ -1295,8 +1303,10 @@ void KyraEngine_LoK::seq_playCredits() { _screen->updateScreen(); } - if (checkInput(0, false)) + if (checkInput(0, false)) { + removeInputTop(); finished = true; + } uint32 now = _system->getMillis(); uint32 nextLoop = startLoop + _tickLength * 5; @@ -1317,17 +1327,14 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { _screen->loadBitmap("CHALET.CPS", 4, 2, &_screen->getPalette(0)); _screen->copyPage(2, 0); - _screen->setCurPage(2); - - _screen->getPalette(2).clear(); - _screen->setScreenPalette(_screen->getPalette(2)); _screen->getPalette(0).fill(16, 1, 63); _screen->fadePalette(_screen->getPalette(0), 0x5A); + _screen->updateScreen(); const char *theEnd = "THE END"; - const int width = _screen->getTextWidth(theEnd); + const int width = _screen->getTextWidth(theEnd) + 1; int x = (320 - width) / 2 + 1; _screen->copyRegion(x, 8, x, 8, width, 56, 0, 2, Screen::CR_NO_P_CHECK); @@ -1359,7 +1366,6 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { char *buffer = new char[size]; assert(buffer); memcpy(buffer, bufferTmp, size); - _staticres->unloadId(k1CreditsStrings); char stringBuffer[81]; memset(stringBuffer, 0, sizeof(stringBuffer)); @@ -1404,7 +1410,7 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { _screen->printText(stringBuffer, x + 8, 0, 31, 0); - for (int i = 0; i < fontHeight; ++i) { + for (int i = 0; i < fontHeight && !shouldQuit(); ++i) { _screen->copyRegion(0, 141, 0, 140, 320, 59, 0, 0, Screen::CR_NO_P_CHECK); _screen->copyRegion(0, i, 0, 198, 320, 3, 2, 0, Screen::CR_NO_P_CHECK); _screen->updateScreen(); @@ -1422,8 +1428,10 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { *specialString = 0; } - if (checkInput(0, false)) + if (checkInput(0, false)) { + removeInputTop(); break; + } } while (++cur != buffer + size && !shouldQuit()); delete[] buffer; |