[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