diff options
Diffstat (limited to 'engines/fullpipe/scenes/scene04.cpp')
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 731 |
1 files changed, 731 insertions, 0 deletions
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp new file mode 100644 index 0000000000..f2fbfd3ef4 --- /dev/null +++ b/engines/fullpipe/scenes/scene04.cpp @@ -0,0 +1,731 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/utils.h" +#include "fullpipe/gfx.h" +#include "fullpipe/scenes.h" +#include "fullpipe/messages.h" +#include "fullpipe/statics.h" +#include "fullpipe/scene.h" +#include "fullpipe/interaction.h" +#include "fullpipe/gameloader.h" +#include "fullpipe/behavior.h" + +namespace Fullpipe { + +static const int scene04_speakerPhases[] = { + 0, 1, 2, 3, -1, -1, + 0, 2, 3, -1, -1, -1, + 0, 2, -1, -1, -1, -1 +}; + +void scene04_speakerCallback(int *phase) { + if (g_vars->scene04_soundPlaying) { + if (g_vars->scene04_speakerPhase >= 0) { + *phase = scene04_speakerPhases[g_vars->scene04_speakerPhase + 6 * g_vars->scene04_speakerVariant]; + + g_vars->scene04_speakerPhase++; + + if (scene04_speakerPhases[g_vars->scene04_speakerPhase + 6 * g_vars->scene04_speakerVariant] < 0) { + g_vars->scene04_speakerPhase = 0; + g_vars->scene04_speakerVariant = g_fullpipe->_rnd->getRandomNumber(2); + } + } else { + ++g_vars->scene04_speakerPhase; + } + } +} + +void scene04_initScene(Scene *sc) { + g_vars->scene04_var01 = 0; + g_vars->scene04_bottle = sc->getPictureObjectById(PIC_SC4_BOTTLE, 0); + g_vars->scene04_hand = sc->getStaticANIObject1ById(ANI_HAND, -1); + g_vars->scene04_plank = sc->getStaticANIObject1ById(ANI_PLANK, -1); + g_vars->scene04_clock = sc->getStaticANIObject1ById(ANI_CLOCK, -1); + g_vars->scene04_spring = sc->getStaticANIObject1ById(ANI_SPRING, -1); + g_vars->scene04_mamasha = sc->getStaticANIObject1ById(ANI_MAMASHA_4, -1); + g_vars->scene04_boot = sc->getStaticANIObject1ById(ANI_SC4_BOOT, -1); + g_vars->scene04_ladder = 0; + + StaticANIObject *koz = sc->getStaticANIObject1ById(ANI_KOZAWKA, -1); + + if (koz) { + Movement *kozmov = koz->getMovementById(MV_KZW_JUMP); + if (kozmov) { + uint kozsize = kozmov->_currMovement ? kozmov->_currMovement->_dynamicPhases.size() : kozmov->_dynamicPhases.size(); + + for (uint i = 0; i < kozsize; i++) { + kozmov->setDynamicPhaseIndex(i); + + if (kozmov->_framePosOffsets) { + g_vars->scene04_jumpingKozyawki[i] = *kozmov->_framePosOffsets[kozmov->_currDynamicPhaseIndex]; + } else { + kozmov->_somePoint.x = 0; + kozmov->_somePoint.y = 0; + g_vars->scene04_jumpingKozyawki[i] = kozmov->_somePoint; + } + } + } + + kozmov = koz->getMovementById(MV_KZW_JUMPROTATE); + if (kozmov) { + uint kozsize = kozmov->_currMovement ? kozmov->_currMovement->_dynamicPhases.size() : kozmov->_dynamicPhases.size(); + + for (uint i = 0; i < kozsize; i++) { + kozmov->setDynamicPhaseIndex(i); + + if (kozmov->_framePosOffsets) { + g_vars->scene04_jumpRotateKozyawki[i] = *kozmov->_framePosOffsets[kozmov->_currDynamicPhaseIndex]; + } else { + kozmov->_somePoint.x = 0; + kozmov->_somePoint.y = 0; + g_vars->scene04_jumpRotateKozyawki[i] = kozmov->_somePoint; + } + } + } + } + + Interaction *plank = getGameLoaderInteractionController()->getInteractionByObjectIds(ANI_PLANK, 0, 0); + if (plank) + plank->_flags |= 8; + + if (g_fullpipe->getObjectState(sO_Jar_4) == g_fullpipe->getObjectEnumState(sO_Jar_4, sO_UpsideDown)) { + g_vars->scene04_bottleObjList.clear(); + g_vars->scene04_kozyawkiObjList.clear(); + + sc->getPictureObjectById(PIC_SC4_BOTTLE, 0)->_flags &= 0xfffb; + sc->getPictureObjectById(PIC_SC4_MASK, 0)->_flags &= 0xfffb; + sc->getStaticANIObject1ById(ANI_SPRING, 0)->_flags &= 0xfffb; + + g_vars->scene04_var18 = 0; + g_vars->scene04_var19 = 0; + } else { + StaticANIObject *spring = sc->getStaticANIObject1ById(ANI_SPRING, -1); + + if (spring) + spring->_callback2 = 0; + + g_vars->scene04_bottleObjList.clear(); + g_vars->scene04_bottleObjList.push_back(sc->getPictureObjectById(PIC_SC4_BOTTLE, 0)); + g_vars->scene04_bottleObjList.push_back(sc->getPictureObjectById(PIC_SC4_MASK, 0)); + + g_vars->scene04_kozyawkiObjList.clear(); + + if (koz) { + koz->loadMovementsPixelData(); + + koz->_statics = koz->getStaticsById(ST_KZW_EMPTY); + koz->setOXY(0, 0); + koz->hide(); + + g_vars->scene04_kozyawkiObjList.push_back(koz); + + for (int i = 0; i < 6; i++) { + StaticANIObject *koz1 = new StaticANIObject(koz); + + sc->addStaticANIObject(koz1, 1); + koz1->_statics = koz->getStaticsById(ST_KZW_EMPTY); + koz1->setOXY(0, 0); + koz1->hide(); + g_vars->scene04_kozyawkiObjList.push_back(koz1); + } + } + sc->getPictureObjectById(PIC_SC4_BOTTLE2, 0)->_flags &= 0xfffb; + + g_vars->scene04_var18 = 1; + g_vars->scene04_var19 = 1; + } + + g_vars->scene04_var02 = 0; + g_vars->scene04_soundPlaying = false; + g_vars->scene04_var04 = 0; + g_vars->scene04_walkingKozyawka = 0; + g_vars->scene04_var06 = 2; + g_vars->scene04_dynamicPhaseIndex = 0; + + g_vars->scene04_kozyawkiAni.clear(); + + g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); + + g_vars->scene04_var07 = 0; + g_vars->scene04_var08 = 0; + g_vars->scene04_coinPut = 0; + g_vars->scene04_var09 = 0; + g_vars->scene04_var10 = 0; + g_vars->scene04_var11 = 0; + g_vars->scene04_var12 = 0; + g_vars->scene04_var13 = 1; + g_vars->scene04_var14 = 0; + g_vars->scene04_var15 = 1; + + if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_Gone)) + g_vars->scene04_mamasha->hide(); + + g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1); + g_vars->scene04_speaker->_callback2 = scene04_speakerCallback; + g_vars->scene04_speaker->startAnim(MV_SPK4_PLAY, 0, -1); + + g_vars->scene04_speakerVariant = 0; + g_vars->scene04_speakerPhase = 0; + + g_fullpipe->initArcadeKeys("SC_4"); +} + +bool sceneHandler04_friesAreWalking() { + warning("STUB: sceneHandler04_friesAreWalking()"); + + return false; +} + +int scene04_updateCursor() { + g_fullpipe->updateCursorCommon(); + + if (g_fullpipe->_objectIdAtCursor == PIC_SC4_LRTRUBA) { + if (!g_vars->scene04_var19) { + g_fullpipe->_cursorId = PIC_CSR_DEFAULT; + + return g_fullpipe->_cursorId; + } + } else if (g_fullpipe->_objectIdAtCursor == ANI_PLANK || g_fullpipe->_objectIdAtCursor == PIC_SC4_PLANK) { + if (g_fullpipe->_objectIdAtCursor == ANI_PLANK && g_fullpipe->_cursorId != PIC_CSR_ITN) + return g_fullpipe->_cursorId; + + if (g_fullpipe->_objectIdAtCursor == ANI_PLANK || (g_fullpipe->_objectIdAtCursor == PIC_SC4_PLANK && g_fullpipe->_cursorId == PIC_CSR_DEFAULT)) { + if (sceneHandler04_friesAreWalking()) { + g_fullpipe->_cursorId = PIC_CSR_ARCADE1; + return g_fullpipe->_cursorId; + } + if (g_vars->scene04_soundPlaying) { + g_fullpipe->_cursorId = PIC_CSR_DEFAULT; + return g_fullpipe->_cursorId; + } + } + } + + if (g_fullpipe->_objectIdAtCursor == PIC_CSR_ITN && g_fullpipe->_objectIdAtCursor == PIC_SC4_DOWNTRUBA) + g_fullpipe->_cursorId = PIC_CSR_GOD; + + return g_fullpipe->_cursorId; +} + +void sceneHandlers_sub01(ExCommand *ex) { + warning("sceneHandlers_sub01()"); +} + +void sceneHandler04_checkBigBallClick() { + StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); + + if (ball) + for (uint i = 0; i < ball->_movements.size(); i++) + ((Movement *)ball->_movements[i])->_counterMax = 73; + + g_vars->scene04_var13 = 1; +} + +void sceneHandler04_clickBottle() { + if (!g_vars->scene04_var02) + g_vars->scene04_var20 += 5; +} + +void sceneHandler04_clickButton() { + StaticANIObject *but = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BUTTON, -1); + + if (but) { + if (!g_vars->scene04_clock->_movement || + (g_vars->scene04_clock->_movement->_id == MV_CLK_GO && g_vars->scene04_clock->_movement->_currDynamicPhaseIndex > 3 && + g_vars->scene04_clock->_movement->_currDynamicPhaseIndex < 105)) { + if (!g_vars->scene04_hand->_movement && !g_vars->scene04_var02) { + but->startAnim(MV_BTN_CLICK, 0, -1); + g_vars->scene04_hand->startAnim(MV_HND_POINT, 0, -1); + } + } + } +} + +void sceneHandler04_clickLadder() { + warning("sceneHandler04_clickLadder()"); +} + +void sceneHandler04_sub13() { + warning("sceneHandler04_sub13()"); +} + +void sceneHandler04_clickPlank() { + if (sceneHandler04_friesAreWalking()) + sceneHandler04_sub13(); + else if (g_vars->scene04_var01) + g_fullpipe->playSound(SND_4_033, 0); + else if (!g_vars->scene04_soundPlaying) + chainQueue(QU_PNK_CLICK, 0); +} + +void sceneHandler04_dropBottle() { + g_vars->scene04_var12 = 1; + g_vars->scene04_var26 = 10; + g_vars->scene04_var06 = 0; + + while (g_vars->scene04_kozyawkiAni.size()) { + StaticANIObject *koz = g_vars->scene04_kozyawkiAni.front(); + g_vars->scene04_kozyawkiAni.pop_front(); + + for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it) + if (*it == koz) { + g_vars->scene04_bottleObjList.erase(it); + break; + } + + koz->queueMessageQueue(0); + koz->hide(); + + g_vars->scene04_kozyawkiObjList.push_back(koz); + } + + g_vars->scene04_hand->changeStatics2(ST_HND_EMPTY); + + g_vars->scene04_hand->setOXY(429, 21); + g_vars->scene04_hand->_priority = 15; +} + +void sceneHandler04_gotoLadder(int par) { + warning("sceneHandler04_gotoLadder()"); +} + +void sceneHandler04_lowerPlank() { + g_vars->scene04_plank->startAnim(MV_PNK_WEIGHTRIGHT, 0, -1); +} + +void sceneHandler04_manFromBottle() { + warning("sceneHandler04_manFromBottle()"); +} + +void sceneHandler04_manToBottle() { + g_vars->scene04_bottleObjList.push_back(g_fullpipe->_aniMan); + g_vars->scene04_var20 = 5; + g_vars->scene04_var06 += 9; + g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + g_vars->scene04_var10 = 1; +} + +void sceneHandler04_raisePlank() { + g_vars->scene04_plank->startAnim(MV_PNK_WEIGHTLEFT, 0, -1); +} + +void sceneHandler04_shootKozyawka() { + warning("sceneHandler04_shootKozyawka()"); +} + +void sceneHandler04_showCoin() { + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1); + + if (ani) { + ani->show1(MV_BDG_OPEN, MV_MAN_GOU, MV_SC4_COIN_default, 0); + + ani->_priority = 40; + } +} + +void sceneHandler04_stopSound() { + warning("sceneHandler04_stopSound()"); +} + +void sceneHandler04_sub1(ExCommand *ex) { + g_fullpipe->_aniMan->changeStatics2(ST_MAN_SIT); + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0); + + if (ex) { + ExCommand *newex = new ExCommand(ex); + + mq->_exCommands.push_back(newex); + } + + mq->_flags |= 1; + mq->chain(0); + + g_vars->scene04_var10 = 0; + g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 1); +} + +void sceneHandler04_walkKozyawka() { + if (g_vars->scene04_kozyawkiObjList.size()) { + g_vars->scene04_walkingKozyawka = g_vars->scene04_kozyawkiObjList.front(); + g_vars->scene04_kozyawkiObjList.pop_front(); + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_KOZAW_WALK), 0, 1); + mq->replaceKeyCode(-1, g_vars->scene04_walkingKozyawka->_okeyCode); + mq->chain(0); + } +} + +void sceneHandler04_sub4() { + warning("sceneHandler04_sub4()"); +} + +void sceneHandler04_sub5() { + warning("sceneHandler04_sub5()"); +} + +void sceneHandler04_sub6() { + warning("sceneHandler04_sub6()"); +} + +void sceneHandler04_sub7() { + warning("sceneHandler04_sub7()"); +} + +void sceneHandler04_sub8(ExCommand *ex) { + warning("sceneHandler04_sub8()"); +} + +void sceneHandler04_sub9(StaticANIObject *ani) { + warning("sceneHandler04_sub9()"); +} + +void sceneHandler04_sub15() { + warning("sceneHandler04_sub15()"); +} + +void sceneHandler04_sub17() { + warning("sceneHandler04_sub17()"); +} + +void sceneHandler04_takeBottle() { + warning("sceneHandler04_takeBottle()"); +} + +void sceneHandler04_takeKozyawka() { + warning("sceneHandler04_takeKozyawka()"); +} + +void sceneHandler04_testPlank(ExCommand *ex) { + warning("sceneHandler04_testPlank()"); +} + +void sceneHandler04_bottleUpdateObjects(int off) { + warning("sceneHandler04_bottleUpdateObjects()"); +} + +void sceneHandler04_updateBottle() { + Common::Point point; + + int yoff; + + if (g_vars->scene04_hand->_movement) + yoff = g_vars->scene04_hand->_movement->_oy; + else + yoff = g_vars->scene04_hand->_oy; + + int newy = g_vars->scene04_hand->getSomeXY(point)->y + yoff + 140; + + sceneHandler04_bottleUpdateObjects(newy - g_vars->scene04_spring->_oy); + + g_vars->scene04_spring->setOXY(g_vars->scene04_spring->_ox, newy); +} + +void sceneHandler04_winArcade() { + warning("sceneHandler04_winArcade()"); +} + +int sceneHandler04(ExCommand *ex) { + if (ex->_messageKind != 17) + return 0; + + switch (ex->_messageNum) { + case MSG_UPDATEBOTTLE: + sceneHandler04_updateBottle(); + break; + + case MSG_CLICKBOTTLE: + sceneHandler04_clickBottle(); + break; + + case MSG_SHOOTKOZAW: + sceneHandler04_shootKozyawka(); + break; + + case MSG_SHAKEBOTTLE: + if (!g_vars->scene04_var02) + ++g_vars->scene04_var20; + break; + + case MSG_STARTHAND: + g_vars->scene04_var09 = 1; + g_vars->scene04_coinPut = 0; + + if (g_vars->scene04_var10) + sceneHandler04_sub1(0); + + sceneHandler04_sub15(); + sceneHandler04_stopSound(); + break; + + case MSG_TAKEKOZAW: + sceneHandler04_takeKozyawka(); + break; + + case MSG_CLICKBUTTON: + sceneHandler04_clickButton(); + break; + + case MSG_CLICKPLANK: + sceneHandler04_clickPlank(); + break; + + case MSG_RAISEPLANK: + sceneHandler04_raisePlank(); + break; + + case MSG_KOZAWRESTART: + if (g_vars->scene04_walkingKozyawka) { + g_vars->scene04_kozyawkiObjList.push_back(g_vars->scene04_walkingKozyawka); + g_vars->scene04_walkingKozyawka->hide(); + g_vars->scene04_walkingKozyawka = 0; + } + + if (g_vars->scene04_soundPlaying) + sceneHandler04_walkKozyawka(); + + break; + + case MSG_LOWERPLANK: + sceneHandler04_lowerPlank(); + break; + + case MSG_TESTPLANK: + sceneHandler04_testPlank(ex); + break; + + case 33: + { + g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; + g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; + + int res = 0; + + if (g_fullpipe->_aniMan2) { + if (g_fullpipe->_aniMan->_ox < g_fullpipe->_sceneRect.left + 200) { + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.left - 300; + g_fullpipe->_aniMan->_ox = g_vars->scene04_dudePosX; + } + if (g_fullpipe->_aniMan->_ox > g_fullpipe->_sceneRect.right - 200) { + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.right + 300; + } + + res = 1; + + if (g_vars->scene04_soundPlaying) { + if (g_fullpipe->_aniMan->_movement) { + if (g_fullpipe->_aniMan->_movement->_id == MV_MAN_TOLADDER) { + g_fullpipe->_aniMan2 = 0; + + if (g_fullpipe->_sceneRect.left > 380) + g_fullpipe->_currentScene->_x = 380 - g_fullpipe->_sceneRect.left; + } + } + } + } else { + if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id == MV_MAN_GOD) + g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + } + + sceneHandler04_sub4(); + + if (g_vars->scene04_var07 && !g_vars->scene04_var09) + sceneHandler04_sub5(); + + if (g_vars->scene04_var12) + sceneHandler04_sub6(); + + if (g_vars->scene04_var08) + sceneHandler04_clickLadder(); + + if (g_vars->scene04_var10 && g_vars->scene04_hand->_movement) + sceneHandler04_sub1(0); + + if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying) + sceneHandler04_sub7(); + + if (g_vars->scene04_var01) { + if (!g_vars->scene04_soundPlaying) { + g_fullpipe->startSceneTrack(); + + g_fullpipe->_behaviorManager->updateBehaviors(); + return res; + } + + g_vars->scene04_var14++; + + if (g_vars->scene04_var14 > 600) + sceneHandler04_sub17(); + } + + if (g_vars->scene04_soundPlaying) { + g_fullpipe->_behaviorManager->updateBehaviors(); + + return res; + } + + g_fullpipe->startSceneTrack(); + + g_fullpipe->_behaviorManager->updateBehaviors(); + + return res; + } + + case 29: + { + int picid = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); + + if (g_vars->scene04_var10) { + sceneHandler04_sub1(ex); + + break; + } + + if (picid == PIC_SC4_LADDER) { + if (!g_vars->scene04_var04) { + g_vars->scene04_sceneClickX = ex->_sceneClickX; + g_vars->scene04_sceneClickY = ex->_sceneClickY; + + sceneHandler04_clickLadder(); + + ex->_messageKind = 0; + + break; + } + + sceneHandler04_gotoLadder(0); + + break; + } + + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + + if ((ani && ani->_id == ANI_PLANK) || picid == PIC_SC4_PLANK) { + sceneHandler04_clickPlank(); + + ex->_messageKind = 0; + } else if (g_vars->scene04_var01) { + sceneHandler04_sub8(ex); + } else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) { + PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picid, 0); + + if (!pic || !canInteractAny(g_fullpipe->_aniMan, pic,ex->_keyCode)) { + if ((g_fullpipe->_sceneRect.right - ex->_sceneClickX < 47 && g_fullpipe->_sceneRect.right < g_fullpipe->_sceneWidth - 1) + || (ex->_sceneClickX - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0)) + sceneHandlers_sub01(ex); + } + } + } + + break; + + case MSG_SC4_HIDEBOOT: + g_vars->scene04_boot->_flags &= 0xfffb; + break; + + case MSG_CMN_WINARCADE: + sceneHandler04_winArcade(); + break; + + case MSG_SC4_HANDOVER: + g_vars->scene04_var09 = 0; + g_vars->scene04_var19 = 1; + break; + + case MSG_SC4_DROPBOTTLE: + sceneHandler04_dropBottle(); + break; + + case MSG_SC4_COINOUT: + g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); + g_vars->scene04_coinPut = 0; + sceneHandler04_stopSound(); + + if (g_vars->scene04_kozyawkiAni.size() && !g_vars->scene04_var02) { + g_vars->scene04_var09 = 1; + + if (g_vars->scene04_var10) + sceneHandler04_sub1(0); + + sceneHandler04_sub15(); + } + + break; + + case MSG_SC4_KOZAWFALL: + { + ExCommand *exnew; + + if (g_vars->scene04_var11) { + sceneHandler04_sub9(g_vars->scene04_var24); + + g_vars->scene04_var11 = 0; + + exnew = new ExCommand(0, 35, SND_4_010, 0, 0, 0, 1, 0, 0, 0); + } else { + exnew = new ExCommand(0, 35, SND_4_012, 0, 0, 0, 1, 0, 0, 0); + } + + exnew->_field_14 = 5; + exnew->_excFlags |= 2; + exnew->postMessage(); + break; + } + + case MSG_SC4_MANFROMBOTTLE: + sceneHandler04_manFromBottle(); + break; + + case MSG_SC4_CLICKLADDER: + sceneHandler04_clickLadder(); + break; + + case MSG_SC4_MANTOBOTTLE: + sceneHandler04_manToBottle(); + break; + + case MSG_SHOWCOIN: + sceneHandler04_showCoin(); + break; + + case MSG_TAKEBOTTLE: + sceneHandler04_takeBottle(); + break; + + case MSG_GOTOLADDER: + sceneHandler04_gotoLadder(0); + break; + + case MSG_SC4_COINPUT: + g_vars->scene04_coinPut = 1; + break; + } + + return 0; +} + +} // End of namespace Fullpipe |