aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/dialogs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/dialogs.cpp')
-rw-r--r--engines/xeen/dialogs.cpp118
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);
}
/*------------------------------------------------------------------------*/