aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sequences_lok.cpp
diff options
context:
space:
mode:
authorNorbert Lange2009-08-16 16:39:34 +0000
committerNorbert Lange2009-08-16 16:39:34 +0000
commitc96affd0c1e5480fe1a4a3d3e82583c795570d21 (patch)
tree3f3a71bc02976024345c5c3e44534055d9c9c4cd /engines/kyra/sequences_lok.cpp
parent2b147c57161cdacf3cdc5bc572ce46160cbd6b5e (diff)
parentce30a513acdaab2ca5eacd136cc80ade1beabb3a (diff)
downloadscummvm-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.cpp28
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;