aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h31
-rw-r--r--engines/fullpipe/module.mk1
-rw-r--r--engines/fullpipe/scenes.cpp21
-rw-r--r--engines/fullpipe/scenes.h28
-rw-r--r--engines/fullpipe/scenes/scene29.cpp36
5 files changed, 100 insertions, 17 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 9062fe949d..7924b334ca 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1276,6 +1276,37 @@ namespace Fullpipe {
#define QU_SC28_WMN_START 3452
#define ST_MAN28_RIGHT 4249
+// Scene 29
+#define ANI_ASS 2120
+#define ANI_PORTER 2082
+#define ANI_SHELL_GREEN 2116
+#define ANI_SHELL_RED 2130
+#define ANI_SHOOTER1 2108
+#define ANI_SHOOTER2 2111
+#define MSG_SC29_DISABLEPORTER 2097
+#define MSG_SC29_DISABLERIDEBACK 2106
+#define MSG_SC29_ENABLEPORTER 2096
+#define MSG_SC29_ENABLERIDEBACK 2105
+#define MSG_SC29_LAUGH 4760
+#define MSG_SC29_SHOOTGREEN 2119
+#define MSG_SC29_SHOOTRED 2137
+#define MSG_SC29_SHOWLASTGREEN 2730
+#define MSG_SC29_SHOWLASTRED 2731
+#define MSG_SC29_STOPRIDE 2107
+#define MV_ASS_HITGREEN 2138
+#define MV_ASS_HITRED 2139
+#define MV_MAN29_BEND 2091
+#define MV_MAN29_JUMP 2090
+#define MV_MAN29_RUN 2095
+#define MV_MAN29_STANDUP 2092
+#define MV_PTR_MOVEFAST 2102
+#define MV_SHG_HITASS 2151
+#define MV_SHR_HITASS 2152
+#define SND_29_028 4758
+#define SND_29_029 4759
+#define ST_ASS_NORM 2122
+#define ST_MAN29_RUNR 2140
+
// Scene 30
#define ANI_LEG 2322
#define MSG_SC30_UPDATEPATH 2358
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index db97fa202b..3962fe64ba 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -52,6 +52,7 @@ MODULE_OBJS = \
scenes/scene26.o \
scenes/scene27.o \
scenes/scene28.o \
+ scenes/scene29.o \
scenes/scene30.o \
scenes/scene31.o \
scenes/scene32.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 147961b519..4746cb236b 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -378,6 +378,27 @@ Vars::Vars() {
scene28_headBeardedFlipper = false;
scene28_lift6inside = false;
+ scene29_var01 = 0;
+ scene29_var02 = 0;
+ scene29_var03 = 0;
+ scene29_var04 = 0;
+ scene29_porter = 0;
+ scene29_shooter1 = 0;
+ scene29_shooter2 = 0;
+ scene29_ass = 0;
+ scene29_var09 = 0;
+ scene29_var10 = 0;
+ scene29_var11 = 0;
+ scene29_var12 = 0;
+ scene29_var13 = 0;
+ scene29_var14 = 75;
+ scene29_var15 = 0;
+ scene29_var16 = 0;
+ scene29_var17 = 0;
+ scene29_var18 = 0;
+ scene29_var20 = 0;
+ scene29_var21 = 0;
+
scene30_leg = 0;
scene30_liftFlag = 1;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index f99e76d157..04d84c86a0 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -33,6 +33,7 @@ class MctlLadder;
struct Ring;
class StaticANIObject;
struct Swinger;
+struct WalkingBearder;
int defaultUpdateCursor();
@@ -585,6 +586,33 @@ public:
bool scene28_headBeardedFlipper;
bool scene28_lift6inside;
+ int scene29_var01;
+ int scene29_var02;
+ int scene29_var03;
+ int scene29_var04;
+ StaticANIObject *scene29_porter;
+ StaticANIObject *scene29_shooter1;
+ StaticANIObject *scene29_shooter2;
+ StaticANIObject *scene29_ass;
+ BallChain scene29_var05;
+ BallChain scene29_var06;
+ BallChain scene29_var07;
+ BallChain scene29_var08;
+ int scene29_var09;
+ int scene29_var10;
+ int scene29_var11;
+ int scene29_var12;
+ int scene29_var13;
+ int scene29_var14;
+ int scene29_var15;
+ int scene29_var16;
+ int scene29_var17;
+ int scene29_var18;
+ Common::Array<WalkingBearder *> scene29_var19;
+ int scene29_var20;
+ int scene29_var21;
+ MGM scene29_mgm;
+
StaticANIObject *scene30_leg;
int scene30_liftFlag;
diff --git a/engines/fullpipe/scenes/scene29.cpp b/engines/fullpipe/scenes/scene29.cpp
index 9efb4285ad..27d45c2eea 100644
--- a/engines/fullpipe/scenes/scene29.cpp
+++ b/engines/fullpipe/scenes/scene29.cpp
@@ -71,7 +71,7 @@ void scene29_initScene(Scene *sc) {
g_vars->scene29_var08.cPlex = 0;
ani = sc->getStaticANIObject1ById(ANI_SHELL_GREEN, -1);
- Ball *b = g_vars->scene29_var05->sub04(g_vars->scene29_var05.field_8, 0);
+ Ball *b = g_vars->scene29_var05.sub04(g_vars->scene29_var05.field_8, 0);
b->ani = ani;
if (g_vars->scene29_var05.field_8)
@@ -86,7 +86,7 @@ void scene29_initScene(Scene *sc) {
sc->addStaticANIObject(newani, 1);
- b = g_vars->scene29_var05->sub04(g_vars->scene29_var05.field_8, 0);
+ b = g_vars->scene29_var05.sub04(g_vars->scene29_var05.field_8, 0);
b->ani = ani;
if (g_vars->scene29_var05.field_8)
@@ -115,7 +115,7 @@ void scene29_initScene(Scene *sc) {
ani = sc->getStaticANIObject1ById(ANI_SHELL_RED, -1);
- b = g_vars->scene29_var06->sub04(g_vars->scene29_var06.field_8, 0);
+ b = g_vars->scene29_var06.sub04(g_vars->scene29_var06.field_8, 0);
b->ani = ani;
if (g_vars->scene29_var06.field_8)
@@ -130,7 +130,7 @@ void scene29_initScene(Scene *sc) {
sc->addStaticANIObject(newani, 1);
- b = g_vars->scene29_var06->sub04(g_vars->scene29_var06.field_8, 0);
+ b = g_vars->scene29_var06.sub04(g_vars->scene29_var06.field_8, 0);
b->ani = ani;
if (g_vars->scene29_var06.field_8)
@@ -143,7 +143,7 @@ void scene29_initScene(Scene *sc) {
g_vars->scene29_var19.clear();
- ani = new StaticANIObject(accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
+ ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
ani->_statics = ani->getStaticsById(ST_BRDCMN_EMPTY);
@@ -270,11 +270,11 @@ int sceneHandler29(ExCommand *cmd) {
case MSG_SC29_LAUGH:
if (g_vars->scene29_var18 == ANI_SHELL_GREEN) {
- playSound(SND_29_028, 0);
+ g_fp->playSound(SND_29_028, 0);
break;
}
- playSound(SND_29_029, 0);
+ g_fp->playSound(SND_29_029, 0);
break;
@@ -296,7 +296,7 @@ int sceneHandler29(ExCommand *cmd) {
case MSG_SC29_SHOWLASTGREEN:
if (g_vars->scene29_var05.numBalls) {
- g_vars->scene29_var05.field_8->ani->show1(-1, -1, (Objects)-1, 0);
+ g_vars->scene29_var05.field_8->ani->show1(-1, -1, -1, 0);
g_vars->scene29_var05.field_8->ani->startAnim(MV_SHG_HITASS, 0, -1);
}
@@ -312,13 +312,14 @@ int sceneHandler29(ExCommand *cmd) {
getGameLoaderInteractionController()->enableFlag24();
break;
- case MSG_SC29_STOPRIDE:
+ case MSG_SC29_DISABLERIDEBACK:
g_vars->scene29_var12 = 0;
break;
- case MSG_SC29_DISABLERIDEBACK:
+ case MSG_SC29_ENABLERIDEBACK:
g_vars->scene29_var12 = 1;
- // fall through
+ g_vars->scene29_var11 = 0;
+ break;
case MSG_SC29_DISABLEPORTER:
g_vars->scene29_var11 = 0;
@@ -333,8 +334,9 @@ int sceneHandler29(ExCommand *cmd) {
case 29:
if (!g_vars->scene29_var09 || g_vars->scene29_var10) {
if (!g_vars->scene29_var10) {
- v6 = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
- if (v6 && v6 == g_vars->scene29_porter) {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+
+ if (ani && ani == g_vars->scene29_porter) {
sceneHandler29_clickPorter(cmd);
cmd->_messageKind = 0;
@@ -361,7 +363,7 @@ int sceneHandler29(ExCommand *cmd) {
if (g_vars->scene29_var20 > g_fp->_sceneRect.right - 500)
g_fp->_currentScene->_x = g_fp->_sceneRect.right - g_vars->scene29_var20 - 350;
- if (g_vars->scene29_var20 < g_sceneRect.left + 100)
+ if (g_vars->scene29_var20 < g_fp->_sceneRect.left + 100)
g_fp->_currentScene->_x = g_vars->scene29_var20 - g_fp->_sceneRect.left - 100;
} else if (g_fp->_aniMan2) {
@@ -382,9 +384,9 @@ int sceneHandler29(ExCommand *cmd) {
if (!g_vars->scene29_porter->_movement)
g_vars->scene29_porter->startAnim(MV_PTR_MOVEFAST, 0, -1);
- if (g_vars->scene29_var09) {
+ if (g_vars->scene29_var09)
sceneHandler29_manFromL();
- else if (g_vars->scene29_var10 && !g_aniMan->_movement)
+ else if (g_vars->scene29_var10 && !g_fp->_aniMan->_movement)
sceneHandler29_sub05();
if (g_vars->scene29_var11)
@@ -400,7 +402,7 @@ int sceneHandler29(ExCommand *cmd) {
sceneHandler29_animBearded();
g_fp->_behaviorManager->updateBehaviors();
- startSceneTrack();
+ g_fp->startSceneTrack();
break;
}