diff options
author | Eugene Sandulenko | 2013-12-18 18:38:08 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2013-12-18 18:38:08 +0200 |
commit | db7b6b3352817990a7a25a6e253ea165074d47ec (patch) | |
tree | 0a10cc4ddc837b09897842a02884052f9dc1199e /engines/fullpipe/scenes | |
parent | 29773ef1c055ce898c89abcc0415b23d8e10e849 (diff) | |
download | scummvm-rg350-db7b6b3352817990a7a25a6e253ea165074d47ec.tar.gz scummvm-rg350-db7b6b3352817990a7a25a6e253ea165074d47ec.tar.bz2 scummvm-rg350-db7b6b3352817990a7a25a6e253ea165074d47ec.zip |
FULLPIPE: Implement sceneHandler06_mumsyBallTake()
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene06.cpp | 101 |
2 files changed, 95 insertions, 8 deletions
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 8415aee6fd..28b2d77d5b 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -182,7 +182,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_bigBallCounter = 0; g_vars->scene04_bigBallFromLeft = true; - if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_Gone)) + if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)) g_vars->scene04_mamasha->hide(); g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1); diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 7b765373b2..5a63b6c230 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -73,7 +73,6 @@ void sceneHandler06_setExits(Scene *sc) { } void sceneHandler06_winArcade() { - warning("STUB: sceneHandler06_winArcade()"); } void sceneHandler06_enableDrops() { @@ -93,8 +92,96 @@ void sceneHandler06_enableDrops() { sceneHandler06_setExits(g_fullpipe->_currentScene); } -void sceneHandler06_sub01() { - warning("STUB: sceneHandler06_sub01()"); +void sceneHandler06_mumsyBallTake() { + int momAni = 0; + + switch (g_vars->scene06_var13) { + case 1: + momAni = MV_MOM_TAKE1; + break; + case 2: + momAni = MV_MOM_TAKE2; + break; + case 3: + momAni = MV_MOM_TAKE3; + break; + case 4: + momAni = MV_MOM_TAKE4; + break; + case 5: + momAni = MV_MOM_TAKE5; + break; + } + + MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + + ExCommand *ex = new ExCommand(ANI_MAMASHA, 2, 50, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags = 2u; + mq->addExCommandToEnd(ex); + + if (g_vars->scene06_var13 >= 5) { + g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); + + if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) + g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); + + ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + if (g_vars->scene06_mumsyPos + 3 >= 0) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_STARTBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2u; + mq->addExCommandToEnd(ex); + + for (int i = 0; i < g_vars->scene06_mumsyPos + 3; i++) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_CYCLEBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_STOPBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(0, 18, QU_MOM_TOLIFT, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + mq->addExCommandToEnd(ex); + } else { + if (momAni) { + ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + if (g_vars->scene06_mumsyPos < 0) { + for (int i = 0; i > g_vars->scene06_mumsyPos; i--) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_JUMPFW, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + } else if (g_vars->scene06_mumsyPos > 0) { + for (int i = 0; i < g_vars->scene06_mumsyPos; i++) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_JUMPBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + } + + ex = new ExCommand(0, 18, QU_MOM_SITDOWN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3u; + mq->addExCommandToEnd(ex); + } + + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + + g_vars->scene06_var13 = 0; + g_vars->scene06_var07 = 0; + + g_fullpipe->_aniMan2 = 0; } void sceneHandler06_spinHandle() { @@ -147,7 +234,7 @@ int sceneHandler06_updateScreenCallback() { int res; res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_var07); - if (!res ) + if (!res) g_fullpipe->_updateScreenCallback = 0; return res; @@ -263,7 +350,7 @@ void sceneHandler06_sub03() { } void sceneHandler06_sub10() { - if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5 ) + if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5) g_vars->scene06_ballDrop->hide(); else chainQueue(QU_SC6_DROPS3, 0); @@ -398,7 +485,7 @@ int sceneHandler06(ExCommand *ex) { if (g_vars->scene06_var13 < 5 || !g_vars->scene06_var07) return 0; - sceneHandler06_sub01(); + sceneHandler06_mumsyBallTake(); break; case MSG_SC6_JUMPFW: @@ -575,7 +662,7 @@ int sceneHandler06(ExCommand *ex) { && !g_vars->scene06_ballDrop->_movement && !g_vars->scene06_mumsy->_movement && !g_vars->scene06_var16) - sceneHandler06_sub01(); + sceneHandler06_mumsyBallTake(); g_fullpipe->_behaviorManager->updateBehaviors(); g_fullpipe->startSceneTrack(); |