[Scummvm-cvs-logs] scummvm master -> ee9c03158bdfb974e544438f393e2adb44634caf

sev- sev at scummvm.org
Sun Mar 9 23:04:39 CET 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:
ee9c03158b FULLPIPE: Implement sceneHandler18and19_drawRiders()


Commit: ee9c03158bdfb974e544438f393e2adb44634caf
    https://github.com/scummvm/scummvm/commit/ee9c03158bdfb974e544438f393e2adb44634caf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-03-10T00:03:15+02:00

Commit Message:
FULLPIPE: Implement sceneHandler18and19_drawRiders()

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene18and19.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b919ccd..64f528a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -891,9 +891,13 @@ namespace Fullpipe {
 #define MV_KSL_INBOY 1491
 #define MV_KSL_INGIRL 1493
 #define MV_KSL_INMAN 1504
+#define MV_KSL_JUMPBOY 1473
+#define MV_KSL_JUMPGIRL 1475
+#define MV_KSL_JUMPMAN 1509
 #define MV_KSL_SWING 1460
 #define MV_KSL_SWINGBOY 1462
 #define MV_KSL_SWINGGIRL 1464
+#define MV_KSL_SWINGMAN 1502
 #define MV_WHR18_SPIN 1300
 #define PIC_SC18_DOMIN 5184
 #define PIC_SC18_LADDER1 1471
@@ -902,9 +906,12 @@ namespace Fullpipe {
 #define PIC_SC18_RTRUBA 1520
 #define SND_18_006 3906
 #define SND_18_010 4994
+#define ST_KSL_BOY 1463
+#define ST_KSL_GIRL 1465
 #define ST_KSL_JUMPBOY 1492
 #define ST_KSL_JUMPGIRL 1494
 #define ST_KSL_JUMPMAN 1505
+#define ST_KSL_MAN 1503
 
 // Scene 19
 #define ANI_CORDIE 1529
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 0901593..763f142 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -295,6 +295,8 @@ Vars::Vars() {
 	scene18_var14 = -1;
 	scene18_var28 = 0;
 	scene18_var15 = 0;
+	scene18_var31 = 0;
+	scene18_var32 = 0;
 	scene18_boy = 0;
 	scene18_girl = 0;
 	scene18_domino = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 7d67aab..57f896a 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -494,6 +494,8 @@ public:
 	int scene18_var25;
 	int scene18_var26;
 	int scene18_var27;
+	int scene18_var31;
+	int scene18_var32;
 	int scene18_var33;
 	int scene18_var13;
 	int scene18_var14;
diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp
index 8c03a8e..29ee8ba 100644
--- a/engines/fullpipe/scenes/scene18and19.cpp
+++ b/engines/fullpipe/scenes/scene18and19.cpp
@@ -448,8 +448,130 @@ void sceneHandler18and19_boyJumpTo() {
 	g_vars->scene18_boy->startAnim(MV_BOY18_JUMPTO, 0, -1);
 }
 
+void sceneHandler18and19_girlJumpTo() {
+	warning("STUB: sceneHandler18and19_girlJumpTo()");
+}
+
+void sceneHandler18and19_manStandArmchair() {
+	warning("STUB: sceneHandler18and19_manStandArmchair()");
+}
+
 void sceneHandler18and19_drawRiders() {
-	warning("STUB: sceneHandler18and19_drawRiders()");
+	g_vars->scene18_var21++;
+
+	if (g_vars->scene18_var21 >= 359)
+		g_vars->scene18_var21 = 0;
+
+	for (int i = 0; i < g_vars->scene18_var07.size(); i++) {
+		Swinger *swinger = g_vars->scene18_var07[i];
+
+		double oldangle = swinger->angle;
+
+		swinger->angle += M_PI / 180;
+
+		if (swinger->angle > 2 * M_PI) {
+			swinger->angle -= 2 * M_PI;
+			oldangle -= 2 * M_PI;
+		}
+
+		int ix = g_vars->scene18_var20 - (int)(cos(swinger->angle) * -575.0);
+		int iy = g_vars->scene18_var04 - (int)(sin(swinger->angle) * -575.0) + 87;
+
+		if (!g_vars->scene18_var21) {
+			ix = swinger->sx;
+			iy = swinger->sy;
+			swinger->angle = (double)i * M_PI / 4;
+		}
+
+		if (swinger->ani->_movement)
+			swinger->ani->setOXY(ix - swinger->ix + swinger->ani->_movement->_ox, iy - swinger->iy + swinger->ani->_movement->_oy);
+		else
+			swinger->ani->setOXY(ix - swinger->ix + swinger->ani->_ox, iy - swinger->iy + swinger->ani->_oy);
+
+		swinger->ix = ix;
+		swinger->iy = iy;
+
+		if (!swinger->ani->_movement) {
+			int mv = 0;
+
+			if (swinger->sflags & 2) {
+				mv = MV_KSL_SWINGBOY;
+			} else if (swinger->sflags & 4) {
+				mv = MV_KSL_SWINGGIRL;
+			} else if (swinger->sflags & 0x20) {
+				mv = MV_KSL_SWINGMAN;
+			} else if (swinger->sflags & 1) {
+				mv = MV_KSL_SWING;
+			}
+
+			if (mv)
+				swinger->ani->startAnim(mv, 0, -1);
+
+			if (swinger->ani->_movement)
+				swinger->ani->_movement->_counter = 0;
+		}
+
+		if (g_vars->scene18_var22) {
+			if ((swinger->sflags & 2) && swinger->angle >= 2.792526803190933 && oldangle < 2.792526803190933) { // 8 pi / 9
+				swinger->sflags = 8;
+				swinger->ani->changeStatics2(ST_KSL_BOY);
+				swinger->ani->startAnim(MV_KSL_JUMPBOY, 0, -1);
+				g_vars->scene18_var32 = i;
+			} else if ((swinger->sflags & 4) && swinger->angle >= 2.82743338823082 && oldangle < 2.82743338823082) { // 9 pi / 10
+				swinger->sflags = 16;
+				swinger->ani->changeStatics2(ST_KSL_GIRL);
+				swinger->ani->startAnim(MV_KSL_JUMPGIRL, 0, -1);
+				g_vars->scene18_var32 = i;
+			} else if (g_vars->scene18_var23) {
+				if (g_vars->scene18_var24 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.228859116189517 && oldangle < 3.228859116189517) { // 37 pi / 36
+					g_vars->scene18_var33 = i;
+					sceneHandler18and19_boyJumpTo();
+				}
+			} else if (g_vars->scene18_var25 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.263765701229403 && oldangle < 3.263765701229403) { // 187 pi / 180
+				g_vars->scene18_var33 = i;
+				sceneHandler18and19_girlJumpTo();
+			}
+
+			if (swinger->angle >= 3.490658503988667 && oldangle < 3.490658503988667) { // 10 pi / 9
+				if (g_vars->scene18_var26)
+					g_vars->scene18_var24++;
+
+				g_vars->scene18_var26 = 0;
+			}
+		}
+
+		if (g_vars->scene18_var28 && (swinger->sflags & 1) && swinger->angle >= 1.448623279155297 && oldangle < 1.448623279155297) { // 83 pi / 180
+			g_vars->scene18_var27 = i;
+			sceneHandler18and19_manStandArmchair();
+		}
+
+		if (!g_vars->scene18_var15)
+			continue;
+
+		if (i == g_vars->scene18_var27) {
+			if (swinger->angle >= 2.967059728390367 && oldangle < 2.967059728390367) { // 17 pi / 18
+				g_fp->_gameLoader->preloadScene(SC_18, TrubaRight);
+			} else if (swinger->angle >= 0.4363323129985833 && oldangle < 0.4363323129985833) { // 5 pi / 36
+				g_fp->_gameLoader->preloadScene(SC_19, TrubaRight);
+			} else if (swinger->angle >= 4.1887902047864 && oldangle < 4.1887902047864) { // 4 pi / 3
+				g_fp->_sceneRect.translate(1200, 0);
+			}
+		}
+
+		if (g_vars->scene18_var13 > 0) {
+			if (swinger->sflags & 0x20) {
+				double newa = (double)g_vars->scene18_var14 * 0.01745329251994333;// pi / 180
+
+				if (newa <= swinger->angle && oldangle < newa) {
+					swinger->ani->changeStatics2(ST_KSL_MAN);
+					swinger->ani->startAnim(MV_KSL_JUMPMAN, 0, -1);
+					swinger->ani->_priority = 35;
+
+					g_vars->scene18_var31 = i;
+				}
+			}
+		}
+	}
 }
 
 void sceneHandler18and19_animateRiders() {






More information about the Scummvm-git-logs mailing list