diff options
author | Torbjörn Andersson | 2008-11-09 13:50:41 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2008-11-09 13:50:41 +0000 |
commit | 2e9e68fc8e1ebcfd017500165f64b97c6b6a72a8 (patch) | |
tree | 80f3e3d4643059b08cb5afde47af0871ed22939d /engines/sword2/screen.cpp | |
parent | 2bbc958373d687ab8ced1def67d30be420dc6827 (diff) | |
download | scummvm-rg350-2e9e68fc8e1ebcfd017500165f64b97c6b6a72a8.tar.gz scummvm-rg350-2e9e68fc8e1ebcfd017500165f64b97c6b6a72a8.tar.bz2 scummvm-rg350-2e9e68fc8e1ebcfd017500165f64b97c6b6a72a8.zip |
Fixed pausing during credits.
svn-id: r34956
Diffstat (limited to 'engines/sword2/screen.cpp')
-rw-r--r-- | engines/sword2/screen.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/sword2/screen.cpp b/engines/sword2/screen.cpp index 8319a6731a..871e55a647 100644 --- a/engines/sword2/screen.cpp +++ b/engines/sword2/screen.cpp @@ -99,6 +99,9 @@ Screen::Screen(Sword2Engine *vm, int16 width, int16 height) { _layer = 0; _dimPalette = false; + + _pauseTicks = 0; + _pauseStartTick = 0; } Screen::~Screen() { @@ -108,6 +111,14 @@ Screen::~Screen() { free(_lightMask); } +void Screen::pauseScreen(bool pause) { + if (pause) { + _pauseStartTick = _vm->_system->getMillis(); + } else { + _pauseTicks += (_vm->_system->getMillis() - _pauseStartTick); + } +} + /** * @return the graphics detail setting */ @@ -1029,6 +1040,8 @@ void Screen::rollCredits() { int scrollSteps = lineTop + CREDITS_FONT_HEIGHT; uint32 musicStart = _vm->getMillis(); + _pauseTicks = 0; + // Ideally the music should last just a tiny bit longer than the // credits. Note that musicTimeRemaining() will return 0 if the music // is muted, so we need a sensible fallback for that case. @@ -1104,7 +1117,7 @@ void Screen::rollCredits() { if (abortCredits && getFadeStatus() == RDFADE_BLACK) break; - _vm->sleepUntil(musicStart + (musicLength * scrollPos) / scrollSteps); + _vm->sleepUntil(musicStart + (musicLength * scrollPos) / scrollSteps + _pauseTicks); scrollPos++; } |