From 5ccec11d5263ef0596126ff6168e0263e6c8816e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 16 Jan 2014 23:37:11 +0200 Subject: FULLPIPE: Implement sceneHandler35_startFlow() --- engines/fullpipe/constants.h | 3 +++ engines/fullpipe/scenes/scene35.cpp | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b82813bebb..b3e06bb318 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -1266,6 +1266,9 @@ namespace Fullpipe { #define MSG_SC35_STARTFLOW 2523 #define MSG_SC35_STOPFLOW 4864 #define MSG_SC35_TRYFLY 4985 +#define QU_PDV_SML_BLINK 2553 +#define QU_PDV_SML_TRY 2554 +#define QU_SC35_EATHOZE 2540 #define QU_SC35_ENTERLIFT 2815 #define QU_SC35_EXITLIFT 2816 #define SND_35_011 4509 diff --git a/engines/fullpipe/scenes/scene35.cpp b/engines/fullpipe/scenes/scene35.cpp index b6453fa84a..4cf7fb45d1 100644 --- a/engines/fullpipe/scenes/scene35.cpp +++ b/engines/fullpipe/scenes/scene35.cpp @@ -86,7 +86,41 @@ void sceneHandler35_shrink() { } void sceneHandler35_startFlow() { - warning("STUB: sceneHandler35_startFlow()"); + if (g_fp->getObjectState(sO_Valve_35) == g_fp->getObjectEnumState(sO_Valve_35, sO_TurnedOn)) { + if ((g_vars->scene35_hose->_flags & 4) && g_vars->scene35_hose->_statics->_staticsId == ST_HZE_NORM) { + g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene35_bellyInflater, ST_PDV_SMALL, QU_PDV_SML_BLINK, 0); + g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene35_bellyInflater, ST_PDV_SMALL, QU_PDV_SML_TRY, 0); + + g_vars->scene35_bellyInflater->changeStatics2(ST_PDV_SMALL); + g_vars->scene35_bellyInflater->_flags &= 0xFEFF; + + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC35_EATHOZE), 0, 0); + + mq->setFlags(mq->getFlags() | 1); + + ExCommand *cmd = new ExCommand(g_vars->scene35_bellyInflater->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0); + + cmd->_excFlags |= 3; + cmd->_field_14 = 256; + cmd->_messageNum = 0; + + mq->addExCommandToEnd(cmd); + + if (!mq->chain(g_vars->scene35_bellyInflater)) + delete mq; + + g_vars->scene35_bellyInflater->_flags |= 1; + + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing, 1); + + g_fp->playSound(SND_35_012, 1); + } else { + if (!g_vars->scene35_var05) + g_vars->scene35_var05 = 98; + + g_fp->playSound(SND_35_011, 1); + } + } } void sceneHandler35_genFlies() { -- cgit v1.2.3