aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks/myst.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mohawk/myst_stacks/myst.cpp')
-rw-r--r--engines/mohawk/myst_stacks/myst.cpp149
1 files changed, 44 insertions, 105 deletions
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index 37b0d4fba7..e72d4e5c59 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -866,9 +866,9 @@ void Myst::o_fireplaceRotation(uint16 var, const ArgumentsArray &args) {
uint16 movieNum = args[0];
if (movieNum)
- _vm->playMovieBlocking(_vm->wrapMovieFilename("fpout", kMystStack), 167, 4);
+ _vm->playMovieBlocking("fpout", kMystStack, 167, 4);
else
- _vm->playMovieBlocking(_vm->wrapMovieFilename("fpin", kMystStack), 167, 4);
+ _vm->playMovieBlocking("fpin", kMystStack, 167, 4);
}
void Myst::o_courtyardBoxesCheckSolution(uint16 var, const ArgumentsArray &args) {
@@ -1107,12 +1107,10 @@ void Myst::o_clockWheelsExecute(uint16 var, const ArgumentsArray &args) {
_vm->wait(500);
// Gears rise up
- VideoEntryPtr gears = _vm->_video->playMovie(_vm->wrapMovieFilename("gears", kMystStack));
- if (!gears)
- error("Failed to open gears movie");
-
+ VideoEntryPtr gears = _vm->playMovie("gears", kMystStack);
gears->moveTo(305, 33);
gears->setBounds(Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 650, 600));
+
_vm->waitUntilMovieEnds(gears);
_state.clockTowerBridgeOpen = 1;
@@ -1122,12 +1120,10 @@ void Myst::o_clockWheelsExecute(uint16 var, const ArgumentsArray &args) {
_vm->wait(500);
// Gears sink down
- VideoEntryPtr gears = _vm->_video->playMovie(_vm->wrapMovieFilename("gears", kMystStack));
- if (!gears)
- error("Failed to open gears movie");
-
+ VideoEntryPtr gears = _vm->playMovie("gears", kMystStack);
gears->moveTo(305, 33);
gears->setBounds(Audio::Timestamp(0, 700, 600), Audio::Timestamp(0, 1300, 600));
+
_vm->waitUntilMovieEnds(gears);
_state.clockTowerBridgeOpen = 0;
@@ -1166,22 +1162,16 @@ void Myst::o_imagerPlayButton(uint16 var, const ArgumentsArray &args) {
case 1: // Mountain
if (_state.imagerActive) {
// Mountains disappearing
- Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
- VideoEntryPtr mountain = _vm->_video->playMovie(file);
- if (!mountain)
- error("Failed to open '%s'", file.c_str());
-
+ Common::String file = "vltmntn";
+ VideoEntryPtr mountain = _vm->playMovie(file, kMystStack);
mountain->moveTo(159, 96);
mountain->setBounds(Audio::Timestamp(0, 11180, 600), Audio::Timestamp(0, 16800, 600));
_state.imagerActive = 0;
} else {
// Mountains appearing
- Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
- VideoEntryPtr mountain = _vm->_video->playMovie(file);
- if (!mountain)
- error("Failed to open '%s'", file.c_str());
-
+ Common::String file = "vltmntn";
+ VideoEntryPtr mountain = _vm->playMovie(file, kMystStack);
mountain->moveTo(159, 96);
mountain->setBounds(Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 11180, 600));
@@ -1301,10 +1291,10 @@ void Myst::o_towerElevatorAnimation(uint16 var, const ArgumentsArray &args) {
switch (args[0]) {
case 0:
- _vm->playMovieBlocking(_vm->wrapMovieFilename("libdown", kMystStack), 216, 78);
+ _vm->playMovieBlocking("libdown", kMystStack, 216, 78);
break;
case 1:
- _vm->playMovieBlocking(_vm->wrapMovieFilename("libup", kMystStack), 216, 78);
+ _vm->playMovieBlocking("libup", kMystStack, 216, 78);
break;
default:
break;
@@ -1878,16 +1868,10 @@ Common::Rational Myst::boilerComputeGaugeRate(uint16 pressure, uint32 delay) {
void Myst::boilerResetGauge(const Common::Rational &rate) {
if (!_cabinGaugeMovie || _cabinGaugeMovie->endOfVideo()) {
if (_vm->getCurCard() == 4098) {
- _cabinGaugeMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabingau", kMystStack));
- if (!_cabinGaugeMovie)
- error("Failed to open cabingau movie");
-
+ _cabinGaugeMovie = _vm->playMovie("cabingau", kMystStack);
_cabinGaugeMovie->moveTo(243, 96);
} else {
- _cabinGaugeMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabcgfar", kMystStack));
- if (!_cabinGaugeMovie)
- error("Failed to open cabingau movie");
-
+ _cabinGaugeMovie = _vm->playMovie("cabcgfar", kMystStack);
_cabinGaugeMovie->moveTo(254, 136);
}
}
@@ -2207,20 +2191,15 @@ void Myst::rocketCheckSolution() {
lever->drawFrame(0);
// Book appearing
- Common::String movieFile = _vm->wrapMovieFilename("selenbok", kMystStack);
- _rocketLinkBook = _vm->_video->playMovie(movieFile);
- if (!_rocketLinkBook)
- error("Failed to open '%s'", movieFile.c_str());
-
+ Common::String movieFile = "selenbok";
+ _rocketLinkBook = _vm->playMovie(movieFile, kMystStack);
_rocketLinkBook->moveTo(224, 41);
_rocketLinkBook->setBounds(Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 660, 600));
+
_vm->waitUntilMovieEnds(_rocketLinkBook);
// Book looping closed
- _rocketLinkBook = _vm->_video->playMovie(movieFile);
- if (!_rocketLinkBook)
- error("Failed to open '%s'", movieFile.c_str());
-
+ _rocketLinkBook = _vm->playMovie(movieFile, kMystStack);
_rocketLinkBook->moveTo(224, 41);
_rocketLinkBook->setLooping(true);
_rocketLinkBook->setBounds(Audio::Timestamp(0, 660, 600), Audio::Timestamp(0, 3500, 600));
@@ -2804,10 +2783,7 @@ void Myst::clockGearForwardOneStep(uint16 gear) {
// Set video bounds
uint16 gearPosition = _clockGearsPositions[gear] - 1;
- _clockGearsVideos[gear] = _vm->_video->playMovie(_vm->wrapMovieFilename(videos[gear], kMystStack));
- if (!_clockGearsVideos[gear])
- error("Failed to open %s movie", videos[gear]);
-
+ _clockGearsVideos[gear] = _vm->playMovie(videos[gear], kMystStack);
_clockGearsVideos[gear]->moveTo(x[gear], y[gear]);
_clockGearsVideos[gear]->setBounds(
Audio::Timestamp(0, startTime[gearPosition], 600),
@@ -2821,10 +2797,7 @@ void Myst::clockWeightDownOneStep() {
// Set video bounds
if (updateVideo) {
- _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack));
- if (!_clockWeightVideo)
- error("Failed to open cl1wlfch movie");
-
+ _clockWeightVideo = _vm->playMovie("cl1wlfch", kMystStack);
_clockWeightVideo->moveTo(124, 0);
_clockWeightVideo->setBounds(
Audio::Timestamp(0, _clockWeightPosition, 600),
@@ -2852,7 +2825,7 @@ void Myst::o_clockLeverEndMove(uint16 var, const ArgumentsArray &args) {
// Let movies stop playing
for (uint i = 0; i < ARRAYSIZE(videos); i++) {
- VideoEntryPtr handle = _vm->_video->findVideo(_vm->wrapMovieFilename(videos[i], kMystStack));
+ VideoEntryPtr handle = _vm->findVideo(videos[i], kMystStack);
if (handle)
_vm->waitUntilMovieEnds(handle);
}
@@ -2878,14 +2851,12 @@ void Myst::clockGearsCheckSolution() {
// Make weight go down
_vm->_sound->playEffect(9113);
- _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack));
- if (!_clockWeightVideo)
- error("Failed to open cl1wlfch movie");
-
+ _clockWeightVideo = _vm->playMovie("cl1wlfch", kMystStack);
_clockWeightVideo->moveTo(124, 0);
_clockWeightVideo->setBounds(
Audio::Timestamp(0, _clockWeightPosition, 600),
Audio::Timestamp(0, 2214, 600));
+
_vm->waitUntilMovieEnds(_clockWeightVideo);
_clockWeightPosition = 2214;
@@ -2894,7 +2865,7 @@ void Myst::clockGearsCheckSolution() {
_vm->_sound->playEffect(7113);
// Gear opening video
- _vm->playMovieBlocking(_vm->wrapMovieFilename("cl1wggat", kMystStack), 195, 225);
+ _vm->playMovieBlocking("cl1wggat", kMystStack, 195, 225);
_state.gearsOpen = 1;
_vm->redrawArea(40);
@@ -2932,7 +2903,7 @@ void Myst::clockReset() {
// Let movies stop playing
for (uint i = 0; i < ARRAYSIZE(videos); i++) {
- VideoEntryPtr handle = _vm->_video->findVideo(_vm->wrapMovieFilename(videos[i], kMystStack));
+ VideoEntryPtr handle = _vm->findVideo(videos[i], kMystStack);
if (handle)
_vm->waitUntilMovieEnds(handle);
}
@@ -2946,10 +2917,7 @@ void Myst::clockReset() {
_vm->_sound->playEffect(7113);
// Gear closing movie
- VideoEntryPtr handle = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wggat", kMystStack));
- if (!handle)
- error("Failed to open cl1wggat movie");
-
+ VideoEntryPtr handle = _vm->playMovie("cl1wggat", kMystStack);
handle->moveTo(195, 225);
handle->seek(handle->getDuration());
handle->setRate(-1);
@@ -2966,10 +2934,7 @@ void Myst::clockReset() {
void Myst::clockResetWeight() {
_vm->_sound->playEffect(9113);
- _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack));
- if (!_clockWeightVideo)
- error("Failed to open cl1wlfch movie");
-
+ _clockWeightVideo = _vm->playMovie("cl1wlfch", kMystStack);
_clockWeightVideo->moveTo(124, 0);
// Play the movie backwards, weight going up
@@ -2989,10 +2954,7 @@ void Myst::clockResetGear(uint16 gear) {
// Set video bounds, gears going to 3
uint16 gearPosition = _clockGearsPositions[gear] - 1;
if (gearPosition != 2) {
- _clockGearsVideos[gear] = _vm->_video->playMovie(_vm->wrapMovieFilename(videos[gear], kMystStack));
- if (!_clockGearsVideos[gear])
- error("Failed to open gears movie");
-
+ _clockGearsVideos[gear] = _vm->playMovie(videos[gear], kMystStack);
_clockGearsVideos[gear]->moveTo(x[gear], y[gear]);
_clockGearsVideos[gear]->setBounds(
Audio::Timestamp(0, time[gearPosition], 600),
@@ -3319,11 +3281,9 @@ void Myst::gullsFly1_run() {
else
x = _vm->_rnd->getRandomNumber(160) + 260;
- VideoEntryPtr handle = _vm->_video->playMovie(_vm->wrapMovieFilename(gulls[video], kMystStack));
- if (!handle)
- error("Failed to open gulls movie");
-
+ VideoEntryPtr handle = _vm->playMovie(gulls[video], kMystStack);
handle->moveTo(x, 0);
+
_gullsNextTime = time + _vm->_rnd->getRandomNumber(16667) + 13334;
}
}
@@ -3460,11 +3420,9 @@ void Myst::gullsFly2_run() {
if (time > _gullsNextTime) {
uint16 video = _vm->_rnd->getRandomNumber(3);
if (video != 3) {
- VideoEntryPtr handle = _vm->_video->playMovie(_vm->wrapMovieFilename(gulls[video], kMystStack));
- if (!handle)
- error("Failed to open gulls movie");
-
+ VideoEntryPtr handle = _vm->playMovie(gulls[video], kMystStack);
handle->moveTo(424, 0);
+
_gullsNextTime = time + _vm->_rnd->getRandomNumber(16667) + 13334;
}
}
@@ -3489,10 +3447,7 @@ void Myst::o_boilerMovies_init(uint16 var, const ArgumentsArray &args) {
void Myst::boilerFireInit() {
if (_vm->getCurCard() == 4098) {
- _cabinFireMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabfire", kMystStack));
- if (!_cabinFireMovie)
- error("Failed to open cabfire movie");
-
+ _cabinFireMovie = _vm->playMovie("cabfire", kMystStack);
_cabinFireMovie->moveTo(240, 279);
_cabinFireMovie->setLooping(true);
_cabinFireMovie->pause(true);
@@ -3501,10 +3456,7 @@ void Myst::boilerFireInit() {
boilerFireUpdate(true);
} else {
if (_state.cabinPilotLightLit == 1 && _state.cabinValvePosition >= 1) {
- _cabinFireMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabfirfr", kMystStack));
- if (!_cabinFireMovie)
- error("Failed to open cabfirfr movie");
-
+ _cabinFireMovie = _vm->playMovie("cabfirfr", kMystStack);
_cabinFireMovie->moveTo(254, 244);
_cabinFireMovie->setLooping(true);
}
@@ -3531,16 +3483,10 @@ void Myst::boilerFireUpdate(bool init) {
void Myst::boilerGaugeInit() {
if (_vm->getCurCard() == 4098) {
- _cabinGaugeMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabingau", kMystStack));
- if (!_cabinGaugeMovie)
- error("Failed to open cabingau movie");
-
+ _cabinGaugeMovie = _vm->playMovie("cabingau", kMystStack);
_cabinGaugeMovie->moveTo(243, 96);
} else {
- _cabinGaugeMovie = _vm->_video->playMovie(_vm->wrapMovieFilename("cabcgfar", kMystStack));
- if (!_cabinGaugeMovie)
- error("Failed to open cabcgfar movie");
-
+ _cabinGaugeMovie = _vm->playMovie("cabcgfar", kMystStack);
_cabinGaugeMovie->moveTo(254, 136);
}
@@ -3589,26 +3535,23 @@ void Myst::o_greenBook_init(uint16 var, const ArgumentsArray &args) {
void Myst::greenBook_run() {
uint loopStart = 0;
uint loopEnd = 0;
- Common::String file;
+ Common::String videoName;
if (!_state.greenBookOpenedBefore) {
loopStart = 113200;
loopEnd = 116400;
- file = _vm->wrapMovieFilename("atrusbk1", kMystStack);
+ videoName = "atrusbk1";
} else {
loopStart = 8800;
loopEnd = 9700;
- file = _vm->wrapMovieFilename("atrusbk2", kMystStack);
+ videoName = "atrusbk2";
}
if (_tempVar == 1) {
_vm->_sound->stopEffect();
_vm->_sound->pauseBackground();
- VideoEntryPtr book = _vm->_video->playMovie(file);
- if (!book)
- error("Failed to open '%s'", file.c_str());
-
+ VideoEntryPtr book = _vm->playMovie(videoName, kMystStack);
book->moveTo(314, 76);
if (_globals.ending != 4) {
@@ -3619,13 +3562,11 @@ void Myst::greenBook_run() {
_tempVar = 0;
}
} else if (_tempVar == 2 && !_vm->_video->isVideoPlaying()) {
- VideoEntryPtr book = _vm->_video->playMovie(file);
- if (!book)
- error("Failed to open '%s'", file.c_str());
-
+ VideoEntryPtr book = _vm->playMovie(videoName, kMystStack);
book->moveTo(314, 76);
book->setBounds(Audio::Timestamp(0, loopStart, 600), Audio::Timestamp(0, loopEnd, 600));
book->setLooping(true);
+
_tempVar = 0;
}
}
@@ -3646,11 +3587,9 @@ void Myst::gullsFly3_run() {
if (video != 3) {
uint16 x = _vm->_rnd->getRandomNumber(280) + 135;
- VideoEntryPtr handle = _vm->_video->playMovie(_vm->wrapMovieFilename(gulls[video], kMystStack));
- if (!handle)
- error("Failed to open gulls movie");
-
+ VideoEntryPtr handle = _vm->playMovie(gulls[video], kMystStack);
handle->moveTo(x, 0);
+
_gullsNextTime = time + _vm->_rnd->getRandomNumber(16667) + 13334;
}
}