diff options
| author | Matthew Hoops | 2010-05-18 14:17:24 +0000 | 
|---|---|---|
| committer | Matthew Hoops | 2010-05-18 14:17:24 +0000 | 
| commit | 11cbdd03180a655b2b23ee4a13f1a00a1d782b3c (patch) | |
| tree | 5b0d84211308ea37a2fa2f7017d6f96314f3c6fb /engines/saga/introproc_saga2.cpp | |
| parent | f3892a506b2f935bae0be6319394c503c786d368 (diff) | |
| download | scummvm-rg350-11cbdd03180a655b2b23ee4a13f1a00a1d782b3c.tar.gz scummvm-rg350-11cbdd03180a655b2b23ee4a13f1a00a1d782b3c.tar.bz2 scummvm-rg350-11cbdd03180a655b2b23ee4a13f1a00a1d782b3c.zip | |
Committing the rest of the VideoDecoder Rewrite from patch #2963496.
svn-id: r49079
Diffstat (limited to 'engines/saga/introproc_saga2.cpp')
| -rw-r--r-- | engines/saga/introproc_saga2.cpp | 59 | 
1 files changed, 34 insertions, 25 deletions
| diff --git a/engines/saga/introproc_saga2.cpp b/engines/saga/introproc_saga2.cpp index 0af31dae61..7491815303 100644 --- a/engines/saga/introproc_saga2.cpp +++ b/engines/saga/introproc_saga2.cpp @@ -40,13 +40,7 @@ namespace Saga {  int Scene::DinoStartProc() {  	_vm->_gfx->showCursor(false); -	Graphics::SmackerDecoder *smkDecoder = new Graphics::SmackerDecoder(_vm->_mixer); -	Graphics::VideoPlayer *player = new Graphics::VideoPlayer(smkDecoder); -	if (smkDecoder->loadFile("testvid.smk")) -		player->playVideo();        // Play introduction -	smkDecoder->closeFile(); -	delete player; -	delete smkDecoder; +	playMovie("testvid.smk");  	// HACK: Forcibly quit here  	_vm->quitGame(); @@ -57,16 +51,8 @@ int Scene::DinoStartProc() {  int Scene::FTA2StartProc() {  	_vm->_gfx->showCursor(false); -	Graphics::SmackerDecoder *smkDecoder = new Graphics::SmackerDecoder(_vm->_mixer); -	Graphics::VideoPlayer *player = new Graphics::VideoPlayer(smkDecoder); -	if (smkDecoder->loadFile("trimark.smk")) -		player->playVideo();      // Show Ignite logo -	smkDecoder->closeFile(); -	if (smkDecoder->loadFile("intro.smk")) -		player->playVideo();        // Play introduction -	smkDecoder->closeFile(); -	delete player; -	delete smkDecoder; +	playMovie("trimark.smk"); +	playMovie("intro.smk");  	// HACK: Forcibly quit here  	_vm->quitGame(); @@ -100,18 +86,41 @@ int Scene::FTA2EndProc(FTA2Endings whichEnding) {  	_vm->_gfx->showCursor(false);  	// Play ending -	Graphics::SmackerDecoder *smkDecoder = new Graphics::SmackerDecoder(_vm->_mixer); -	Graphics::VideoPlayer *player = new Graphics::VideoPlayer(smkDecoder); -	if (smkDecoder->loadFile(videoName)) { -		player->playVideo(); -		smkDecoder->closeFile(); -	} -	delete player; -	delete smkDecoder; +	playMovie(videoName);  	return SUCCESS;  } +void Scene::playMovie(const char *filename) { +	Graphics::SmackerDecoder *smkDecoder = new Graphics::SmackerDecoder(_vm->_mixer); + +	if (!smkDecoder->loadFile(filename)) +		return; + +	uint16 x = (g_system->getWidth() - smkDecoder->getWidth()) / 2; +	uint16 y = (g_system->getHeight() - smkDecoder->getHeight()) / 2; + +	while (!_vm->shouldQuit() && !smkDecoder->endOfVideo()) { +		if (smkDecoder->needsUpdate()) { +			Graphics::Surface *frame = smkDecoder->decodeNextFrame(); +			if (frame) { +				_vm->_system->copyRectToScreen((byte *)frame->pixels, frame->pitch, x, y, frame->w, frame->h); + +				if (smkDecoder->hasDirtyPalette()) +					smkDecoder->setSystemPalette(); + +				_vm->_system->updateScreen(); +			} +		} +	 +		Common::Event event; +		while (_vm->_system->getEventManager()->pollEvent(event)) +			; + +		_vm->_system->delayMillis(10); +	} +} +  } // End of namespace Saga  #endif | 
