[Scummvm-cvs-logs] SF.net SVN: scummvm: [21354] scummvm/trunk/engines/kyra

vinterstum at users.sourceforge.net vinterstum at users.sourceforge.net
Fri Mar 17 20:42:01 CET 2006


Revision: 21354
Author:   vinterstum
Date:     2006-03-17 20:41:34 -0800 (Fri, 17 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21354&view=rev

Log Message:
-----------
Extends seq_drinkPotionAnim() so that the color of the flask Brandon
drinks will be correct. Also fixes a bug where an animation
(Brandon ringing the bells) would play too quickly.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra.h
    scummvm/trunk/engines/kyra/screen.cpp
    scummvm/trunk/engines/kyra/screen.h
    scummvm/trunk/engines/kyra/script_v1.cpp
    scummvm/trunk/engines/kyra/sequences_v1.cpp
Modified: scummvm/trunk/engines/kyra/kyra.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra.h	2006-03-18 02:24:07 UTC (rev 21353)
+++ scummvm/trunk/engines/kyra/kyra.h	2006-03-18 04:41:34 UTC (rev 21354)
@@ -581,7 +581,7 @@
 	void seq_makeBrandonWisp();
 	void seq_dispelMagicAnimation();
 	void seq_fillFlaskWithWater(int item, int type);
-	void seq_playDrinkPotionAnim(int unk1, int unk2, int flags);
+	void seq_playDrinkPotionAnim(int item, int unk2, int flags);
 	int seq_playEnd();
 	void seq_brandonToStone();
 	void seq_playEnding();

Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp	2006-03-18 02:24:07 UTC (rev 21353)
+++ scummvm/trunk/engines/kyra/screen.cpp	2006-03-18 04:41:34 UTC (rev 21354)
@@ -234,6 +234,14 @@
 	}
 }
 
+void Screen::setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue) {
+	debugC(9, kDebugLevelScreen, "Screen::setPaletteIndex(%u, %u, %u, %u)", index, red, green, blue);
+	_currentPalette[index * 3 + 0] = red;
+	_currentPalette[index * 3 + 1] = green;
+	_currentPalette[index * 3 + 2] = blue;
+	setScreenPalette(_currentPalette);
+}
+
 void Screen::setScreenPalette(const uint8 *palData) {
 	debugC(9, kDebugLevelScreen, "Screen::setScreenPalette(%p)", (const void *)palData);
 	memcpy(_screenPalette, palData, 768);

Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h	2006-03-18 02:24:07 UTC (rev 21353)
+++ scummvm/trunk/engines/kyra/screen.h	2006-03-18 04:41:34 UTC (rev 21354)
@@ -99,6 +99,7 @@
 	void fadeToBlack();
 	void fadeSpecialPalette(int palIndex, int startIndex, int size, int fadeTime);
 	void fadePalette(const uint8 *palData, int delay);
+	void setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue);
 	void setScreenPalette(const uint8 *palData);
 	void copyToPage0(int y, int h, uint8 page, uint8 *seqBuf);
 	void copyRegion(int x1, int y1, int x2, int y2, int w, int h, int srcPage, int dstPage, int flags=0);

Modified: scummvm/trunk/engines/kyra/script_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v1.cpp	2006-03-18 02:24:07 UTC (rev 21353)
+++ scummvm/trunk/engines/kyra/script_v1.cpp	2006-03-18 04:41:34 UTC (rev 21354)
@@ -1331,7 +1331,8 @@
 		delay(10);
 	}
 	// }
-	// XXX processButtonList calls
+	processButtonList(_buttonList);
+	_skipFlag = false;
 	script->variables[1] = _mouseX;
 	script->variables[2] = _mouseY;
 	return 0;

Modified: scummvm/trunk/engines/kyra/sequences_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sequences_v1.cpp	2006-03-18 02:24:07 UTC (rev 21353)
+++ scummvm/trunk/engines/kyra/sequences_v1.cpp	2006-03-18 04:41:34 UTC (rev 21354)
@@ -787,9 +787,56 @@
 	characterSays(_fullFlask[type], 0, -2);
 }
 
-void KyraEngine::seq_playDrinkPotionAnim(int unk1, int unk2, int flags) {
-	debugC(9, kDebugLevelMain, "KyraEngine::seq_playDrinkPotionAnim(%d, %d, %d)", unk1, unk2, flags);
-	// XXX
+void KyraEngine::seq_playDrinkPotionAnim(int item, int unk2, int flags) {
+	debugC(9, kDebugLevelMain, "KyraEngine::seq_playDrinkPotionAnim(%d, %d, %d)", item, unk2, flags);
+	uint8 red, green, blue;
+	
+	switch (item) {
+		case 60:
+		case 61:
+			red = 63;
+			green = blue = 6;
+			break;
+		case 62:
+		case 63:
+			red = green = 0;
+			blue = 67;
+			break;
+		case 64:
+		case 65:
+			red = 84;
+			green = 78;
+			blue = 14;
+			break;
+		case 66:
+			red = blue = 0;
+			green = 48;
+			break;
+		case 67:
+			red = 100;
+			green = 48;
+			blue = 23;
+			break;
+		case 68:
+			red = 73;
+			green = 0;
+			blue = 89;
+			break;
+		case 69:
+			red = green = 73;
+			blue = 86;
+			break;
+		default:
+			red = 33;
+			green = 66;
+			blue = 100;
+	}
+	red   = (uint8)((double)red   * 0.63);
+	green = (uint8)((double)green * 0.63);
+	blue  = (uint8)((double)blue  * 0.63);
+	
+	_screen->setPaletteIndex(0xFE, red, green, blue);
+	
 	_screen->hideMouse();
 	checkAmuletAnimFlags();
 	_currentCharacter->facing = 5;
@@ -827,6 +874,7 @@
 	_currentCharacter->currentAnimFrame = 7;
 	_animator->animRefreshNPC(0);
 	freeShapes123();
+	_screen->setPaletteIndex(0xFE, 30, 30, 30);
 	_screen->showMouse();
 }
 


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