diff options
author | Jaromir Wysoglad | 2019-05-29 13:31:56 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | a86a397b261eceb2830a15f030e0aa5f50651343 (patch) | |
tree | 9aff096fe82149d06d7293ba66aee80e06e632af | |
parent | e99dc80446f5ef5f9e6f6ef2460161c4a1e40f07 (diff) | |
download | scummvm-rg350-a86a397b261eceb2830a15f030e0aa5f50651343.tar.gz scummvm-rg350-a86a397b261eceb2830a15f030e0aa5f50651343.tar.bz2 scummvm-rg350-a86a397b261eceb2830a15f030e0aa5f50651343.zip |
SUPERNOVA2: Programm intro title screen
-rw-r--r-- | engines/supernova2/ms2_def.h | 2 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 50 | ||||
-rw-r--r-- | engines/supernova2/screen.cpp | 6 | ||||
-rw-r--r-- | engines/supernova2/screen.h | 1 | ||||
-rw-r--r-- | engines/supernova2/state.cpp | 9 | ||||
-rw-r--r-- | engines/supernova2/state.h | 1 |
6 files changed, 65 insertions, 4 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index bbb2b7c55d..005f44cebe 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -135,7 +135,7 @@ kString25, kString26, kString27, kStringTextSpeed, kString29, kString30, kString31, kString32, kString33, kString34, kString35, kString36, kString37, kString38, kString39, kString40, kString41, kString42, kString43, kString44, -kString45, kString46, kString47, kString48, kString49, +kStringIntro1, kStringIntro2, kStringIntro3, kStringIntro4, kStringIntro5, kString50, kString51, kString52, kString53, kString54, kString55, kString56, kString57, kString58, kString59, kString60, kString61, kString62, kString63, kString64, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index 77b4429d57..ea06d0cead 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -186,6 +186,20 @@ Intro::Intro(Supernova2Engine *vm, GameManager *gm) { _fileNumber = -1; _id = INTRO; + _introText = + _vm->getGameString(kStringIntro1) + '\0' + + _vm->getGameString(kStringIntro2) + '\0' + + _vm->getGameString(kStringIntro3) + '\0' + + _vm->getGameString(kStringIntro4) + '\0' + + _vm->getGameString(kStringIntro5) + '\0' + + "^Matthias Neef#" + '\0' + + "^Sascha Otterbach#" + '\0' + + "^Thomas Mazzoni#" + '\0' + + "^Matthias Klein#" + '\0' + + "^Gerrit Rothmaier#" + '\0' + + "^Thomas Hassler#" + '\0' + + "^Rene Kach#" + '\0' + + '\233' + '\0'; } void Intro::onEntrance() { @@ -196,6 +210,7 @@ void Intro::onEntrance() { } void Intro::titleScreen() { + CursorMan.showMouse(false); _vm->_system->fillScreen(kColorBlack); _vm->_screen->setViewportBrightness(0); _vm->_screen->setGuiBrightness(0); @@ -203,10 +218,45 @@ void Intro::titleScreen() { _vm->setCurrentImage(1); _vm->renderImage(0); _vm->paletteFadeIn(); + _gm->wait(15); + //titleFadeIn(); + _vm->renderImage(1); + _gm->wait(15); + _vm->renderImage(2); + const Common::String title1 = "V1.02"; + _vm->_screen->renderText(title1, 295, 190, 3); + + Marquee marquee(_vm->_screen, Marquee::kMarqueeIntro, _introText.c_str()); + while (!_vm->shouldQuit()) { + _gm->updateEvents(); + marquee.renderCharacter(); + if (_gm->_mouseClicked || _gm->_keyPressed) + break; + g_system->updateScreen(); + g_system->delayMillis(_vm->_delay); + } + + _gm->wait(1); _gm->getInput(); } void Intro::titleFadeIn() { + byte titlePaletteColor[] = {0xfe, 0xeb}; + byte titleNewColor[2][3] = {{255, 255, 255}, {199, 21, 21}}; + byte newColors[2][3]; + + for (int brightness = 1; brightness <= 40; ++brightness) { + for (int colorIndex = 0; colorIndex < 2; ++colorIndex) { + for (int i = 0; i < 3; ++i) { + newColors[colorIndex][i] = (titleNewColor[colorIndex][i] * brightness) / 40; + } + } + + _vm->_system->getPaletteManager()->setPalette(newColors[0], titlePaletteColor[0], 1); + _vm->_system->getPaletteManager()->setPalette(newColors[1], titlePaletteColor[1], 1); + _vm->_system->updateScreen(); + _vm->_system->delayMillis(_vm->_delay); + } } bool Intro::animate(int section1, int section2, int duration) { diff --git a/engines/supernova2/screen.cpp b/engines/supernova2/screen.cpp index 24efe91094..af9b2b94f9 100644 --- a/engines/supernova2/screen.cpp +++ b/engines/supernova2/screen.cpp @@ -105,7 +105,7 @@ Marquee::Marquee(Screen *screen, MarqueeId id, const char *text) : _text(text) , _textBegin(text) , _delay(0) - , _color(kColorLightBlue) + , _color(kColorPurple) , _loop(false) , _screen(screen) { if (id == kMarqueeIntro) { @@ -149,8 +149,8 @@ void Marquee::renderCharacter() { _textWidth = Screen::textWidth(_text); _x = kScreenWidth / 2 - _textWidth / 2; _screen->_textCursorX = _x; - _color = kColorLightBlue; - _screen->_textColor = _color; + _color = kColorBlue; + _screen->_textColor = kColorPurple; break; case '^': _color = kColorLightYellow; diff --git a/engines/supernova2/screen.h b/engines/supernova2/screen.h index 104874c754..dbfeb42634 100644 --- a/engines/supernova2/screen.h +++ b/engines/supernova2/screen.h @@ -62,6 +62,7 @@ enum Color { kColorLightGreen = 13, kColorLightYellow = 14, kColorLightRed = 15, + kColorPurple = 35, kColorCursorTransparent = kColorWhite25 }; diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp index 44553f2cd5..24b86895d9 100644 --- a/engines/supernova2/state.cpp +++ b/engines/supernova2/state.cpp @@ -158,6 +158,15 @@ void GameManager::getInput() { } } +void GameManager::wait(int ticks) { + uint32 end = g_system->getMillis() + ticksToMsec(ticks); + do { + g_system->delayMillis(_vm->_delay); + updateEvents(); + g_system->updateScreen(); + } while (g_system->getMillis() < end && !_vm->shouldQuit()); +} + void GameManager::changeRoom(RoomId id) { _currentRoom = _rooms[id]; _newRoom = true; diff --git a/engines/supernova2/state.h b/engines/supernova2/state.h index c6d357fc43..8672a41a57 100644 --- a/engines/supernova2/state.h +++ b/engines/supernova2/state.h @@ -76,6 +76,7 @@ public: void initRooms(); void getInput(); void changeRoom(RoomId id); + void wait(int ticks); void resetInputState(); private: |