aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes.cpp2
-rw-r--r--engines/fullpipe/scenes.h2
-rw-r--r--engines/fullpipe/scenes/scene06.cpp20
4 files changed, 18 insertions, 7 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 6bd80a3d4b..ccaea13e4a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -268,6 +268,7 @@ namespace Fullpipe {
#define QU_SC6_ENTERLIFT 1054
#define QU_SC6_EXITLIFT 1055
#define QU_SC6_SHOWHANDLE 1689
+#define QU_SC6_SHOWNEXTBALL 2689
#define SC_1 301
#define SC_10 653
#define SC_11 654
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 2aa852bbac..38c5b8ce33 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -124,7 +124,7 @@ Vars::Vars() {
scene06_var09 = 0;
scene06_var10 = 0;
scene06_var11 = 0;
- scene06_var12 = 0;
+ scene06_numBallsGiven = 0;
scene06_var13 = 0;
scene06_var14 = 0;
scene06_var15 = 1;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e8a240dcd1..28fc2b7801 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -162,7 +162,7 @@ public:
int scene06_var10;
StaticANIObject *scene06_var11;
Common::Array<StaticANIObject *> scene06_balls;
- int scene06_var12;
+ int scene06_numBallsGiven;
int scene06_var13;
int scene06_var14;
int scene06_var15;
diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp
index 73f38e4cf6..4e44b2c737 100644
--- a/engines/fullpipe/scenes/scene06.cpp
+++ b/engines/fullpipe/scenes/scene06.cpp
@@ -85,7 +85,7 @@ void sceneHandler06_enableDrops() {
chainQueue(QU_MOM_STANDUP, 1);
g_vars->scene06_var07 = 1;
- g_vars->scene06_var12 = 0;
+ g_vars->scene06_numBallsGiven = 0;
g_vars->scene06_mumsyPos = 0;
g_vars->scene06_var13 = 0;
g_vars->scene06_var16 = 0;
@@ -117,7 +117,17 @@ void sceneHandler06_buttonPush() {
}
void sceneHandler06_showNextBall() {
- warning("STUB: sceneHandler06_showNextBall()");
+ if (g_vars->scene06_balls.size()) {
+ g_vars->scene06_var09 = new StaticANIObject(g_vars->scene06_balls.front());
+ g_vars->scene06_balls.remove_at(0);
+
+ MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene06_var09->_okeyCode);
+ mq->chain(0);
+
+ ++g_vars->scene06_numBallsGiven;
+ }
}
void sceneHandler06_installHandle() {
@@ -181,7 +191,7 @@ void scene06_initScene(Scene *sc) {
g_vars->scene06_var10 = 0;
g_vars->scene06_var11 = 0;
g_vars->scene06_balls.clear();
- g_vars->scene06_var12 = 0;
+ g_vars->scene06_numBallsGiven = 0;
g_vars->scene06_var13 = 0;
g_vars->scene06_var14 = 0;
g_vars->scene06_var15 = 1;
@@ -332,7 +342,7 @@ int sceneHandler06(ExCommand *ex) {
}
if (g_vars->scene06_var09 == st) {
- if (g_vars->scene06_var12 == 1)
+ if (g_vars->scene06_numBallsGiven == 1)
sceneHandler06_takeBall();
ex->_messageKind = 0;
@@ -430,7 +440,7 @@ int sceneHandler06(ExCommand *ex) {
&& !g_vars->scene06_var09
&& !g_vars->scene06_var10
&& !g_vars->scene06_var11
- && g_vars->scene06_var12 >= 15
+ && g_vars->scene06_numBallsGiven >= 15
&& !g_vars->scene06_ballDrop->_movement
&& !g_vars->scene06_mumsy->_movement
&& !g_vars->scene06_var16)