diff options
Diffstat (limited to 'engines/xeen/dialogs.cpp')
-rw-r--r-- | engines/xeen/dialogs.cpp | 118 |
1 files changed, 14 insertions, 104 deletions
diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp index 4ecd1c775c..02546adabd 100644 --- a/engines/xeen/dialogs.cpp +++ b/engines/xeen/dialogs.cpp @@ -97,107 +97,6 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) { return false; } -void ButtonContainer::doScroll(XeenEngine *vm, bool drawFlag, bool doFade) { - Screen &screen = *vm->_screen; - EventsManager &events = *vm->_events; - - if (vm->getGameID() != GType_Clouds) { - if (doFade) { - screen.fadeIn(2); - } - return; - } - - const int SCROLL_L[8] = { 29, 23, 15, 251, 245, 233, 207, 185 }; - const int SCROLL_R[8] = { 165, 171, 198, 218, 228, 245, 264, 281 }; - - saveButtons(); - clearButtons(); - screen.saveBackground(); - - // Load hand vga files - SpriteResource *hand[16]; - for (int i = 0; i < 16; ++i) { - Common::String name = Common::String::format("hand%02d.vga", i); - hand[i] = new SpriteResource(name); - } - - // Load marb vga files - SpriteResource *marb[5]; - for (int i = 1; i < 5; ++i) { - Common::String name = Common::String::format("marb%02d.vga", i); - marb[i] = new SpriteResource(name); - } - - if (drawFlag) { - for (int i = 22; i > 0; --i) { - events.updateGameCounter(); - screen.restoreBackground(); - - if (i > 0 && i <= 14) { - hand[i - 1]->draw(screen, 0); - } - else { - // TODO: Check '800h'.. horizontal reverse maybe? - hand[14]->draw(screen, 0, Common::Point(SCROLL_L[i - 14], 0)); - marb[15]->draw(screen, 0, Common::Point(SCROLL_R[i - 14], 0)); - } - - if (i <= 20) { - marb[i / 5]->draw(screen, i % 5); - } - - while (!vm->shouldQuit() && events.timeElapsed() == 0) - events.pollEventsAndWait(); - - screen._windows[0].update(); - if (i == 0 && doFade) - screen.fadeIn(2); - } - } else { - for (int i = 0; i < 22 && !events.isKeyMousePressed(); ++i) { - events.updateGameCounter(); - screen.restoreBackground(); - - if (i < 14) { - hand[i]->draw(screen, 0); - } else { - // TODO: Check '800h'.. horizontal reverse maybe? - hand[14]->draw(screen, 0, Common::Point(SCROLL_L[i - 7], 0)); - marb[15]->draw(screen, 0, Common::Point(SCROLL_R[i - 7], 0)); - } - - if (i < 20) { - marb[i / 5]->draw(screen, i % 5); - } - - while (!vm->shouldQuit() && events.timeElapsed() == 0) - events.pollEventsAndWait(); - - screen._windows[0].update(); - if (i == 0 && doFade) - screen.fadeIn(2); - } - } - - if (drawFlag) { - hand[0]->draw(screen, 0); - marb[0]->draw(screen, 0); - } - else { - screen.restoreBackground(); - } - - screen._windows[0].update(); - restoreButtons(); - - // Free resources - for (int i = 1; i < 5; ++i) - delete marb[i]; - for (int i = 0; i < 16; ++i) - delete hand[i]; -} - void ButtonContainer::drawButtons(XSurface *surface) { for (uint btnIndex = 0; btnIndex < _buttons.size(); ++btnIndex) { UIButton &btn = _buttons[btnIndex]; @@ -208,6 +107,17 @@ void ButtonContainer::drawButtons(XSurface *surface) { } } +void ButtonContainer::doScroll(bool drawFlag, bool doFade) { + if (_vm->getGameID() == GType_Clouds) { + saveButtons(); + clearButtons(); + Cutscenes::doScroll(drawFlag, doFade); + restoreButtons(); + } else { + Cutscenes::doScroll(drawFlag, doFade); + } +} + /*------------------------------------------------------------------------*/ void SettingsBaseDialog::showContents(SpriteResource &title1, bool waitFlag) { @@ -228,12 +138,12 @@ void CreditsScreen::execute() { EventsManager &events = *_vm->_events; // Handle drawing the credits screen - doScroll(_vm, true, false); + doScroll(true, false); screen._windows[GAME_WINDOW].close(); screen.loadBackground("marb.raw"); screen._windows[0].writeString(CREDITS); - doScroll(_vm, false, false); + doScroll(false, false); events.setCursor(0); screen._windows[0].update(); @@ -243,7 +153,7 @@ void CreditsScreen::execute() { while (!events.isKeyMousePressed()) events.pollEventsAndWait(); - doScroll(_vm, true, false); + doScroll(true, false); } /*------------------------------------------------------------------------*/ |