[Scummvm-cvs-logs] SF.net SVN: scummvm:[49458] scummvm/trunk/engines/tucker

cyx at users.sourceforge.net cyx at users.sourceforge.net
Sun Jun 6 16:18:16 CEST 2010


Revision: 49458
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49458&view=rev
Author:   cyx
Date:     2010-06-06 14:18:16 +0000 (Sun, 06 Jun 2010)

Log Message:
-----------
add missing decodeNextAnimationFrame in default case for sequence 9

Modified Paths:
--------------
    scummvm/trunk/engines/tucker/sequences.cpp
    scummvm/trunk/engines/tucker/tucker.h

Modified: scummvm/trunk/engines/tucker/sequences.cpp
===================================================================
--- scummvm/trunk/engines/tucker/sequences.cpp	2010-06-06 14:17:37 UTC (rev 49457)
+++ scummvm/trunk/engines/tucker/sequences.cpp	2010-06-06 14:18:16 UTC (rev 49458)
@@ -764,10 +764,10 @@
 	}
 }
 
-bool AnimationSequencePlayer::decodeNextAnimationFrame(int index) {
+bool AnimationSequencePlayer::decodeNextAnimationFrame(int index, bool copyDirtyRects) {
 	::Graphics::Surface *surface = _flicPlayer[index].decodeNextFrame();
 
-	if (_seqNum == 19) {
+	if (!copyDirtyRects) {
 		for (uint16 y = 0; (y < surface->h) && (y < kScreenHeight); y++)
 			memcpy(_offscreenBuffer + y * kScreenWidth, (byte *)surface->pixels + y * surface->pitch, surface->w);
 	} else {
@@ -812,7 +812,7 @@
 			_flicPlayer[1].reset();
 	}
 
-	bool framesLeft = decodeNextAnimationFrame(0);
+	bool framesLeft = decodeNextAnimationFrame(0, false);
 
 	if (surface)
 		for (int i = 0; i < kScreenWidth * kScreenHeight; ++i)
@@ -922,17 +922,10 @@
 }
 
 void AnimationSequencePlayer::drawPic1Part10() {
-	::Graphics::Surface *surface = _flicPlayer[0].decodeNextFrame();
-	_flicPlayer[0].copyDirtyRectsToBuffer(_offscreenBuffer, kScreenWidth);
-	++_frameCounter;
-
-	if (_flicPlayer[0].hasDirtyPalette())
-		getRGBPalette(0);
-
 	int offset = 0;
 	for (int y = 0; y < kScreenHeight; ++y) {
 		for (int x = 0; x < kScreenWidth; ++x) {
-			byte color = *((byte *)surface->pixels + offset);
+			byte color = _offscreenBuffer[offset];
 
 			if (color == 0)
 				color = _picBufPtr[800 + y * 640 + _updateScreenWidth + x];
@@ -951,22 +944,24 @@
 }
 
 void AnimationSequencePlayer::playIntroSeq9_10() {
-	if (_flicPlayer[0].getCurFrame() >= 263 && _flicPlayer[0].getCurFrame() <= 294) {
+	const int nextFrame = _flicPlayer[0].getCurFrame() + 1;
+	if (nextFrame >= 263 && nextFrame <= 294) {
+		decodeNextAnimationFrame(0, false);
 		drawPic1Part10();
 		_updateScreenWidth += 6;
-	} else if (_flicPlayer[0].getCurFrame() == 983) {
+	} else if (nextFrame == 983) {
 		decodeNextAnimationFrame(0);
 		drawPic2Part10();
-	} else if (_flicPlayer[0].getCurFrame() >= 987 && _flicPlayer[0].getCurFrame() <= 995) {
+	} else if (nextFrame >= 987 && nextFrame <= 995) {
+		decodeNextAnimationFrame(0, false);
 		drawPic1Part10();
 		_updateScreenWidth -= 25;
 		if (_updateScreenWidth < 0) {
 			_updateScreenWidth = 0;
 		}
-	}
-
-	if (_flicPlayer[0].endOfVideo())
+	} else if (!decodeNextAnimationFrame(0)) {
 		_changeToNextSequence = true;
+	}
 }
 
 void AnimationSequencePlayer::loadIntroSeq21_22() {

Modified: scummvm/trunk/engines/tucker/tucker.h
===================================================================
--- scummvm/trunk/engines/tucker/tucker.h	2010-06-06 14:17:37 UTC (rev 49457)
+++ scummvm/trunk/engines/tucker/tucker.h	2010-06-06 14:18:16 UTC (rev 49458)
@@ -934,7 +934,7 @@
 	void unloadAnimation();
 	uint8 *loadPicture(const char *fileName);
 	void openAnimation(int index, const char *fileName);
-	bool decodeNextAnimationFrame(int index);
+	bool decodeNextAnimationFrame(int index, bool copyDirtyRects = true);
 	void loadIntroSeq17_18();
 	void playIntroSeq17_18();
 	void loadIntroSeq19_20();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list