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;  		}  	} | 
