[Scummvm-cvs-logs] scummvm master -> 2657322f87c6dbf34705838430e9d8373c3f0877

sev- sev at scummvm.org
Thu Apr 3 22:24:18 CEST 2014


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2657322f87 FULLPIPE: Implement sceneHandler29_winArcade()


Commit: 2657322f87c6dbf34705838430e9d8373c3f0877
    https://github.com/scummvm/scummvm/commit/2657322f87c6dbf34705838430e9d8373c3f0877
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-03T23:23:29+03:00

Commit Message:
FULLPIPE: Implement sceneHandler29_winArcade()

Changed paths:
    engines/fullpipe/scenes/scene29.cpp



diff --git a/engines/fullpipe/scenes/scene29.cpp b/engines/fullpipe/scenes/scene29.cpp
index e02a34e..b8747aa 100644
--- a/engines/fullpipe/scenes/scene29.cpp
+++ b/engines/fullpipe/scenes/scene29.cpp
@@ -172,7 +172,94 @@ void scene29_initScene(Scene *sc) {
 }
 
 void sceneHandler29_winArcade() {
-	warning("STUB: sceneHandler29_winArcade()");
+	if (g_vars->scene29_shooter2->_flags & 4) {
+		g_vars->scene29_var13 = 0;
+
+		g_vars->scene29_shooter1->changeStatics2(ST_STR1_STAND);
+		g_vars->scene29_shooter2->changeStatics2(ST_STR2_STAND);
+
+		g_vars->scene29_shooter2->_flags &= 0xFFFB;
+
+		StaticANIObject *ani;
+		Ball *newball, *ball, *oldp0;
+
+		while (g_vars->scene29_var08.numBalls) {
+			ball = g_vars->scene29_var08.pHead;
+			ani = g_vars->scene29_var08.pHead->ani;
+			oldp0 = g_vars->scene29_var08.pHead->p0;
+			g_vars->scene29_var08.pHead = g_vars->scene29_var08.pHead->p0;
+
+			if (g_vars->scene29_var08.pHead)
+				oldp0->p1 = 0;
+			else
+				g_vars->scene29_var08.field_8 = 0;
+
+			ball->p0 = g_vars->scene29_var08.pTail;
+			g_vars->scene29_var08.pTail = ball;
+			g_vars->scene29_var08.numBalls--;
+
+			if (!g_vars->scene29_var08.numBalls)
+				g_vars->scene29_var08.reset();
+
+			ani->hide();
+
+			newball = g_vars->scene29_var05.sub04(g_vars->scene29_var05.field_8, 0);
+			newball->ani = ani;
+
+			if (g_vars->scene29_var05.field_8)
+				g_vars->scene29_var05.field_8->p0 = newball;
+			else
+				g_vars->scene29_var05.pHead = newball;
+
+			g_vars->scene29_var05.field_8 = newball;
+		}
+
+		while (g_vars->scene29_var07.numBalls) {
+			ball = g_vars->scene29_var07.pHead;
+			ani = g_vars->scene29_var07.pHead->ani;
+			oldp0 = g_vars->scene29_var07.pHead->p0;
+			g_vars->scene29_var07.pHead = g_vars->scene29_var07.pHead->p0;
+
+			if (g_vars->scene29_var07.pHead)
+				oldp0->p1 = 0;
+			else
+				g_vars->scene29_var07.field_8 = 0;
+
+			ball->p0 = g_vars->scene29_var07.pTail;
+			g_vars->scene29_var07.pTail = ball;
+			g_vars->scene29_var07.numBalls--;
+
+			if (!g_vars->scene29_var07.numBalls) {
+				g_vars->scene29_var07.numBalls = 0;
+				g_vars->scene29_var07.pTail = 0;
+				g_vars->scene29_var07.field_8 = 0;
+				g_vars->scene29_var07.pHead = 0;
+
+				free(g_vars->scene29_var07.cPlex);
+
+				g_vars->scene29_var07.cPlex = 0;
+			}
+
+			ani->hide();
+
+			newball = g_vars->scene29_var06.sub04(g_vars->scene29_var06.field_8, 0);
+			newball->ani = ani;
+
+			if (g_vars->scene29_var06.field_8)
+				g_vars->scene29_var06.field_8->p0 = newball;
+			else
+				g_vars->scene29_var06.pHead = newball;
+
+			g_vars->scene29_var06.field_8 = newball;
+		}
+
+		g_vars->scene29_ass->queueMessageQueue(0);
+		g_vars->scene29_ass->_flags &= 0xFFFB;
+
+		chainQueue(QU_SC29_ESCAPE, 1);
+	}
+
+	g_fp->setObjectState(sO_LeftPipe_29, g_fp->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
 }
 
 void sceneHandler29_shootGreen() {






More information about the Scummvm-git-logs mailing list