[Scummvm-cvs-logs] SF.net SVN: scummvm:[45186] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Oct 17 15:01:28 CEST 2009


Revision: 45186
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45186&view=rev
Author:   m_kiewitz
Date:     2009-10-17 13:01:28 +0000 (Sat, 17 Oct 2009)

Log Message:
-----------
SCI/newgui: SciGuiTransitions now all transitions are supported, blackout flag support still missing

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_transitions.cpp
    scummvm/trunk/engines/sci/gui/gui_transitions.h

Modified: scummvm/trunk/engines/sci/gui/gui_transitions.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_transitions.cpp	2009-10-17 12:42:21 UTC (rev 45185)
+++ scummvm/trunk/engines/sci/gui/gui_transitions.cpp	2009-10-17 13:01:28 UTC (rev 45186)
@@ -47,23 +47,31 @@
 
 // This table contains a mapping between oldIDs (prior SCI1LATE) and newIDs
 static const GuiTransitionTranslateEntry oldTransitionIDs[] = {
-	{   0, SCI_TRANSITIONS_VERTICALROLLFROMCENTER,		false },
-	{   1, SCI_TRANSITIONS_HORIZONTALROLLFROMCENTER,	false },
-	{   6, SCI_TRANSITIONS_DIAGONALROLLFROMCENTER,		false },
-	{   7, SCI_TRANSITIONS_DIAGONALROLLTOCENTER,		false },
+	{   0, SCI_TRANSITIONS_VERTICALROLL_FROMCENTER,		false },
+	{   1, SCI_TRANSITIONS_HORIZONTALROLL_FROMCENTER,	false },
+	{   2, SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT,			false },
+	{   3, SCI_TRANSITIONS_STRAIGHT_FROM_LEFT,			false },
+	{   4, SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM,		false },
+	{   5, SCI_TRANSITIONS_STRAIGHT_FROM_TOP,			false },
+	{   6, SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER,		false },
+	{   7, SCI_TRANSITIONS_DIAGONALROLL_TOCENTER,		false },
 	{   8, SCI_TRANSITIONS_BLOCKS,						false },
-	{   9, SCI_TRANSITIONS_VERTICALROLLTOCENTER,		false },
-	{  10, SCI_TRANSITIONS_HORIZONTALROLLTOCENTER,		false },
-	{  15, SCI_TRANSITIONS_DIAGONALROLLFROMCENTER,		true },
-	{  16, SCI_TRANSITIONS_DIAGONALROLLTOCENTER,		true },
+	{   9, SCI_TRANSITIONS_VERTICALROLL_TOCENTER,		false },
+	{  10, SCI_TRANSITIONS_HORIZONTALROLL_TOCENTER,		false },
+	{  11, SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT,			true },
+	{  12, SCI_TRANSITIONS_STRAIGHT_FROM_LEFT,			true },
+	{  13, SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM,		true },
+	{  14, SCI_TRANSITIONS_STRAIGHT_FROM_TOP,			true },
+	{  15, SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER,		true },
+	{  16, SCI_TRANSITIONS_DIAGONALROLL_TOCENTER,		true },
 	{  17, SCI_TRANSITIONS_BLOCKS,						true },
 	{  18, SCI_TRANSITIONS_PIXELATION,					false },
 	{  27, SCI_TRANSITIONS_PIXELATION	,				true },
 	{  30, SCI_TRANSITIONS_FADEPALETTE,					false },
-	{  40, SCI_TRANSITIONS_SCROLLRIGHT,					false },
-	{  41, SCI_TRANSITIONS_SCROLLLEFT,					false },
-	{  42, SCI_TRANSITIONS_SCROLLUP,					false },
-	{  43, SCI_TRANSITIONS_SCROLLDOWN,					false },
+	{  40, SCI_TRANSITIONS_SCROLL_RIGHT,				false },
+	{  41, SCI_TRANSITIONS_SCROLL_LEFT,					false },
+	{  42, SCI_TRANSITIONS_SCROLL_UP,					false },
+	{  43, SCI_TRANSITIONS_SCROLL_DOWN,					false },
 	{ 100, SCI_TRANSITIONS_NONE,						false },
 	{ 255, 255,											false }
 };
@@ -109,23 +117,29 @@
 		warning("SciGuiTransitions: blackout flag currently not supported");
 
 	switch (_number) {
-	case SCI_TRANSITIONS_VERTICALROLLFROMCENTER:
+	case SCI_TRANSITIONS_VERTICALROLL_FROMCENTER:
 		setNewPalette(); verticalRollFromCenter();
 		break;
-	case SCI_TRANSITIONS_VERTICALROLLTOCENTER:
+	case SCI_TRANSITIONS_VERTICALROLL_TOCENTER:
 		setNewPalette(); verticalRollFromCenter();
 		break;
-	case SCI_TRANSITIONS_HORIZONTALROLLFROMCENTER:
+	case SCI_TRANSITIONS_HORIZONTALROLL_FROMCENTER:
 		setNewPalette(); horizontalRollFromCenter();
 		break;
-	case SCI_TRANSITIONS_HORIZONTALROLLTOCENTER:
+	case SCI_TRANSITIONS_HORIZONTALROLL_TOCENTER:
 		setNewPalette(); horizontalRollToCenter();
 		break;
-	case SCI_TRANSITIONS_DIAGONALROLLTOCENTER:
+	case SCI_TRANSITIONS_DIAGONALROLL_TOCENTER:
 		setNewPalette(); diagonalRollToCenter();
-	case SCI_TRANSITIONS_DIAGONALROLLFROMCENTER:
+	case SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER:
 		setNewPalette(); diagonalRollFromCenter();
 
+	case SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT:
+	case SCI_TRANSITIONS_STRAIGHT_FROM_LEFT:
+	case SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM:
+	case SCI_TRANSITIONS_STRAIGHT_FROM_TOP:
+		setNewPalette(); straight(_number);
+
 	case SCI_TRANSITIONS_PIXELATION:
 		setNewPalette(); pixelation();
 		break;
@@ -138,11 +152,11 @@
 		fadeOut(); setNewScreen(); fadeIn();
 		break;
 
-	case SCI_TRANSITIONS_SCROLLRIGHT:
-	case SCI_TRANSITIONS_SCROLLLEFT:
-	case SCI_TRANSITIONS_SCROLLUP:
-	case SCI_TRANSITIONS_SCROLLDOWN:
-		setNewPalette(); scroll();
+	case SCI_TRANSITIONS_SCROLL_RIGHT:
+	case SCI_TRANSITIONS_SCROLL_LEFT:
+	case SCI_TRANSITIONS_SCROLL_UP:
+	case SCI_TRANSITIONS_SCROLL_DOWN:
+		setNewPalette(); scroll(_number);
 		break;
 
 	case SCI_TRANSITIONS_NONE_LONGBOW:
@@ -235,8 +249,64 @@
 	} while (mask != 0x40);
 }
 
+// directly shows new screen starting up/down/left/right and going to the opposite direction - works on _picRect area only
+void SciGuiTransitions::straight(int16 number) {
+	int16 stepNr = 0;
+	Common::Rect newScreenRect = _picRect;
+
+	switch (number) {
+	case SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT:
+		newScreenRect.left = newScreenRect.right - 1;
+		while (newScreenRect.left >= _picRect.left) {
+			_screen->copyRectToScreen(newScreenRect);
+			if ((stepNr & 1) == 0) {
+				g_system->updateScreen();
+				g_system->delayMillis(1);
+			}
+			stepNr++;
+			newScreenRect.translate(-1, 0);
+		}
+		break;
+
+	case SCI_TRANSITIONS_STRAIGHT_FROM_LEFT:
+		newScreenRect.right = newScreenRect.left + 1;
+		while (newScreenRect.right <= _picRect.right) {
+			_screen->copyRectToScreen(newScreenRect);
+			if ((stepNr & 1) == 0) {
+				g_system->updateScreen();
+				g_system->delayMillis(1);
+			}
+			stepNr++;
+			newScreenRect.translate(1, 0);
+		}
+		break;
+
+	case SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM:
+		newScreenRect.top = newScreenRect.bottom - 1;
+		while (newScreenRect.top >= _picRect.top) {
+			_screen->copyRectToScreen(newScreenRect);
+			g_system->updateScreen();
+			g_system->delayMillis(3);
+			stepNr++;
+			newScreenRect.translate(0, -1);
+		}
+		break;
+
+	case SCI_TRANSITIONS_STRAIGHT_FROM_TOP:
+		newScreenRect.bottom = newScreenRect.top + 1;
+		while (newScreenRect.bottom <= _picRect.bottom) {
+			_screen->copyRectToScreen(newScreenRect);
+			g_system->updateScreen();
+			g_system->delayMillis(3);
+			stepNr++;
+			newScreenRect.translate(0, 1);
+		}
+		break;
+	}
+}
+
 // scroll old screen (up/down/left/right) and insert new screen that way - works on _picRect area only
-void SciGuiTransitions::scroll() {
+void SciGuiTransitions::scroll(int16 number) {
 	int16 screenWidth, screenHeight;
 	byte *oldScreenPtr;
 	int16 stepNr = 0;
@@ -249,8 +319,8 @@
 
 	oldScreenPtr = _oldScreen + _picRect.left + _picRect.top * screenWidth;
 
-	switch (_number) {
-	case SCI_TRANSITIONS_SCROLLLEFT:
+	switch (number) {
+	case SCI_TRANSITIONS_SCROLL_LEFT:
 		newScreenRect.right = newScreenRect.left;
 		newMoveRect.left = newMoveRect.right;
 		while (oldMoveRect.left < oldMoveRect.right) {
@@ -269,7 +339,7 @@
 			g_system->updateScreen();
 		break;
 
-	case SCI_TRANSITIONS_SCROLLRIGHT:
+	case SCI_TRANSITIONS_SCROLL_RIGHT:
 		newScreenRect.left = newScreenRect.right;
 		while (oldMoveRect.left < oldMoveRect.right) {
 			oldMoveRect.left++;
@@ -287,7 +357,7 @@
 			g_system->updateScreen();
 		break;
 
-	case SCI_TRANSITIONS_SCROLLUP:
+	case SCI_TRANSITIONS_SCROLL_UP:
 		newScreenRect.bottom = newScreenRect.top;
 		newMoveRect.top = newMoveRect.bottom;
 		while (oldMoveRect.top < oldMoveRect.bottom) {
@@ -301,7 +371,7 @@
 		}
 		break;
 
-	case SCI_TRANSITIONS_SCROLLDOWN:
+	case SCI_TRANSITIONS_SCROLL_DOWN:
 		newScreenRect.top = newScreenRect.bottom;
 		while (oldMoveRect.top < oldMoveRect.bottom) {
 			oldMoveRect.top++;

Modified: scummvm/trunk/engines/sci/gui/gui_transitions.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_transitions.h	2009-10-17 12:42:21 UTC (rev 45185)
+++ scummvm/trunk/engines/sci/gui/gui_transitions.h	2009-10-17 13:01:28 UTC (rev 45186)
@@ -37,22 +37,26 @@
 };
 
 enum {
-	SCI_TRANSITIONS_VERTICALROLLFROMCENTER		= 0,
-	SCI_TRANSITIONS_HORIZONTALROLLFROMCENTER	= 1,
-	SCI_TRANSITIONS_DIAGONALROLLFROMCENTER		= 6,
-	SCI_TRANSITIONS_DIAGONALROLLTOCENTER		= 7,
+	SCI_TRANSITIONS_VERTICALROLL_FROMCENTER		= 0,
+	SCI_TRANSITIONS_HORIZONTALROLL_FROMCENTER	= 1,
+	SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT			= 2,
+	SCI_TRANSITIONS_STRAIGHT_FROM_LEFT			= 3,
+	SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM		= 4,
+	SCI_TRANSITIONS_STRAIGHT_FROM_TOP			= 5,
+	SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER		= 6,
+	SCI_TRANSITIONS_DIAGONALROLL_TOCENTER		= 7,
 	SCI_TRANSITIONS_BLOCKS						= 8,
 	SCI_TRANSITIONS_PIXELATION					= 9,
 	SCI_TRANSITIONS_FADEPALETTE					= 10,
-	SCI_TRANSITIONS_SCROLLRIGHT					= 11,
-	SCI_TRANSITIONS_SCROLLLEFT					= 12,
-	SCI_TRANSITIONS_SCROLLUP					= 13,
-	SCI_TRANSITIONS_SCROLLDOWN					= 14,
+	SCI_TRANSITIONS_SCROLL_RIGHT				= 11,
+	SCI_TRANSITIONS_SCROLL_LEFT					= 12,
+	SCI_TRANSITIONS_SCROLL_UP					= 13,
+	SCI_TRANSITIONS_SCROLL_DOWN					= 14,
 	SCI_TRANSITIONS_NONE_LONGBOW				= 15,
 	SCI_TRANSITIONS_NONE						= 100,
 	// here are transitions that are used by the old tableset, but are not included anymore in the new tableset
-	SCI_TRANSITIONS_VERTICALROLLTOCENTER		= 300,
-	SCI_TRANSITIONS_HORIZONTALROLLTOCENTER		= 301
+	SCI_TRANSITIONS_VERTICALROLL_TOCENTER		= 300,
+	SCI_TRANSITIONS_HORIZONTALROLL_TOCENTER		= 301
 };
 
 class SciGuiScreen;
@@ -72,7 +76,8 @@
 	void fadeIn();
 	void pixelation();
 	void blocks();
-	void scroll();
+	void straight(int16 number);
+	void scroll(int16 number);
 	void verticalRollFromCenter();
 	void verticalRollToCenter();
 	void horizontalRollFromCenter();


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