diff options
-rw-r--r-- | engines/fullpipe/constants.h | 3 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene11.cpp | 27 |
2 files changed, 28 insertions, 2 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index a6dc51dfe5..45bddf0ce2 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -504,7 +504,10 @@ namespace Fullpipe { #define MV_MAN11_SWING_0 1109 #define PIC_SC11_HINT 5170 #define QU_SC11_MANFALL 3017 +#define QU_SC11_PUTBOOT1 2709 +#define QU_SC11_PUTBOOT2 2710 #define ST_BTS11_2 2707 +#define ST_BTS11_ONE 2706 #define ST_KCH_STATIC 1122 #define ST_MAN11_EMPTY 1110 #define ST_SWR_SIT 1147 diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp index 02f29e1a4f..d56cf581cf 100644 --- a/engines/fullpipe/scenes/scene11.cpp +++ b/engines/fullpipe/scenes/scene11.cpp @@ -212,8 +212,31 @@ void sceneHandler11_manToSwing() { g_fp->_updateScreenCallback = sceneHandler11_updateScreenCallback; } +void sceneHandler11_putABoot() { + if (g_vars->scene11_boots->_flags & 4) { + if (g_vars->scene11_boots->_statics->_staticsId == ST_BTS11_ONE) + chainObjQueue(0, QU_SC11_PUTBOOT2, 1); + } else { + chainObjQueue(0, QU_SC11_PUTBOOT1, 1); + } +} + void sceneHandler11_putBoot() { - warning("STUB: sceneHandler11_putBoot()"); + if (abs(353 - g_fp->_aniMan->_ox) > 1 || abs(498 - g_fp->_aniMan->_oy) > 1 + || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) { + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 353, 498, 1, ST_MAN_RIGHT); + + if (mq) { + ExCommand *ex = new ExCommand(0, 17, MSG_SC11_PUTBOOT, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + + mq->addExCommandToEnd(ex); + + postExCommand(g_fp->_aniMan->_id, 2, 353, 498, 0, -1); + } + } else { + sceneHandler11_putABoot(); + } } void sceneHandler11_showSwing() { @@ -416,7 +439,7 @@ int sceneHandler11(ExCommand *cmd) { x = g_vars->scene11_var21; } if (y > g_fp->_sceneRect.bottom - 300) { - g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300; + //g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300; // FIXME. Causes flicker x = g_vars->scene11_var21; } if (x >= 940) |