aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lab/intro.cpp124
-rw-r--r--engines/lab/intro.h8
2 files changed, 54 insertions, 78 deletions
diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp
index 2d6457b83f..b2a1b2059e 100644
--- a/engines/lab/intro.cpp
+++ b/engines/lab/intro.cpp
@@ -42,7 +42,6 @@ namespace Lab {
Intro::Intro(LabEngine *vm) : _vm(vm) {
_quitIntro = false;
- _introDoBlack = false;
_font = _vm->_resource->getFont("F:Map.fon");
}
@@ -191,21 +190,7 @@ void Intro::doPictText(const Common::String filename, bool isScreen) {
} // while(1)
}
-void Intro::musicDelay() {
- _vm->updateEvents();
-
- if (_quitIntro)
- return;
-
- for (int i = 0; i < 20; i++) {
- _vm->updateEvents();
- _vm->waitTOF();
- _vm->waitTOF();
- _vm->waitTOF();
- }
-}
-
-void Intro::nReadPict(const Common::String filename, bool playOnce) {
+void Intro::nReadPict(const Common::String filename, bool playOnce, bool noPalChange, bool doBlack, int wait) {
Common::String finalFileName = Common::String("P:Intro/") + filename;
_vm->updateEvents();
@@ -214,9 +199,25 @@ void Intro::nReadPict(const Common::String filename, bool playOnce) {
if (_quitIntro)
return;
- _vm->_anim->_doBlack = _introDoBlack;
+ if (noPalChange)
+ _vm->_anim->_noPalChange = true;
+
+ _vm->_anim->_doBlack = doBlack;
_vm->_anim->stopDiffEnd();
_vm->_graphics->readPict(finalFileName, playOnce);
+
+ if (wait) {
+ for (int i = 0; i < wait / 10; i++) {
+ _vm->updateEvents();
+ introEatMessages();
+ if (_quitIntro)
+ break;
+ _vm->_system->delayMillis(10);
+ }
+ }
+
+ if (noPalChange)
+ _vm->_anim->_noPalChange = false;
}
void Intro::play() {
@@ -227,22 +228,13 @@ void Intro::play() {
0x0CB3, 0x0DC4, 0x0DD6, 0x0EE7
};
- _vm->_anim->_doBlack = true;
-
if (_vm->getPlatform() == Common::kPlatformDOS) {
nReadPict("EA0");
nReadPict("EA1");
nReadPict("EA2");
nReadPict("EA3");
} else if (_vm->getPlatform() == Common::kPlatformWindows) {
- nReadPict("WYRMKEEP");
- // Wait 4 seconds (400 x 10ms)
- for (int i = 0; i < 400; i++) {
- introEatMessages();
- if (_quitIntro)
- break;
- _vm->_system->delayMillis(10);
- }
+ nReadPict("WYRMKEEP", true, false, false, 4000);
}
_vm->_graphics->blackAllScreen();
@@ -252,12 +244,10 @@ void Intro::play() {
else
_vm->_music->changeMusic("Music:BackGround", false, false);
- _vm->_anim->_noPalChange = true;
if (_vm->getPlatform() == Common::kPlatformDOS)
- nReadPict("TNDcycle.pic");
+ nReadPict("TNDcycle.pic", true, true);
else
- nReadPict("TNDcycle2.pic");
- _vm->_anim->_noPalChange = false;
+ nReadPict("TNDcycle2.pic", true, true);
_vm->_graphics->_fadePalette = palette;
@@ -266,16 +256,18 @@ void Intro::play() {
((_vm->_anim->_diffPalette[i * 3 + 1] >> 2) << 4) +
(_vm->_anim->_diffPalette[i * 3 + 2] >> 2);
}
+
_vm->updateEvents();
+ introEatMessages();
if (!_quitIntro)
_vm->_graphics->fade(true);
for (int times = 0; times < 150; times++) {
+ _vm->updateEvents();
introEatMessages();
if (_quitIntro)
break;
- _vm->updateEvents();
uint16 temp = palette[2];
for (int i = 2; i < 15; i++)
@@ -291,35 +283,22 @@ void Intro::play() {
_vm->_graphics->fade(false);
_vm->_graphics->blackAllScreen();
_vm->updateEvents();
+ introEatMessages();
}
nReadPict("Title.A");
- nReadPict("AB");
- musicDelay();
+ nReadPict("AB", true, false, false, 1000);
nReadPict("BA");
- nReadPict("AC");
- musicDelay();
-
- if (_vm->getPlatform() == Common::kPlatformWindows)
- musicDelay(); // more credits on this page now
-
+ nReadPict("AC", true, false, false, 1000);
nReadPict("CA");
- nReadPict("AD");
- musicDelay();
-
- if (_vm->getPlatform() == Common::kPlatformWindows)
- musicDelay(); // more credits on this page now
-
+ nReadPict("AD", true, false, false, 1000);
nReadPict("DA");
- musicDelay();
- _vm->updateEvents();
_vm->_graphics->blackAllScreen();
_vm->updateEvents();
+ introEatMessages();
- _vm->_anim->_noPalChange = true;
- nReadPict("Intro.1");
- _vm->_anim->_noPalChange = false;
+ nReadPict("Intro.1", true, true);
for (int i = 0; i < 16; i++) {
palette[i] = ((_vm->_anim->_diffPalette[i * 3] >> 2) << 8) +
@@ -335,51 +314,53 @@ void Intro::play() {
_vm->_graphics->blackAllScreen();
_vm->updateEvents();
+ introEatMessages();
- _introDoBlack = true;
- nReadPict("Station1");
+ nReadPict("Station1", true, false, true);
doPictText("i.3");
- nReadPict("Station2");
+ nReadPict("Station2", true, false, true);
doPictText("i.4");
- nReadPict("Stiles4");
+ nReadPict("Stiles4", true, false, true);
doPictText("i.5");
- nReadPict("Stiles3");
+ nReadPict("Stiles3", true, false, true);
doPictText("i.6");
if (_vm->getPlatform() == Common::kPlatformWindows)
- nReadPict("Platform2");
+ nReadPict("Platform2", true, false, true);
else
- nReadPict("Platform");
+ nReadPict("Platform", true, false, true);
doPictText("i.7");
- nReadPict("Subway.1");
+ nReadPict("Subway.1", true, false, true);
doPictText("i.8");
- nReadPict("Subway.2");
+ nReadPict("Subway.2", true, false, true);
doPictText("i.9");
doPictText("i.10");
doPictText("i.11");
- if (!_quitIntro)
- for (int i = 0; i < 50; i++) {
- for (int idx = (8 * 3); idx < (255 * 3); idx++)
- _vm->_anim->_diffPalette[idx] = 255 - _vm->_anim->_diffPalette[idx];
+ for (int i = 0; i < 50; i++) {
+ _vm->updateEvents();
+ introEatMessages();
+ if (_quitIntro)
+ break;
- _vm->updateEvents();
- _vm->waitTOF();
- _vm->_graphics->setPalette(_vm->_anim->_diffPalette, 256);
- _vm->waitTOF();
- _vm->waitTOF();
- }
+ for (int idx = (8 * 3); idx < (255 * 3); idx++)
+ _vm->_anim->_diffPalette[idx] = 255 - _vm->_anim->_diffPalette[idx];
+
+ _vm->waitTOF();
+ _vm->_graphics->setPalette(_vm->_anim->_diffPalette, 256);
+ _vm->waitTOF();
+ _vm->waitTOF();
+ }
doPictText("i.12");
doPictText("i.13");
- _introDoBlack = false;
nReadPict("Daed0");
doPictText("i.14");
@@ -410,7 +391,6 @@ void Intro::play() {
nReadPict("Daed7", false);
doPictText("i.27");
doPictText("i.28");
- _vm->_anim->stopDiffEnd();
nReadPict("Daed8");
doPictText("i.29");
diff --git a/engines/lab/intro.h b/engines/lab/intro.h
index 9961be6226..f86d3baf69 100644
--- a/engines/lab/intro.h
+++ b/engines/lab/intro.h
@@ -55,14 +55,10 @@ private:
*/
void doPictText(const Common::String filename, bool isScreen = false);
- /**
- * Does a one second delay, but checks the music while doing it.
- */
- void musicDelay();
- void nReadPict(const Common::String filename, bool playOnce = true);
+ void nReadPict(const Common::String filename, bool playOnce = true, bool noPalChange = false, bool doBlack = false, int wait = 0);
LabEngine *_vm;
- bool _quitIntro, _introDoBlack;
+ bool _quitIntro;
TextFont *_font;
};