From ad33e9c026e77ab6c5fe330a1b53ccc039fc788a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 16 Jan 2014 23:21:02 +0200 Subject: FULLPIPE: Implement sceneHandler35() --- engines/fullpipe/scenes/scene35.cpp | 127 ++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) (limited to 'engines/fullpipe/scenes/scene35.cpp') diff --git a/engines/fullpipe/scenes/scene35.cpp b/engines/fullpipe/scenes/scene35.cpp index 5698cbcc49..5677125106 100644 --- a/engines/fullpipe/scenes/scene35.cpp +++ b/engines/fullpipe/scenes/scene35.cpp @@ -75,4 +75,131 @@ void scene35_initScene(Scene *sc) { g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_35")); } +void sceneHandler35_stopFlow() { + warning("STUB: sceneHandler35_stopFlow()"); +} + +void sceneHandler35_shrink() { + warning("STUB: sceneHandler35_shrink()"); +} + +void sceneHandler35_startFlow() { + warning("STUB: sceneHandler35_startFlow()"); +} + +void sceneHandler35_genFlies() { + warning("STUB: sceneHandler35_genFlies()"); +} + +int sceneHandler35(ExCommand *cmd) { + if (cmd->_messageKind != 17) + return 0; + + switch (cmd->_messageNum) { + case MSG_LIFT_CLOSEDOOR: + g_fp->lift_closedoorSeq(); + break; + + case MSG_LIFT_EXITLIFT: + g_fp->lift_exitSeq(cmd); + break; + + case MSG_LIFT_STARTEXITQUEUE: + g_fp->lift_startExitQueue(); + break; + + case MSG_LIFT_CLICKBUTTON: + g_fp->lift_animation3(); + break; + + case MSG_SC35_STOPFLOW: + sceneHandler35_stopFlow(); + break; + + case MSG_SC35_CHECKPIPESOUND: + if (g_fp->getObjectState(sO_Valve_35) == g_fp->getObjectEnumState(sO_Valve_35, sO_TurnedOn)) { + g_fp->stopAllSoundInstances(SND_35_011); + g_fp->playSound(SND_35_012, 1); + + g_vars->scene35_var05 = 0; + break; + } + break; + + case MSG_SC35_SHRINK: + sceneHandler35_shrink(); + break; + + case MSG_LIFT_GO: + g_fp->lift_goAnimation(); + break; + + case MSG_SC35_STARTFLOW: + case MSG_SC35_PLUGHOSE: + sceneHandler35_startFlow(); + break; + + case 64: + g_fp->lift_sub05(cmd); + break; + + case 29: + { + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y); + + if (ani) + if (ani->_id == ANI_LIFTBUTTON) { + g_fp->lift_sub1(ani); + cmd->_messageKind = 0; + break; + } + + if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) { + int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY); + PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0); + + if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) { + if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) { + g_fp->processArcade(cmd); + break; + } + } + } + break; + } + + case 33: + if (g_fp->_aniMan2) { + int x = g_fp->_aniMan2->_ox; + + if (x < g_fp->_sceneRect.left + g_vars->scene35_var01) + g_fp->_currentScene->_x = x - g_vars->scene35_var03 - g_fp->_sceneRect.left; + + if (x > g_fp->_sceneRect.right - g_vars->scene35_var01) + g_fp->_currentScene->_x = x + g_vars->scene35_var03 - g_fp->_sceneRect.right; + } + + if (g_vars->scene35_var05 > 0) { + --g_vars->scene35_var05; + + if (!g_vars->scene35_var05) + sceneHandler35_stopFlow(); + } + + g_vars->scene35_var06++; + + if (g_vars->scene35_var06 >= 160) + sceneHandler35_genFlies(); + + g_fp->_floaters->update(); + + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); + + break; + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3