diff options
Diffstat (limited to 'lure/intro.cpp')
-rw-r--r-- | lure/intro.cpp | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/lure/intro.cpp b/lure/intro.cpp deleted file mode 100644 index 58bca80239..0000000000 --- a/lure/intro.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2005-2006 The ScummVM project - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#include "lure/intro.h" -#include "lure/animseq.h" -#include "lure/events.h" - -namespace Lure { - -struct AnimRecord { - uint16 resourceId; - uint8 paletteIndex; - bool initialPause; - bool endingPause; -}; - -static const uint16 start_screens[] = {0x18, 0x1A, 0x1E, 0x1C, 0}; -static const AnimRecord anim_screens[] = {{0x40, 0, true, true}, {0x42, 1, false, true}, - {0x44, 2, false, false}, {0x24, 3, false, true}, {0x46, 3, false, false}, - {0, 0, false, false}}; - -// showScreen -// Shows a screen by loading it from the given resource, and then fading it in -// with a palette in the following resource. Returns true if the introduction -// should be aborted - -bool Introduction::showScreen(uint16 screenId, uint16 paletteId, uint16 delaySize) { - _screen.screen().loadScreen(screenId); - _screen.update(); - Palette p(paletteId); - _screen.paletteFadeIn(&p); - - bool result = delay(delaySize); - if (Events::getReference().quitFlag) return true; - - _screen.paletteFadeOut(); - return result; -} - -// delay -// Delays for a given number of milliseconds. If it returns true, it indicates that -// Escape has been pressed, and the introduction should be aborted. - -bool Introduction::delay(uint32 milliseconds) { - Events &events = Events::getReference(); - uint32 delayCtr = _system.getMillis() + milliseconds; - - while (_system.getMillis() < delayCtr) { - if (events.quitFlag) return true; - - if (events.pollEvent()) { - if (events.type() == OSystem::EVENT_KEYDOWN) - return events.event().kbd.keycode == 27; - else if (events.type() == OSystem::EVENT_LBUTTONDOWN) - return false; - } - - uint32 delayAmount = delayCtr - _system.getMillis(); - if (delayAmount > 10) delayAmount = 10; - _system.delayMillis(delayAmount); - } - return false; -} - -// show -// Main method for the introduction sequence - -bool Introduction::show() { - _screen.setPaletteEmpty(); - - // Initial game company and then game screen - - for (int ctr = 0; start_screens[ctr]; ++ctr) - if (showScreen(start_screens[ctr], start_screens[ctr] + 1, 5000)) - return true; - - AnimationSequence *anim; - bool result; - - // Animated screens - - PaletteCollection coll(0x32); - const AnimRecord *curr_anim = anim_screens; - for (; curr_anim->resourceId; ++curr_anim) - { - bool fadeIn = curr_anim == anim_screens; - anim = new AnimationSequence(_screen, _system, curr_anim->resourceId, - coll.getPalette(curr_anim->paletteIndex), fadeIn); - if (curr_anim->initialPause) - if (delay(12000)) return true; - - result = false; - switch (anim->show()) { - case ABORT_NONE: - if (curr_anim->endingPause) { - result = delay(12000); - } - break; - - case ABORT_END_INTRO: - result = true; - break; - - case ABORT_NEXT_SCENE: - break; - } - delete anim; - - if (result) return true; - } - - // Show battle pictures one frame at a time - - result = false; - anim = new AnimationSequence(_screen, _system, 0x48, coll.getPalette(4), false); - do { - result = delay(2000); - _screen.paletteFadeOut(); - if (!result) result = delay(500); - if (result) break; - } while (anim->step()); - delete anim; - if (result) return true; - - // Show final introduction screen - - showScreen(0x22, 0x21, 10000); - - return false; -} - -} // end of namespace Lure |