diff options
Diffstat (limited to 'engines/mohawk/myst_stacks/myst.cpp')
-rw-r--r-- | engines/mohawk/myst_stacks/myst.cpp | 149 |
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; } } |