From c8c901137165a063a9dbc533c9c35592abb1eff6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 27 Nov 2013 23:38:22 -0500 Subject: FULLPIPE: Implement sceneHandler04_sub3() --- engines/fullpipe/scenes/scene04.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index dab2131e04..db5e327c14 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -328,7 +328,14 @@ void sceneHandler04_sub1(ExCommand *ex) { } void sceneHandler04_sub3() { - warning("sceneHandler04_sub3()"); + if (g_vars->scene04_kozyawkiObjList.size()) { + g_vars->scene04_var05 = 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_var05->_okeyCode); + mq->chain(0); + } } void sceneHandler04_sub4() { -- cgit v1.2.3 From 71fa9fe2184d9e1677661b1481f1fbb561d4e0c0 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 27 Nov 2013 23:41:50 -0500 Subject: FULLPIPE: Give some names in scene04 --- engines/fullpipe/scenes/scene04.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index db5e327c14..28a9b6fc00 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -143,7 +143,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_var02 = 0; g_vars->scene04_soundPlaying = 0; g_vars->scene04_var04 = 0; - g_vars->scene04_var05 = 0; + g_vars->scene04_walkingKozyawka = 0; g_vars->scene04_var06 = 2; g_vars->scene04_dynamicPhaseIndex = 0; @@ -327,13 +327,13 @@ void sceneHandler04_sub1(ExCommand *ex) { g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 1); } -void sceneHandler04_sub3() { +void sceneHandler04_walkKozyawka() { if (g_vars->scene04_kozyawkiObjList.size()) { - g_vars->scene04_var05 = g_vars->scene04_kozyawkiObjList.front(); + 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_var05->_okeyCode); + mq->replaceKeyCode(-1, g_vars->scene04_walkingKozyawka->_okeyCode); mq->chain(0); } } @@ -457,13 +457,14 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_KOZAWRESTART: - if (g_vars->scene04_var05) { - g_vars->scene04_kozyawkiObjList.push_back(g_vars->scene04_var05); - g_vars->scene04_var05->hide(); - g_vars->scene04_var05 = 0; + 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_sub3(); + sceneHandler04_walkKozyawka(); break; -- cgit v1.2.3 From 43b5a0ebf90058b214fdbf02e2441b9da55047e3 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 29 Nov 2013 03:01:36 -0500 Subject: FULLPIPE: Implement scene04_speakerCallback() --- engines/fullpipe/scenes/scene04.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 28a9b6fc00..f36dc48e8a 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -36,8 +36,27 @@ namespace Fullpipe { -void scene04_callback(int *param) { - warning("STUB: scene04_callback"); +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_var17 >= 0) { + *phase = scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16]; + + g_vars->scene04_var17++; + + if (scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16] < 0) { + g_vars->scene04_var17 = 0; + g_vars->scene04_var16 = g_fullpipe->_rnd->getRandomNumber(2); + } + } else { + ++g_vars->scene04_var17; + } + } } void scene04_initScene(Scene *sc) { @@ -166,7 +185,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_mamasha->hide(); g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1); - g_vars->scene04_speaker->_callback2 = scene04_callback; + g_vars->scene04_speaker->_callback2 = scene04_speakerCallback; g_vars->scene04_speaker->startAnim(MV_SPK4_PLAY, 0, -1); g_vars->scene04_var16 = 0; -- cgit v1.2.3 From ba52b4aca701bdf7bead7a50baccee9868a3406c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 29 Nov 2013 03:06:07 -0500 Subject: FULLPIPE: Some renames in scene04 --- engines/fullpipe/scenes/scene04.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index f36dc48e8a..30b5f0a254 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -44,17 +44,17 @@ static const int scene04_speakerPhases[] = { void scene04_speakerCallback(int *phase) { if (g_vars->scene04_soundPlaying) { - if (g_vars->scene04_var17 >= 0) { - *phase = scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16]; + if (g_vars->scene04_speakerPhase >= 0) { + *phase = scene04_speakerPhases[g_vars->scene04_speakerPhase + 6 * g_vars->scene04_speakerVariant]; - g_vars->scene04_var17++; + g_vars->scene04_speakerPhase++; - if (scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16] < 0) { - g_vars->scene04_var17 = 0; - g_vars->scene04_var16 = g_fullpipe->_rnd->getRandomNumber(2); + 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_var17; + ++g_vars->scene04_speakerPhase; } } } @@ -188,8 +188,8 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_speaker->_callback2 = scene04_speakerCallback; g_vars->scene04_speaker->startAnim(MV_SPK4_PLAY, 0, -1); - g_vars->scene04_var16 = 0; - g_vars->scene04_var17 = 0; + g_vars->scene04_speakerVariant = 0; + g_vars->scene04_speakerPhase = 0; g_fullpipe->initArcadeKeys("SC_4"); } -- cgit v1.2.3 From be7325c309766721403bd4a21b8df4bbc514f4dd Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 29 Nov 2013 09:29:34 +0100 Subject: FULLPIPE: Implement sceneHandler04_dropBottle() --- engines/fullpipe/scenes/scene04.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 30b5f0a254..f2fbfd3ef4 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -160,7 +160,7 @@ void scene04_initScene(Scene *sc) { } g_vars->scene04_var02 = 0; - g_vars->scene04_soundPlaying = 0; + g_vars->scene04_soundPlaying = false; g_vars->scene04_var04 = 0; g_vars->scene04_walkingKozyawka = 0; g_vars->scene04_var06 = 2; @@ -283,7 +283,30 @@ void sceneHandler04_clickPlank() { } void sceneHandler04_dropBottle() { - warning("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::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) { -- cgit v1.2.3 From 521eeb9b42d0b37c5fe79843e7ecbda08f5b8065 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 1 Dec 2013 16:50:04 +0200 Subject: FULLPIPE: Implement sceneHandler04_winArcade() --- engines/fullpipe/scenes/scene04.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index f2fbfd3ef4..137133ba28 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -33,6 +33,7 @@ #include "fullpipe/interaction.h" #include "fullpipe/gameloader.h" #include "fullpipe/behavior.h" +#include "fullpipe/motion.h" namespace Fullpipe { @@ -446,7 +447,30 @@ void sceneHandler04_updateBottle() { } void sceneHandler04_winArcade() { - warning("sceneHandler04_winArcade()"); + if (g_fullpipe->getObjectState(sO_LowerPipe) == g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed) + && g_vars->scene04_soundPlaying) { + g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); + g_vars->scene04_hand->changeStatics2(ST_HND_EMPTY); + + chainQueue(QU_HND_TAKEBOTTLE, 1); + + if (g_vars->scene04_walkingKozyawka) { + g_vars->scene04_kozyawkiObjList.push_back(g_vars->scene04_walkingKozyawka); + + g_vars->scene04_walkingKozyawka->changeStatics2(ST_KZW_EMPTY); + g_vars->scene04_walkingKozyawka->hide(); + g_vars->scene04_walkingKozyawka = 0; + } + + g_vars->scene04_var19 = 0; + g_vars->scene04_soundPlaying = 0; + + getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->setEnabled(); + + getGameLoaderInteractionController()->enableFlag24(); + + g_fullpipe->stopSoundStream2(); + } } int sceneHandler04(ExCommand *ex) { -- cgit v1.2.3 From 627716ab1ae493316da5a36f3dddc8ca72959b39 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 1 Dec 2013 17:07:23 +0200 Subject: FULLPIPE: Implement sceneHandler04_liftBottle() --- engines/fullpipe/scenes/scene04.cpp | 40 +++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) (limited to 'engines/fullpipe/scenes/scene04.cpp') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 137133ba28..d642ebfcd2 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -285,7 +285,7 @@ void sceneHandler04_clickPlank() { void sceneHandler04_dropBottle() { g_vars->scene04_var12 = 1; - g_vars->scene04_var26 = 10; + g_vars->scene04_bottleY = 10; g_vars->scene04_var06 = 0; while (g_vars->scene04_kozyawkiAni.size()) { @@ -389,8 +389,36 @@ void sceneHandler04_sub5() { warning("sceneHandler04_sub5()"); } -void sceneHandler04_sub6() { - warning("sceneHandler04_sub6()"); +void sceneHandler04_bottleUpdateObjects(int off) { + for (Common::List::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it) { + GameObject *obj = *it; + + obj->setOXY(obj->_field_8 + 20, off + obj->_field_8 + 24); + } +} + +void sceneHandler04_liftBottle() { + int newy = g_vars->scene04_bottleY + g_vars->scene04_spring->_oy; + + g_vars->scene04_bottleY += 5; + + sceneHandler04_bottleUpdateObjects(newy - g_vars->scene04_spring->_oy); + + g_vars->scene04_spring->setOXY(g_vars->scene04_spring->_ox, newy); + + if (g_vars->scene04_bottle->_oy >= 226) { + sceneHandler04_bottleUpdateObjects(226 - g_vars->scene04_bottle->_oy); + + g_vars->scene04_spring->setOXY(g_vars->scene04_spring->_ox, 437); + g_vars->scene04_var12 = 0; + g_vars->scene04_var09 = 0; + g_vars->scene04_var19 = 1; + g_vars->scene04_var06 = 2; + g_vars->scene04_var20 = 10; + g_vars->scene04_var02 = 0; + + g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); + } } void sceneHandler04_sub7() { @@ -425,10 +453,6 @@ void sceneHandler04_testPlank(ExCommand *ex) { warning("sceneHandler04_testPlank()"); } -void sceneHandler04_bottleUpdateObjects(int off) { - warning("sceneHandler04_bottleUpdateObjects()"); -} - void sceneHandler04_updateBottle() { Common::Point point; @@ -581,7 +605,7 @@ int sceneHandler04(ExCommand *ex) { sceneHandler04_sub5(); if (g_vars->scene04_var12) - sceneHandler04_sub6(); + sceneHandler04_liftBottle(); if (g_vars->scene04_var08) sceneHandler04_clickLadder(); -- cgit v1.2.3