diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 849e70e09ee9..1b7d8ea60d31 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -640,6 +640,18 @@ namespace Fullpipe { #define ST_GMS_BOOT 1270 #define ST_GMS_BOOTLESS2 3316 +// Scene 16 +#define ANI_BEARDED_CMN 3420 +#define ANI_BOOT_16 3285 +#define ANI_BOY 1327 +#define ANI_GIRL 1328 +#define ANI_JETTIE 1392 +#define ANI_MUG 1296 +#define ANI_WIRE16 1344 +#define MV_GRL_LAUGH_POPA 3278 +#define SND_16_034 3854 +#define ST_MUG_EMPTY 1298 + // Scene 24 #define ANI_DROP_24 3505 #define ANI_JET24 1837 diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index f73a82d3a39d..b9a82fa415fa 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -38,6 +38,7 @@ MODULE_OBJS = \ scenes/scene13.o \ scenes/scene14.o \ scenes/scene15.o \ + scenes/scene16.o \ scenes/scene24.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 0df58dbee9ab..9ab33284482a 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -227,6 +227,22 @@ Vars::Vars() { scene15_ladder = 0; scene15_boot = 0; + scene16_var01 = 0; + scene16_var02 = 0; + scene16_var03 = 0; + scene16_var04 = 0; + scene16_var05.clear(); + scene16_var06 = 0; + scene16_var07 = 0; + scene16_var08 = 0; + scene16_wire = 0; + scene16_mug = 0; + scene16_jettie = 0; + scene16_boot = 0; + scene16_var09 = 0; + scene16_sound = 0; + scene16_var10 = 0; + scene24_jetIsOn = false; scene24_flowIsLow = false; scene24_waterIsOn = false; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 664eb745dde4..d8dcf8918a86 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -304,6 +304,22 @@ class Vars { PictureObject *scene15_ladder; StaticANIObject *scene15_boot; + int scene16_var01; + int scene16_var02; + int scene16_var03; + int scene16_var04; + Common::List scene16_var05; + int scene16_var06; + int scene16_var07; + int scene16_var08; + StaticANIObject *scene16_wire; + StaticANIObject *scene16_mug; + StaticANIObject *scene16_jettie; + StaticANIObject *scene16_boot; + int scene16_var09; + int scene16_sound; + int scene16_var10; + bool scene24_jetIsOn; bool scene24_flowIsLow; bool scene24_waterIsOn; diff --git a/engines/fullpipe/scenes/scene16.cpp b/engines/fullpipe/scenes/scene16.cpp index cafe4d3fcac5..9b952ec29c0c 100644 --- a/engines/fullpipe/scenes/scene16.cpp +++ b/engines/fullpipe/scenes/scene16.cpp @@ -55,41 +55,42 @@ void scene16_initScene(Scene *sc) { if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) { g_vars->scene16_var10 = 1; - StaticANIObject *boy = sc->getStaticANIObject1ById(ANI_BOY, -1); - boy->loadMovementsPixelData(); + StaticANIObject *boy[2]; + boy[0] = sc->getStaticANIObject1ById(ANI_BOY, -1); + boy[0]->loadMovementsPixelData(); - StaticANIObject *newboy = new StaticANIObject(boy); - sc->addStaticANIObject(boy, 1); + boy[1] = new StaticANIObject(boy[0]); + sc->addStaticANIObject(boy[1], 1); - int phase = 0; + int idx = 0; for (int i = 0; i < 3; i++) { - g_vars->scene16_var05.push_back(*(&boy + phase)); + g_vars->scene16_var05.push_back(boy[idx]); - phase++; + idx++; - if (phase >= 2) - phase = 0; + if (idx >= 2) + idx = 0; } g_vars->scene16_var05.push_back(sc->getStaticANIObject1ById(ANI_GIRL, -1)); for (int i = 0; i < 4; i++) { - g_vars->scene16_var05.push_back(*(&boy + phase)); + g_vars->scene16_var05.push_back(boy[idx]); - phase++; + idx++; - if (phase >= 2) - phase = 0; + if (idx >= 2) + idx = 0; } } else { g_fp->setObjectState(sO_Girl, g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging)); g_vars->scene16_var10 = 0; - StaticANIObject *ani = new StaticANIObject(accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1)); + StaticANIObject *ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1)); ani->_movement = 0; - ani->_statics = ani->_staticsList[0]; + ani->_statics = (Statics *)ani->_staticsList[0]; sc->addStaticANIObject(ani, 1); }