diff options
-rw-r--r-- | engines/fullpipe/constants.h | 31 | ||||
-rw-r--r-- | engines/fullpipe/module.mk | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 21 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 28 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene29.cpp | 36 |
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; } |