aboutsummaryrefslogtreecommitdiff
path: root/engines/sword2/screen.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2008-11-09 13:50:41 +0000
committerTorbjörn Andersson2008-11-09 13:50:41 +0000
commit2e9e68fc8e1ebcfd017500165f64b97c6b6a72a8 (patch)
tree80f3e3d4643059b08cb5afde47af0871ed22939d /engines/sword2/screen.cpp
parent2bbc958373d687ab8ced1def67d30be420dc6827 (diff)
downloadscummvm-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.cpp15
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++;
}