diff options
Diffstat (limited to 'kyra/kyra.cpp')
-rw-r--r-- | kyra/kyra.cpp | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp index 0b14946bff..a4d86656a9 100644 --- a/kyra/kyra.cpp +++ b/kyra/kyra.cpp @@ -899,7 +899,7 @@ void KyraEngine::seq_intro() { if (_features & GF_TALKIE) { _res->unloadPakFile("INTRO.VRM"); } - res_unloadResources(RES_INTRO); + res_unloadResources(RES_INTRO | RES_OUTRO); } void KyraEngine::seq_introLogos() { @@ -1616,7 +1616,7 @@ int KyraEngine::seq_playEnd() { } delete _finalA; _finalA = 0; - // XXX play end sequence here + seq_playEnding(); return 1; } } else { @@ -1644,6 +1644,50 @@ void KyraEngine::seq_brandonToStone() { _screen->showMouse(); } +void KyraEngine::seq_playEnding() { + debug(9, "KyraEngine::seq_playEnding()"); + _screen->hideMouse(); + res_unloadResources(RES_INGAME); + res_loadResources(RES_OUTRO); + loadBitmap("REUNION.CPS", 3, 3, _screen->_currentPalette); + _screen->copyRegion(8, 8, 8, 8, 304, 128, 2, 0); + _screen->_curPage = 0; + // XXX + assert(_homeString); + drawSentenceCommand(_homeString[0], 179); + _screen->_curPage = 0; + _screen->fadeToBlack(); + _seq->playSequence(_seq_Reunion, false); + _screen->fadeToBlack(); + _screen->showMouse(); + seq_playCredits(); +} + +void KyraEngine::seq_playCredits() { + debug(9, "KyraEngine::seq_playCredits()"); + static const uint8 colorMap[] = { 0, 0, 0xC, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + _screen->hideMouse(); + uint32 sz = 0; + if (_features & GF_FLOPPY) { + _screen->loadFont(Screen::FID_CRED6_FNT, _res->fileData("CREDIT6.FNT", &sz)); + _screen->loadFont(Screen::FID_CRED8_FNT, _res->fileData("CREDIT8.FNT", &sz)); + } + loadBitmap("CHALET.CPS", 2, 2, _screen->_currentPalette); + _screen->setScreenPalette(_screen->_currentPalette); + _screen->setCurPage(0); + _screen->clearCurPage(); + _screen->copyRegion(8, 8, 8, 8, 304, 128, 2, 0); + _screen->setTextColorMap(colorMap); + _screen->_charWidth = -1; + // delete + _screen->updateScreen(); + // XXX + waitTicks(120); // wait until user presses escape normally + _screen->fadeToBlack(); + _screen->clearCurPage(); + _screen->showMouse(); +} + bool KyraEngine::seq_skipSequence() const { debug(9, "KyraEngine::seq_skipSequence()"); return _quitFlag || _abortIntroFlag; @@ -4673,8 +4717,8 @@ int KyraEngine::handleMalcolmFlag() { if (!_beadStateVar) { handleBeadState(); _screen->bitBlitRects(); - //assert(_veryClever); - //_text->printTalkTextMessage(_veryClever, 60, 31, 5, 0, 2); + assert(_veryClever); + _text->printTalkTextMessage(_veryClever[0], 60, 31, 5, 0, 2); timer2 = _system->getMillis() + 180 * _tickLength; _malcolmFlag = 11; } |