diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/fullpipe/scenes/scene14.cpp | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp index c3e0269f92..00f5647aba 100644 --- a/engines/fullpipe/scenes/scene14.cpp +++ b/engines/fullpipe/scenes/scene14.cpp @@ -436,9 +436,51 @@ void sceneHandler14_sub03() { } bool sceneHandler14_sub04(ExCommand *cmd) { - warning("STUB: sceneHandler14_sub04()"); + if (!getCurrSceneSc2MotionController()->_isEnabled) + return 0; + + if (!g_vars->scene14_var13) { + if (!cmd->_keyCode) { + if (g_vars->scene14_pink) { + if (g_vars->scene14_pink->_flags & 4) { + if (cmd->_sceneClickX < g_vars->scene14_pink->_ox + 40) { + handleObjectInteraction(g_fp->_aniMan, g_vars->scene14_pink, 0); + cmd->_messageKind = 0; + return true; + } + } + } + } + return false; + } + + if (getCurrSceneSc2MotionController()->_objtype != kObjTypeMctlCompound) + return false; + + if (!getCurrSceneSc2MotionController()->_motionControllers[0]->_movGraphReactObj->pointInRegion(cmd->_sceneClickX, cmd->_sceneClickY)) + return false; + + if (cmd->_sceneClickX > 1237) + return false; - return false; + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 1237, 451, 1, 0); + + if (!mq) + return false; + + ExCommand *ex = new ExCommand(0, 17, MSG_SC14_STARTARCADE, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags |= 3; + mq->addExCommandToEnd(ex); + mq->setFlags(mq->getFlags() | 1); + + postExCommand(g_fp->_aniMan->_id, 2, 1237, 451, 0, -1); + + cmd->_messageKind = 0; + + getCurrSceneSc2MotionController()->clearEnabled(); + getGameLoaderInteractionController()->disableFlag24(); + return true; } void sceneHandler14_sub08() { |