aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
authorEugene Sandulenko2013-12-28 00:09:52 +0200
committerEugene Sandulenko2013-12-28 00:09:52 +0200
commit98598d2ec3d17e866ced96f52007a93ccd0e7bd9 (patch)
treeeaf6812915af4d07ac60261a0aa76bf2ce0a011a /engines/fullpipe
parentb03e329bc70dca1871e597b9545d6f1a64d11e2f (diff)
downloadscummvm-rg350-98598d2ec3d17e866ced96f52007a93ccd0e7bd9.tar.gz
scummvm-rg350-98598d2ec3d17e866ced96f52007a93ccd0e7bd9.tar.bz2
scummvm-rg350-98598d2ec3d17e866ced96f52007a93ccd0e7bd9.zip
FULLPIPE: Implement sceneHandler11_sub10()
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h3
-rw-r--r--engines/fullpipe/scenes/scene11.cpp113
2 files changed, 74 insertions, 42 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index d3ff241b03..15f73e45eb 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -503,6 +503,7 @@ namespace Fullpipe {
#define MSG_SC11_SITSWINGER 5198
#define MV_KCH_MOVE2 1099
#define MV_KCH_START 1121
+#define MV_MAN11_JUMPOVER 1131
#define MV_MAN11_SWING_0 1109
#define MV_MAN11_SWING_1 1111
#define MV_MAN11_SWING_2 1112
@@ -511,11 +512,13 @@ namespace Fullpipe {
#define QU_SC11_PUTBOOT1 2709
#define QU_SC11_PUTBOOT2 2710
#define QU_SC11_RESTARTMAN 1134
+#define SND_11_022 3706
#define ST_BTS11_2 2707
#define ST_BTS11_ONE 2706
#define ST_KCH_0 1096
#define ST_KCH_EMPTY 1132
#define ST_KCH_STATIC 1122
+#define ST_MAN_1PIX 518
#define ST_MAN11_EMPTY 1110
#define ST_SWR_SIT 1147
#define ST_SWR_SITBALD 1153
diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp
index 34693611e8..4336432357 100644
--- a/engines/fullpipe/scenes/scene11.cpp
+++ b/engines/fullpipe/scenes/scene11.cpp
@@ -256,36 +256,6 @@ void sceneHandler11_sub12() {
warning("STUB: sceneHandler11_sub12()");
}
-void sceneHandler11_sub10(double angle) {
- warning("STUB: sceneHandler11_sub10()");
-}
-
-void sceneHandler11_sub11(double angle) {
- warning("STUB: sceneHandler11_sub11()");
-}
-
-void sceneHandler11_swingLogic() {
- if (g_vars->scene11_dudeOnSwing->_movement) {
- int ph = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex;
- if (ph > 53 && ph < 90) {
- if (ph < 70 && g_vars->scene11_var10 >= 22.0) {
- sceneHandler11_sub10((double)ph * 0.01428571428571429); // = 1 / 70
- } else if (ph <= 80 && g_vars->scene11_var10 >= 22.0) {
- sceneHandler11_sub08();
- } else {
- sceneHandler11_sub11((double)ph * g_vars->scene11_var10 * 0.0006493506493506494); // = 1/1540
- }
-
- g_vars->scene11_var02 = 0;
- g_vars->scene11_hint->_flags &= 0xFFFB;
- return;
- }
-
- if (ph > 38 && ph < 53 && fabs(g_vars->scene11_var10) <= 5.0)
- sceneHandler11_sub12();
- }
-}
-
void sceneHandler11_swing0() {
g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY);
g_vars->scene11_dudeOnSwing->_movement = 0;
@@ -322,18 +292,6 @@ void sceneHandler11_swing2() {
g_vars->scene11_var09 = fabs(g_vars->scene11_var08) * 0.075 + 0.12;
}
-void sceneHandler11_sub05() {
- warning("STUB: sceneHandler11_sub05()");
-}
-
-void sceneHandler11_sub06() {
- warning("STUB: sceneHandler11_sub06()");
-}
-
-void sceneHandler11_sub07() {
- warning("STUB: sceneHandler11_sub07()");
-}
-
void sceneHandler11_sub09() {
if (g_vars->scene11_var17)
sceneHandler11_swing0();
@@ -349,6 +307,77 @@ void sceneHandler11_sub09() {
g_vars->scene11_var12 = 1.9881250;
}
+void sceneHandler11_sub10(double angle) {
+ MGMInfo mgminfo;
+
+ sceneHandler11_sub09();
+
+ g_fp->_aniMan->show1(690 - (int)(sin(g_vars->scene11_var08) * -267.0), 215 - (int)(cos(g_vars->scene11_var08) * -267.0),
+ MV_MAN11_JUMPOVER, 0);
+ g_fp->_aniMan->_priority = 0;
+
+ mgminfo.staticsId2 = ST_MAN_1PIX;
+ mgminfo.ani = g_fp->_aniMan;
+ mgminfo.x1 = 1163;
+ mgminfo.y1 = 837 - (int)(angle * 153.0);
+ mgminfo.field_1C = 0;
+ mgminfo.field_10 = 1;
+ mgminfo.flags = 78;
+ mgminfo.movementId = MV_MAN11_JUMPOVER;
+
+ MessageQueue *mq = g_vars->scene11_var01.genMovement(&mgminfo);
+
+ if (mq) {
+ g_vars->scene11_var07 = SND_11_022;
+
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC11_RESTARTMAN, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags = 2;
+
+ mq->addExCommandToEnd(ex);
+
+ if (!mq->chain(g_fp->_aniMan) )
+ delete mq;
+ }
+}
+
+void sceneHandler11_sub11(double angle) {
+ warning("STUB: sceneHandler11_sub11()");
+}
+
+void sceneHandler11_swingLogic() {
+ if (g_vars->scene11_dudeOnSwing->_movement) {
+ int ph = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex;
+ if (ph > 53 && ph < 90) {
+ if (ph < 70 && g_vars->scene11_var10 >= 22.0) {
+ sceneHandler11_sub10((double)ph * 0.01428571428571429); // = 1 / 70
+ } else if (ph <= 80 && g_vars->scene11_var10 >= 22.0) {
+ sceneHandler11_sub08();
+ } else {
+ sceneHandler11_sub11((double)ph * g_vars->scene11_var10 * 0.0006493506493506494); // = 1/1540
+ }
+
+ g_vars->scene11_var02 = 0;
+ g_vars->scene11_hint->_flags &= 0xFFFB;
+ return;
+ }
+
+ if (ph > 38 && ph < 53 && fabs(g_vars->scene11_var10) <= 5.0)
+ sceneHandler11_sub12();
+ }
+}
+
+void sceneHandler11_sub05() {
+ warning("STUB: sceneHandler11_sub05()");
+}
+
+void sceneHandler11_sub06() {
+ warning("STUB: sceneHandler11_sub06()");
+}
+
+void sceneHandler11_sub07() {
+ warning("STUB: sceneHandler11_sub07()");
+}
+
void sceneHandler11_winArcade() {
if (g_vars->scene11_var02) {
g_vars->scene11_var02 = 0;