diff options
-rw-r--r-- | engines/fullpipe/constants.h | 3 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene11.cpp | 113 |
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; |