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

sev- sev at scummvm.org
Tue Feb 4 06:40:51 CET 2014


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

Summary:
e34c357b47 FULLPIPE: Implement sceneHandler27_winArcade()
8225ffd065 FULLPIPE: Enable scene27
b128b8cacb FULLPIPE: Implement sceneHandler27_startAiming()
bdd282efe7 FULLPIPE: Implement sceneHandler27_clickBat()
090d971d25 FULLPIPE: Implement sceneHandler27_throwBat()
75a6aec6a1 FULLPIPE: Update scene27 callbacks
5d99d91fb0 FULLPIPE: Implement sceneHandler27_driverGiveVent()
a52c6eb5a5 FULLPIPE: Implement sceneHandler27_takeVent()
2ed9d0da3e FULLPIPE: Implementated sceneHandler27_showNextBat()
b2518bdadf FULLPIPE: Implement sceneHandler27_sub04() and sceneHandler27_sub07()
db02b57262 FULLPIPE: Implement sceneHandler27_startBat()
140f110377 FULLPIPE: Implement sceneHandler27_animateBats()
a67b7f487c FULLPIPE: Implement sceneHandler27_batCalcDistance()


Commit: e34c357b4743c91beb28af83f98ba344bfaa5a72
    https://github.com/scummvm/scummvm/commit/e34c357b4743c91beb28af83f98ba344bfaa5a72
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T10:58:41-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_winArcade()

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



diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 46eebba..870cff9 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -157,8 +157,19 @@ int scene27_updateCursor() {
 	return g_fp->_cursorId;
 }
 
+void sceneHandler27_driverGiveVent() {
+	warning("STUB: sceneHandler27_driverGiveVent()");
+}
+
 void sceneHandler27_winArcade() {
-	warning("STUB: sceneHandler27_winArcade()");
+	if (g_fp->getObjectState(sO_Driver) == g_fp->getObjectEnumState(sO_Driver, sO_WithSteering)) {
+		g_vars->scene27_var08 = 0;
+
+		g_fp->_aniMan->_callback2 = 0;
+		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+
+		sceneHandler27_driverGiveVent();
+	}
 }
 
 void sceneHandler27_takeVent() {


Commit: 8225ffd065e9549493ff2d7b392a46cc83cda74d
    https://github.com/scummvm/scummvm/commit/8225ffd065e9549493ff2d7b392a46cc83cda74d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:00:17-08:00

Commit Message:
FULLPIPE: Enable scene27

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



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index faa0cc6..8e76ffd 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -866,7 +866,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		_updateCursorCallback = scene26_updateCursor;
 		break;
 
-#if 0
 	case SC_27:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_27");
 		scene->preloadMovements(sceneVar);
@@ -877,7 +876,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		addMessageHandler(sceneHandler27, 2);
 		_updateCursorCallback = scene27_updateCursor;
 		break;
-#endif
 
 	case SC_28:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_28");
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 99c061e..9b476a7 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -137,8 +137,12 @@ void scene26_setupDrop(Scene *sc);
 int sceneHandler26(ExCommand *cmd);
 int scene26_updateCursor();
 
+void scene27_initScene(Scene *sc);
+int sceneHandler27(ExCommand *ex);
+int scene27_updateCursor();
+
 void scene28_initScene(Scene *sc);
- int sceneHandler28(ExCommand *ex);
+int sceneHandler28(ExCommand *ex);
 int scene28_updateCursor();
 
 int scene30_updateCursor();


Commit: b128b8cacb1cd57d4245d0bbb31db5a66be78aff
    https://github.com/scummvm/scummvm/commit/b128b8cacb1cd57d4245d0bbb31db5a66be78aff
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:04:32-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_startAiming()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b148083..10b2f13 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1098,6 +1098,7 @@ namespace Fullpipe {
 #define MV_MAN27_FLOW 1990
 #define PIC_SC27_HITZONE2 4756
 #define SND_27_027 4128
+#define SND_27_044 4687
 #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 870cff9..63b4964 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -189,7 +189,24 @@ void sceneHandler27_startBat(StaticANIObject *bat) {
 }
 
 void sceneHandler27_startAiming() {
-	warning("STUB: sceneHandler27_startAiming()");
+	g_vars->scene27_var08 = 0;
+	g_vars->scene27_var09 = 0;
+
+	g_fp->_aniMan->_callback2 = 0;
+
+	g_vars->scene27_launchPhase = g_fp->_aniMan->_movement->_currDynamicPhaseIndex - 6;
+
+	int phase = 21 - g_vars->scene27_launchPhase;
+
+    if (phase < 14)
+		phase = 14;
+
+    if (phase > 20)
+		phase = 20;
+
+	g_fp->playSound(SND_27_044, 0);
+
+	g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
 }
 
 void sceneHandler27_sub04(ExCommand *cmd) {


Commit: bdd282efe7a09e8b5278e4db04d39799b6ff9773
    https://github.com/scummvm/scummvm/commit/bdd282efe7a09e8b5278e4db04d39799b6ff9773
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:14:24-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_clickBat()

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



diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 63b4964..529e0d6 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -180,8 +180,26 @@ void sceneHandler27_showNextBat() {
 	warning("STUB: sceneHandler27_showNextBat()");
 }
 
+void sceneHandler27_throwBat() {
+	warning("STUB: sceneHandler27_throwBat()");
+}
+
 void sceneHandler27_clickBat(ExCommand *cmd) {
-	warning("STUB: sceneHandler27_clickBat()");
+	int bx = g_vars->scene27_bat->_ox - 5;
+	int by = g_vars->scene27_bat->_oy - 71;
+
+	if (ABS(bx - g_fp->_aniMan->_ox) > 1 || ABS(by - g_fp->_aniMan->_oy) > 1
+		|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+		MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, bx, by, 1, ST_MAN_RIGHT);
+
+		if (mq) {
+			mq->addExCommandToEnd(cmd->createClone());
+
+			postExCommand(g_fp->_aniMan->_id, 2, bx, by, 0, -1);
+		}
+	} else {
+		sceneHandler27_throwBat();
+	}
 }
 
 void sceneHandler27_startBat(StaticANIObject *bat) {
@@ -226,8 +244,8 @@ void sceneHandler27_aimDude() {
 		g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
 }
 
-void sceneHandler27_throwBat() {
-	warning("STUB: sceneHandler27_throwBat()");
+void sceneHandler27_sub07() {
+	warning("STUB: sceneHandler27_sub07()");
 }
 
 void sceneHandler27_animateBats() {
@@ -302,7 +320,7 @@ int sceneHandler27(ExCommand *cmd) {
 			sceneHandler27_aimDude();
 
 		if (g_vars->scene27_var10) {
-			sceneHandler27_throwBat();
+			sceneHandler27_sub07();
 
 			if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT)
 				g_fp->_aniMan->startAnim(MV_MAN27_FLOW, 0, -1);


Commit: 090d971d258578fd6f8aa1b6b7e4f032d45cc74f
    https://github.com/scummvm/scummvm/commit/090d971d258578fd6f8aa1b6b7e4f032d45cc74f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:20:45-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_throwBat()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 10b2f13..561c1af 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1096,6 +1096,7 @@ namespace Fullpipe {
 #define MSG_SC27_STARTWIPE 2057
 #define MSG_SC27_TAKEVENT 4584
 #define MV_MAN27_FLOW 1990
+#define MV_MAN27_THROWBET 1989
 #define PIC_SC27_HITZONE2 4756
 #define SND_27_027 4128
 #define SND_27_044 4687
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 529e0d6..24f2e50 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -180,8 +180,32 @@ void sceneHandler27_showNextBat() {
 	warning("STUB: sceneHandler27_showNextBat()");
 }
 
+int sceneHandler27_updateScreenCallback() {
+	warning("STUB: sceneHandler27_updateScreenCallback()");
+
+	return 0;
+}
+
+void sceneHandler27_aniManCallback(int *arg) {
+	warning("STUB: sceneHandler27_aniManCallback()");
+}
+
 void sceneHandler27_throwBat() {
-	warning("STUB: sceneHandler27_throwBat()");
+	if (getGameLoaderInteractionController()->_flag24)
+		g_fp->_updateScreenCallback = sceneHandler27_updateScreenCallback;
+
+	g_fp->_aniMan->_callback2 = sceneHandler27_aniManCallback;
+
+	g_fp->_aniMan->startAnim(MV_MAN27_THROWBET, 0, -1);
+
+	getCurrSceneSc2MotionController()->clearEnabled();
+	getGameLoaderInteractionController()->disableFlag24();
+
+	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+
+	g_vars->scene27_var09 = 0;
+
+	g_vars->scene27_bat->hide();
 }
 
 void sceneHandler27_clickBat(ExCommand *cmd) {


Commit: 75a6aec6a1d18ec818722602c347cc25babaf7d8
    https://github.com/scummvm/scummvm/commit/75a6aec6a1d18ec818722602c347cc25babaf7d8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:23:46-08:00

Commit Message:
FULLPIPE: Update scene27 callbacks

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



diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 24f2e50..05d6725 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -181,13 +181,23 @@ void sceneHandler27_showNextBat() {
 }
 
 int sceneHandler27_updateScreenCallback() {
-	warning("STUB: sceneHandler27_updateScreenCallback()");
+	int res;
 
-	return 0;
+	res = g_fp->drawArcadeOverlay(getGameLoaderInteractionController()->_flag24 == 0);
+
+	if (!res)
+		g_fp->_updateScreenCallback = 0;
+
+	return res;
 }
 
-void sceneHandler27_aniManCallback(int *arg) {
-	warning("STUB: sceneHandler27_aniManCallback()");
+void sceneHandler27_aniManCallback(int *phase) {
+	if (!g_vars->scene27_var09) {
+		if (*phase >= 5)
+			g_vars->scene27_var09 = 1;
+		else
+			++*phase;
+	}
 }
 
 void sceneHandler27_throwBat() {


Commit: 5d99d91fb022e25ff93f23daf59a318d02a01bf9
    https://github.com/scummvm/scummvm/commit/5d99d91fb022e25ff93f23daf59a318d02a01bf9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:27:36-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_driverGiveVent()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 561c1af..b5b60d4 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1098,8 +1098,10 @@ namespace Fullpipe {
 #define MV_MAN27_FLOW 1990
 #define MV_MAN27_THROWBET 1989
 #define PIC_SC27_HITZONE2 4756
+#define QU_DRV_GIVEVENT 2040
 #define SND_27_027 4128
 #define SND_27_044 4687
+#define ST_DRV_VENT 1996
 #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 05d6725..6110e7c 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -158,7 +158,15 @@ int scene27_updateCursor() {
 }
 
 void sceneHandler27_driverGiveVent() {
-	warning("STUB: sceneHandler27_driverGiveVent()");
+	g_vars->scene27_driver->changeStatics2(ST_DRV_VENT);
+	g_vars->scene27_driver->startMQIfIdle(QU_DRV_GIVEVENT, 1);
+
+	g_vars->scene27_var15 = 0;
+
+	getCurrSceneSc2MotionController()->setEnabled();
+	getGameLoaderInteractionController()->enableFlag24();
+
+	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
 }
 
 void sceneHandler27_winArcade() {


Commit: a52c6eb5a5c0f80d7991505ff5867f5da43c3b8b
    https://github.com/scummvm/scummvm/commit/a52c6eb5a5c0f80d7991505ff5867f5da43c3b8b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:30:59-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_takeVent()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b5b60d4..8e1ec4d 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1099,6 +1099,7 @@ namespace Fullpipe {
 #define MV_MAN27_THROWBET 1989
 #define PIC_SC27_HITZONE2 4756
 #define QU_DRV_GIVEVENT 2040
+#define QU_MID_CLEANVENT 4583
 #define SND_27_027 4128
 #define SND_27_044 4687
 #define ST_DRV_VENT 1996
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 6110e7c..4593f90 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -181,7 +181,14 @@ void sceneHandler27_winArcade() {
 }
 
 void sceneHandler27_takeVent() {
-	warning("STUB: sceneHandler27_takeVent()");
+	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
+		if (g_vars->scene27_maid->isIdle()) {
+			if (g_vars->scene27_maid->_flags & 4) {
+				g_vars->scene27_maid->changeStatics2(ST_MID_SWAB2);
+				g_vars->scene27_maid->startMQIfIdle(QU_MID_CLEANVENT, 1);
+			}
+		}
+	}
 }
 
 void sceneHandler27_showNextBat() {


Commit: 2ed9d0da3e05f316bcb0fd50204e209479996275
    https://github.com/scummvm/scummvm/commit/2ed9d0da3e05f316bcb0fd50204e209479996275
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T11:36:36-08:00

Commit Message:
FULLPIPE: Implementated sceneHandler27_showNextBat()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 8e1ec4d..889de5a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1100,6 +1100,7 @@ namespace Fullpipe {
 #define PIC_SC27_HITZONE2 4756
 #define QU_DRV_GIVEVENT 2040
 #define QU_MID_CLEANVENT 4583
+#define QU_SC27_SHOWBET 3368
 #define SND_27_027 4128
 #define SND_27_044 4687
 #define ST_DRV_VENT 1996
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 4593f90..2d75445 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -192,7 +192,14 @@ void sceneHandler27_takeVent() {
 }
 
 void sceneHandler27_showNextBat() {
-	warning("STUB: sceneHandler27_showNextBat()");
+	if (g_vars->scene27_bat) {
+		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC27_SHOWBET), 0, 1);
+
+		mq->replaceKeyCode(-1, g_vars->scene27_bat->_okeyCode);
+		mq->chain(0);
+	}
+
+	g_vars->scene27_batHandler->_priority = 1045;
 }
 
 int sceneHandler27_updateScreenCallback() {


Commit: b2518bdadf6d927faa449135c617e0dd1048721d
    https://github.com/scummvm/scummvm/commit/b2518bdadf6d927faa449135c617e0dd1048721d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T12:09:21-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_sub04() and sceneHandler27_sub07()

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 8e76ffd..a94f176 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -317,6 +317,7 @@ Vars::Vars() {
 	scene27_var12 = 0;
 	scene27_var13 = 0;
 	scene27_var16 = 0;
+	scene27_var17 = 0;
 	scene27_launchPhase = 0;
 
 	scene28_fliesArePresent = true;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 9b476a7..393f0e5 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -503,9 +503,10 @@ public:
 	int scene27_var12;
 	int scene27_var13;
 	int scene27_var16;
+	int scene27_var17;
 	int scene27_launchPhase;
 	BallChain scene27_balls;
-	Common::List<Bat *> scene27_bats;
+	Common::Array<Bat *> scene27_bats;
 	Common::List<Bat *> scene27_var07;
 
 	bool scene28_fliesArePresent;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 2d75445..d143577 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -40,8 +40,7 @@ struct Bat {
 	StaticANIObject *ani;
 	int field_4;
 	double power;
-	int field_10;
-	int field_14;
+	double field_10;
 	double currX;
 	double currY;
 	double powerCos;
@@ -284,7 +283,10 @@ void sceneHandler27_startAiming() {
 }
 
 void sceneHandler27_sub04(ExCommand *cmd) {
-	warning("STUB: sceneHandler27_sub04()");
+	g_vars->scene27_var16 = cmd->_x;
+	g_vars->scene27_var17 = cmd->_y;
+	g_vars->scene27_var08 = 1;
+	g_vars->scene27_var09 = 0;
 }
 
 void sceneHandler27_aimDude() {
@@ -301,15 +303,18 @@ void sceneHandler27_aimDude() {
 }
 
 void sceneHandler27_sub07() {
-	warning("STUB: sceneHandler27_sub07()");
+	for (uint i = 0; i < g_vars->scene27_bats.size(); i++) {
+		if (g_vars->scene27_bats[i]->currX < 800.0 ) {
+			g_vars->scene27_bats[i]->field_10 = atan2(800.0 - g_vars->scene27_bats[i]->currX, 520.0 - g_vars->scene27_bats[i]->currY);
+			g_vars->scene27_bats[i]->power += 1.0;
+		}
+    }
 }
 
 void sceneHandler27_animateBats() {
 	warning("STUB: sceneHandler27_animateBats()");
 }
 
-
-
 int sceneHandler27(ExCommand *cmd) {
 	if (cmd->_messageKind != 17)
 		return 0;


Commit: db02b5726299224cf30bb1a87018fd42862514b8
    https://github.com/scummvm/scummvm/commit/db02b5726299224cf30bb1a87018fd42862514b8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T12:22:24-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_startBat()

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



diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index d143577..d648706 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -257,8 +257,28 @@ void sceneHandler27_clickBat(ExCommand *cmd) {
 	}
 }
 
+void sceneHandler27_maidSwab() {
+	warning("STUB: sceneHandler27_maidSwab()");
+}
+
 void sceneHandler27_startBat(StaticANIObject *bat) {
-	warning("STUB: sceneHandler27_startBat()");
+	Bat *newbat = new Bat;
+
+	newbat->power = g_vars->scene27_launchPhase * 2.5 + 8.0;
+	newbat->field_10 = 0;
+	newbat->ani = bat;
+	newbat->powerCos = newbat->power * cos(0.0);
+	newbat->powerSin = sin(0.0) * newbat->power;
+	newbat->currX = newbat->powerCos + (double)g_fp->_aniMan->_ox + 42.0;
+	newbat->currY = newbat->powerSin + (double)g_fp->_aniMan->_oy + 58.0;
+
+	bat->_statics = (Statics *)bat->_staticsList[0];
+	bat->setOXY((int)newbat->currX, (int)newbat->currY);
+	bat->_flags |= 4;
+
+	g_vars->scene27_bats.push_back(newbat);
+
+	sceneHandler27_maidSwab();
 }
 
 void sceneHandler27_startAiming() {


Commit: 140f110377de81ce25812bd734cfca4f9c1e0de8
    https://github.com/scummvm/scummvm/commit/140f110377de81ce25812bd734cfca4f9c1e0de8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T12:50:51-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_animateBats()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 889de5a..1525991 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1106,6 +1106,7 @@ namespace Fullpipe {
 #define ST_DRV_VENT 1996
 #define ST_MID_BROOM 2022
 #define ST_MID_SPADE 3489
+#define ST_MID_SWAB 2017
 #define ST_MID_SWAB2 2019
 
 // Scene 28
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 393f0e5..d07e926 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -507,7 +507,7 @@ public:
 	int scene27_launchPhase;
 	BallChain scene27_balls;
 	Common::Array<Bat *> scene27_bats;
-	Common::List<Bat *> scene27_var07;
+	Common::Array<Bat *> scene27_var07;
 
 	bool scene28_fliesArePresent;
 	bool scene28_beardedDirection;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index d648706..3d51066 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -258,7 +258,8 @@ void sceneHandler27_clickBat(ExCommand *cmd) {
 }
 
 void sceneHandler27_maidSwab() {
-	warning("STUB: sceneHandler27_maidSwab()");
+	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab))
+		g_vars->scene27_maid->changeStatics2(ST_MID_SWAB);
 }
 
 void sceneHandler27_startBat(StaticANIObject *bat) {
@@ -268,7 +269,7 @@ void sceneHandler27_startBat(StaticANIObject *bat) {
 	newbat->field_10 = 0;
 	newbat->ani = bat;
 	newbat->powerCos = newbat->power * cos(0.0);
-	newbat->powerSin = sin(0.0) * newbat->power;
+	newbat->powerSin = newbat->power * sin(0.0);
 	newbat->currX = newbat->powerCos + (double)g_fp->_aniMan->_ox + 42.0;
 	newbat->currY = newbat->powerSin + (double)g_fp->_aniMan->_oy + 58.0;
 
@@ -331,8 +332,94 @@ void sceneHandler27_sub07() {
     }
 }
 
+bool sceneHandler27_batFallLogic(int bat) {
+	warning("STUB: sceneHandler27_batFallLogic()");
+
+	return false;
+}
+
+bool sceneHandler27_batCalcDistance(int bat1, int bat2) {
+	warning("STUB: sceneHandler27_batCalcDistance()");
+
+	return false;
+}
+
+void sceneHandler27_knockBats(int bat1, int bat2) {
+	warning("STUB: sceneHandler27_knockBats()");
+}
+
+void sceneHandler27_batSetColors(int bat) {
+	warning("STUB: sceneHandler27_batSetColors()");
+}
+
+void sceneHandler27_calcWinArcade() {
+	warning("STUB: sceneHandler27_calcWinArcade()");
+}
+
+void sceneHandler27_sub02() {
+	warning("STUB: sceneHandler27_sub02()");
+}
+
 void sceneHandler27_animateBats() {
-	warning("STUB: sceneHandler27_animateBats()");
+	int oldCount = g_vars->scene27_var13;
+
+	g_vars->scene27_var12 = 0;
+	g_vars->scene27_var13 = 0;
+
+	for (uint i = 0; i < g_vars->scene27_bats.size(); i++) {
+		Bat *bat = g_vars->scene27_bats[i];
+
+		bat->currX = cos(bat->field_10) * bat->power + bat->currX;
+		bat->currY = sin(bat->field_10) * bat->power + bat->currY;
+
+		bat->ani->setOXY((int)bat->currX, (int)bat->currY);
+		bat->ani->_priority = (int)(600.0 - bat->currY);
+
+		double powerDelta;
+
+		if (cos(bat->field_10) >= 0.0 || bat->currX >= 362.0)
+			powerDelta = bat->power * 0.035;
+		else
+			powerDelta = bat->power * 0.4;
+
+		bat->power -= powerDelta;
+		bat->powerCos = cos(bat->field_10) * bat->power;
+		bat->powerSin = sin(bat->field_10) * bat->power;
+
+		if (bat->power >= 0.5)
+			g_vars->scene27_var13++;
+		else
+			bat->power = 0;
+
+		sceneHandler27_batSetColors(i);
+
+		if (!sceneHandler27_batFallLogic(i) && !g_vars->scene27_var10) {
+			for (uint j = 0; j < g_vars->scene27_bats.size(); j++) {
+				if (i != j && sceneHandler27_batCalcDistance(i, j))
+					sceneHandler27_knockBats(i, j);
+			}
+		}
+	}
+
+	for (uint i = 0; i < g_vars->scene27_var07.size(); i++) {
+		Bat *bat = g_vars->scene27_var07[i];
+
+		if (bat->currY >= 700.0) {
+			g_vars->scene27_var12++;
+		} else {
+			bat->currX = bat->powerCos + bat->currX;
+			bat->currY = bat->powerSin + bat->currY;
+			bat->ani->setOXY((int)bat->currX, (int)bat->currY);
+			bat->powerSin = bat->powerSin + 1.0;
+		}
+	}
+	if (oldCount != g_vars->scene27_var13 && !g_vars->scene27_var13)
+		sceneHandler27_calcWinArcade();
+
+	if (g_vars->scene27_var10) {
+		if (g_vars->scene27_var12 == 5)
+			sceneHandler27_sub02();
+	}
 }
 
 int sceneHandler27(ExCommand *cmd) {


Commit: a67b7f487c47fa833a5fa273d96f531708557edf
    https://github.com/scummvm/scummvm/commit/a67b7f487c47fa833a5fa273d96f531708557edf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T12:58:08-08:00

Commit Message:
FULLPIPE: Implement sceneHandler27_batCalcDistance()

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



diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 3d51066..e8c9db0 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -339,9 +339,13 @@ bool sceneHandler27_batFallLogic(int bat) {
 }
 
 bool sceneHandler27_batCalcDistance(int bat1, int bat2) {
-	warning("STUB: sceneHandler27_batCalcDistance()");
+	double at = atan2(g_vars->scene27_bats[bat1]->currX - g_vars->scene27_bats[bat2]->currX, g_vars->scene27_bats[bat1]->currY - g_vars->scene27_bats[bat2]->currY);
+	double dy = g_vars->scene27_bats[bat1]->currY - g_vars->scene27_bats[bat2]->currY;
+	double dx = g_vars->scene27_bats[bat1]->currX - g_vars->scene27_bats[bat2]->currX;
+	double ay = cos(at);
+	double ax = sin(at);
 
-	return false;
+	return sqrt(ax * ax * 0.25 + ay * ay) * 54.0 > sqrt(dx * dx + dy * dy);
 }
 
 void sceneHandler27_knockBats(int bat1, int bat2) {






More information about the Scummvm-git-logs mailing list