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

sev- sev at scummvm.org
Mon Feb 3 14:47:20 CET 2014


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

Summary:
8f9bc161f4 FULLPIPE: Plug scene27 in
a7c0495d70 FULLPIPE: Implement sceneHandler27()
f5ffef7b66 FULLPIPE: Implement sceneHandler27_aimDude()


Commit: 8f9bc161f46b1b337c8a64254811b144dfebd9cd
    https://github.com/scummvm/scummvm/commit/8f9bc161f46b1b337c8a64254811b144dfebd9cd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00

Commit Message:
FULLPIPE: Plug scene27 in

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene27.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index f22505a..cc09d9e 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1083,6 +1083,16 @@ namespace Fullpipe {
 #define ST_VNT26_RIGHT2 3348
 #define ST_VNT26_UP2 1948
 
+// Scene 27
+#define ANI_BITA 2026
+#define ANI_BITAHANDLER 3349
+#define ANI_MAID 2015
+#define ANI_VODILLA 1994
+#define PIC_SC27_HITZONE2 4756
+#define ST_MID_BROOM 2022
+#define ST_MID_SPADE 3489
+#define ST_MID_SWAB2 2019
+
 // Scene 28
 #define ANI_LIFT 982
 #define ANI_LIFT_28 4238
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index f6a94de..0299934 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -49,6 +49,7 @@ MODULE_OBJS = \
 	scenes/scene24.o \
 	scenes/scene25.o \
 	scenes/scene26.o \
+	scenes/scene27.o \
 	scenes/scene28.o \
 	scenes/scene30.o \
 	scenes/scene31.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 71c8b1e..9075dba 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -300,6 +300,24 @@ Vars::Vars() {
 	scene26_sock = 0;
 	scene26_activeVent = 0;
 
+	scene27_var01 = 0;
+	scene27_var02 = 0;
+	scene27_var03 = 0;
+	scene27_var04 = 0;
+	scene27_hitZone = 0;
+	scene27_driver = 0;
+	scene27_maid = 0;
+	scene27_batHandler = 0;
+	scene27_var15 = 0;
+	scene27_bat = 0;
+	scene27_var08 = 0;
+	scene27_var09 = 0;
+	scene27_var10 = 0;
+	scene27_var11 = 0;
+	scene27_var12 = 0;
+	scene27_var13 = 0;
+	scene27_launchPhase = 0;
+
 	scene28_fliesArePresent = true;
 	scene28_beardedDirection = true;
 	scene28_darkeningObject = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 5f77f74..1f119b6 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -25,6 +25,7 @@
 
 namespace Fullpipe {
 
+struct Bat;
 struct BehaviorEntryInfo;
 class MGM;
 class MctlLadder;
@@ -183,6 +184,26 @@ int sceneHandlerFinal(ExCommand *cmd);
 void sceneDbgMenu_initScene(Scene *sc);
 int sceneHandlerDbgMenu(ExCommand *cmd);
 
+struct Ball {
+	Ball *p0;
+	Ball *p1;
+	StaticANIObject *ani;
+
+	Ball() : p0(0), p1(0), ani(0) {}
+};
+
+struct BallChain {
+	Ball *pHead;
+	Ball *field_8;
+	int numBalls;
+	Ball *pTail;
+	Ball *cPlex;
+	int cPlexLen;
+
+	BallChain() : pHead(0), field_8(0), pTail(0), numBalls(0), cPlex(0), cPlexLen(0) {}
+	~BallChain() { free(cPlex); }
+};
+
 class Vars {
 public:
 	Vars();
@@ -461,6 +482,27 @@ public:
 	StaticANIObject *scene26_sock;
 	StaticANIObject *scene26_activeVent;
 
+	int scene27_var01;
+	int scene27_var02;
+	int scene27_var03;
+	int scene27_var04;
+	PictureObject *scene27_hitZone;
+	StaticANIObject *scene27_driver;
+	StaticANIObject *scene27_maid;
+	StaticANIObject *scene27_batHandler;
+	int scene27_var15;
+	StaticANIObject *scene27_bat;
+	int scene27_var08;
+	int scene27_var09;
+	int scene27_var10;
+	int scene27_var11;
+	int scene27_var12;
+	int scene27_var13;
+	int scene27_launchPhase;
+	BallChain scene27_balls;
+	Common::List<Bat *> scene27_bats;
+	Common::List<Bat *> scene27_var07;
+
 	bool scene28_fliesArePresent;
 	bool scene28_beardedDirection;
 	PictureObject *scene28_darkeningObject;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 8d55a63..2f00878 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -36,6 +36,18 @@
 
 namespace Fullpipe {
 
+struct Bat {
+	StaticANIObject *ani;
+	int field_4;
+	double power;
+	int field_10;
+	int field_14;
+	double currX;
+	double currY;
+	double powerCos;
+	double powerSin;
+};
+
 void scene27_initScene(Scene *sc) {
 	g_vars->scene27_var01 = 200;
 	g_vars->scene27_var02 = 200;
@@ -50,10 +62,13 @@ void scene27_initScene(Scene *sc) {
 	g_vars->scene27_balls.pTail = 0;
 	g_vars->scene27_balls.field_8 = 0;
 	g_vars->scene27_balls.pHead = 0;
-	CPlex::FreeDataChain(g_vars->scene27_balls.cPlex);
+	g_vars->scene27_balls.cPlexLen = 10;
+
+	free(g_vars->scene27_balls.cPlex);
 	g_vars->scene27_balls.cPlex = 0;
-	scene27_bats.clear();
-	scene27_var07.clear();
+
+	g_vars->scene27_bats.clear();
+	g_vars->scene27_var07.clear();
 
 	g_vars->scene27_var15 = 1;
 	g_vars->scene27_bat = sc->getStaticANIObject1ById(ANI_BITA, -1);
@@ -61,39 +76,43 @@ void scene27_initScene(Scene *sc) {
 	for (int i = 0; i < 4; i++) {
 		StaticANIObject *newbat = new StaticANIObject(g_vars->scene27_bat);
 
-		v5 = g_vars->scene27_balls.pTail;
-		v6 = g_vars->scene27_balls.field_8;
+		Ball *runPtr = g_vars->scene27_balls.pTail;
+		Ball *lastP = g_vars->scene27_balls.field_8;
 
 		if (!g_vars->scene27_balls.pTail) {
-			v7 = CPlex::Create(&g_vars->scene27_balls.cPlex, g_vars->scene27_balls.cPlexLen, 12) + 4 + 12 * g_vars->scene27_balls.cPlexLen - 12;
+			g_vars->scene27_balls.cPlex = (Ball *)calloc(g_vars->scene27_balls.cPlexLen, sizeof(Ball));
+
+			Ball *p1 = g_vars->scene27_balls.cPlex + (g_vars->scene27_balls.cPlexLen - 1) * sizeof(Ball);
+
 			if (g_vars->scene27_balls.cPlexLen - 1 < 0) {
-				v5 = g_vars->scene27_balls.pTail;
+				runPtr = g_vars->scene27_balls.pTail;
 			} else {
-				v8 = g_vars->scene27_balls.cPlexLen;
-				v5 = g_vars->scene27_balls.pTail;
-				do {
-					*(_DWORD *)v7 = v5;
-					v5 = (Ball *)v7;
-					v7 -= 12;
-					--v8;
-				} while (v8);
-
-				g_vars->scene27_balls.pTail = v5;
+				runPtr = g_vars->scene27_balls.pTail;
+
+				for (int j = 0; j < g_vars->scene27_balls.cPlexLen; j++) {
+					p1->p1 = runPtr;
+					runPtr = p1;
+
+					p1 -= sizeof(Ball);
+				}
+
+				g_vars->scene27_balls.pTail = runPtr;
 			}
 		}
 
-		g_vars->scene27_balls.pTail = v5->pNext;
-		v5->pPrev = v6;
-		v5->pNext = 0;
-		++g_vars->scene27_balls.numBalls;
-		v5->ani = 0;
-		v5->ani = newbat;
+		g_vars->scene27_balls.pTail = runPtr->p0;
+		runPtr->p1 = lastP;
+		runPtr->p0 = 0;
+		runPtr->ani = newbat;
+
+		g_vars->scene27_balls.numBalls++;
 
 		if (g_vars->scene27_balls.field_8)
-			g_vars->scene27_balls.field_8->pNext = v5;
+			g_vars->scene27_balls.field_8->p0 = runPtr;
 		else
-			g_vars->scene27_balls.pHead = v5;
-		g_vars->scene27_balls.field_8 = v5;
+			g_vars->scene27_balls.pHead = runPtr;
+
+		g_vars->scene27_balls.field_8 = runPtr;
 
 		sc->addStaticANIObject(newbat, 1);
 	}
@@ -106,15 +125,15 @@ void scene27_initScene(Scene *sc) {
 	g_vars->scene27_var13 = 0;
 	g_vars->scene27_launchPhase = 0;
 
-	oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_fp->_currentScene;
 	g_fp->_currentScene = sc;
 
 	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
-		StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_SWAB2);
+		g_vars->scene27_maid->changeStatics2(ST_MID_SWAB2);
 	} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithBroom)) {
-		StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_BROOM);
+		g_vars->scene27_maid->changeStatics2(ST_MID_BROOM);
 	} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSpade)) {
-		StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_SPADE);
+		g_vars->scene27_maid->changeStatics2(ST_MID_SPADE);
 	}
 
 	g_fp->_currentScene = oldsc;


Commit: a7c0495d70f11981e6366a830c4b5178ab1e3ad1
    https://github.com/scummvm/scummvm/commit/a7c0495d70f11981e6366a830c4b5178ab1e3ad1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index cc09d9e..b148083 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1088,7 +1088,16 @@ namespace Fullpipe {
 #define ANI_BITAHANDLER 3349
 #define ANI_MAID 2015
 #define ANI_VODILLA 1994
+#define MSG_SC27_CLICKBET 2048
+#define MSG_SC27_HANDLERTOBACK 3372
+#define MSG_SC27_HANDLERTOFRONT 3371
+#define MSG_SC27_SHOWNEXTBET 3369
+#define MSG_SC27_STARTBET 2047
+#define MSG_SC27_STARTWIPE 2057
+#define MSG_SC27_TAKEVENT 4584
+#define MV_MAN27_FLOW 1990
 #define PIC_SC27_HITZONE2 4756
+#define SND_27_027 4128
 #define ST_MID_BROOM 2022
 #define ST_MID_SPADE 3489
 #define ST_MID_SWAB2 2019
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 2f00878..c3cba7f 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -157,4 +157,129 @@ int scene27_updateCursor() {
 	return g_fp->_cursorId;
 }
 
+void sceneHandler27_winArcade() {
+	warning("STUB: sceneHandler27_winArcade()");
+}
+
+void sceneHandler27_takeVent() {
+	warning("STUB: sceneHandler27_takeVent()");
+}
+
+void sceneHandler27_showNextBat() {
+	warning("STUB: sceneHandler27_showNextBat()");
+}
+
+void sceneHandler27_clickBat(ExCommand *cmd) {
+	warning("STUB: sceneHandler27_clickBat()");
+}
+
+void sceneHandler27_startBat(StaticANIObject *bat) {
+	warning("STUB: sceneHandler27_startBat()");
+}
+
+void sceneHandler27_startAiming() {
+	warning("STUB: sceneHandler27_startAiming()");
+}
+
+void sceneHandler27_sub04(ExCommand *cmd) {
+	warning("STUB: sceneHandler27_sub04()");
+}
+
+void sceneHandler27_aimDude() {
+	warning("STUB: sceneHandler27_aimDude()");
+}
+
+void sceneHandler27_throwBat() {
+	warning("STUB: sceneHandler27_throwBat()");
+}
+
+void sceneHandler27_animateBats() {
+	warning("STUB: sceneHandler27_animateBats()");
+}
+
+
+
+int sceneHandler27(ExCommand *cmd) {
+	if (cmd->_messageKind != 17)
+		return 0;
+
+	switch (cmd->_messageNum) {
+	case MSG_CMN_WINARCADE:
+		sceneHandler27_winArcade();
+		break;
+
+	case MSG_SC27_TAKEVENT:
+		sceneHandler27_takeVent();
+		break;
+
+	case MSG_SC27_SHOWNEXTBET:
+		sceneHandler27_showNextBat();
+		break;
+
+	case MSG_SC27_HANDLERTOFRONT:
+		g_vars->scene27_batHandler->_priority = 1005;
+		break;
+
+	case MSG_SC27_STARTWIPE:
+		g_vars->scene27_var10 = 1;
+
+		g_fp->playSound(SND_27_027, 0);
+
+		break;
+
+	case MSG_SC27_CLICKBET:
+		sceneHandler27_clickBat(cmd);
+		break;
+
+	case MSG_SC27_STARTBET:
+		if (g_vars->scene27_bat)
+			sceneHandler27_startBat(g_vars->scene27_bat);
+
+		break;
+
+	case 30:
+		if (g_vars->scene27_var08)
+			sceneHandler27_startAiming();
+
+		break;
+
+	case 29:
+		if (g_fp->_aniMan == g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y)
+			&& g_vars->scene27_var09)
+			sceneHandler27_sub04(cmd);
+
+		break;
+
+	case 33:
+		if (g_fp->_aniMan2) {
+			int x = g_fp->_aniMan2->_ox;
+
+			if (x < g_fp->_sceneRect.left + g_vars->scene27_var01)
+				g_fp->_currentScene->_x = x - g_vars->scene27_var03 - g_fp->_sceneRect.left;
+
+			if (x > g_fp->_sceneRect.right - g_vars->scene27_var01)
+				g_fp->_currentScene->_x = x + g_vars->scene27_var03 - g_fp->_sceneRect.right;
+		}
+
+		if (g_vars->scene27_var08)
+			sceneHandler27_aimDude();
+
+		if (g_vars->scene27_var10) {
+			sceneHandler27_throwBat();
+
+			if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT)
+				g_fp->_aniMan->startAnim(MV_MAN27_FLOW, 0, -1);
+		}
+
+		sceneHandler27_animateBats();
+
+		g_fp->_behaviorManager->updateBehaviors();
+		g_fp->startSceneTrack();
+
+		break;
+	}
+
+	return 0;
+}
+
 } // End of namespace Fullpipe


Commit: f5ffef7b66230aa4d147ec6c0fdc2fea14244677
    https://github.com/scummvm/scummvm/commit/f5ffef7b66230aa4d147ec6c0fdc2fea14244677
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_aimDude()

Changed paths:
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene27.cpp



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 9075dba..faa0cc6 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -316,6 +316,7 @@ Vars::Vars() {
 	scene27_var11 = 0;
 	scene27_var12 = 0;
 	scene27_var13 = 0;
+	scene27_var16 = 0;
 	scene27_launchPhase = 0;
 
 	scene28_fliesArePresent = true;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 1f119b6..99c061e 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -498,6 +498,7 @@ public:
 	int scene27_var11;
 	int scene27_var12;
 	int scene27_var13;
+	int scene27_var16;
 	int scene27_launchPhase;
 	BallChain scene27_balls;
 	Common::List<Bat *> scene27_bats;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index c3cba7f..46eebba 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -186,7 +186,16 @@ void sceneHandler27_sub04(ExCommand *cmd) {
 }
 
 void sceneHandler27_aimDude() {
-	warning("STUB: sceneHandler27_aimDude()");
+	int phase = (g_vars->scene27_var16 - g_fp->_mouseScreenPos.x) / 20 + 6;
+
+	if (phase < 6)
+		phase = 6;
+
+	if (phase > 11)
+		phase = 11;
+
+	if (g_fp->_aniMan->_movement)
+		g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
 }
 
 void sceneHandler27_throwBat() {






More information about the Scummvm-git-logs mailing list