diff options
Diffstat (limited to 'engines/fullpipe/scenes/scene11.cpp')
-rw-r--r-- | engines/fullpipe/scenes/scene11.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
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) |