From 893667fc9e1f83d51351b3c84cf1b6dcd1f703b5 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 12 Feb 2014 21:15:48 +0200 Subject: FULLPIPE: Plug scene09 in --- engines/fullpipe/constants.h | 10 ++++++++ engines/fullpipe/module.mk | 1 + engines/fullpipe/scenes.cpp | 21 ++++++++++++++++ engines/fullpipe/scenes.h | 20 +++++++++++++++ engines/fullpipe/scenes/scene09.cpp | 50 +++++++++++++++++-------------------- 5 files changed, 75 insertions(+), 27 deletions(-) (limited to 'engines') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 4d63031153..c8400c7280 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -585,6 +585,16 @@ namespace Fullpipe { #define ST_MAN8_STAND 774 #define ST_VMT_MIN 766 +// Scene 9 +#define ANI_BALL9 933 +#define ANI_GLOTATEL 924 +#define ANI_GRIT_9 2719 +#define ANI_PLEVATEL 919 +#define ANI_VISUNCHIK 904 +#define MV_VSN_CYCLE2 2987 +#define ST_GRT9_GRIT 2722 +#define ST_GRT9_NORM 2721 + // Scene 10 #define ANI_GUM 978 #define ANI_NADUVATEL 944 diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 02999344e4..db97fa202b 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -33,6 +33,7 @@ MODULE_OBJS = \ scenes/scene06.o \ scenes/scene07.o \ scenes/scene08.o \ + scenes/scene09.o \ scenes/scene10.o \ scenes/scene11.o \ scenes/scene12.o \ diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 6225c33132..3d4898ed4c 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -156,6 +156,20 @@ Vars::Vars() { scene08_stairsVisible = true; scene08_manOffsetY = 0; + scene09_flyingBall = 0; + scene09_var05 = 0; + scene09_glotatel = 0; + scene09_spitter = 0; + scene09_grit = 0; + scene09_var08 = 1; + scene09_var09 = 0; + scene09_var10 = -1; + scene09_var11 = -1; + scene09_var12 = -1000; + scene09_numMovingHangers = 0; + scene09_var13 = 0; + scene09_var15 = 0; + scene10_gum = 0; scene10_packet = 0; scene10_packet2 = 0; @@ -1388,4 +1402,11 @@ void BallChain::init(Ball **ball) { } } +Ball *BallChain::sub04(Ball *ballP, Ball *ballN) { + warning("STUB: BallChain::sub04"); + + return pTail; +} + + } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 171961863b..1dbad6e67d 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -27,6 +27,7 @@ namespace Fullpipe { struct Bat; struct BehaviorEntryInfo; +struct Hanger; class MGM; class MctlLadder; struct Ring; @@ -208,6 +209,8 @@ struct BallChain { ~BallChain() { free(cPlex); } void init(Ball **ball); + Ball *sub04(Ball *ballP, Ball *ballN); + void reset() { pHead = 0; pTail = 0; field_8 = 0; numBalls = 0; free(cPlex); cPlex = 0; cPlexLen = 0; } }; class Vars { @@ -341,6 +344,23 @@ public: bool scene08_stairsVisible; int scene08_manOffsetY; + StaticANIObject *scene09_flyingBall; + int scene09_var05; + StaticANIObject *scene09_glotatel; + StaticANIObject *scene09_spitter; + StaticANIObject *scene09_grit; + int scene09_var08; + int scene09_var09; + int scene09_var10; + int scene09_var11; + int scene09_var12; + BallChain scene09_balls; + Common::Array scene09_hangers; + BallChain scene09_var07; + int scene09_numMovingHangers; + int scene09_var13; + int scene09_var15; + StaticANIObject *scene10_gum; StaticANIObject *scene10_packet; StaticANIObject *scene10_packet2; diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp index 82edc2b459..29305413d4 100644 --- a/engines/fullpipe/scenes/scene09.cpp +++ b/engines/fullpipe/scenes/scene09.cpp @@ -36,12 +36,19 @@ namespace Fullpipe { +struct Hanger { + StaticANIObject *ani; + int field_4; + int field_8; + int phase; +}; + void scene09_setupGrit(Scene *sc) { if (g_vars->scene09_grit->_statics->_staticsId == ST_GRT9_GRIT) { if (!getGameLoaderInventory()->getCountItemsWithId(ANI_INV_COIN)) { - if (getObjectState(sO_CoinSlot_1) == getObjectEnumState(sO_CoinSlot_1, sO_Empty) + if (g_fp->getObjectState(sO_CoinSlot_1) == g_fp->getObjectEnumState(sO_CoinSlot_1, sO_Empty) && (g_vars->swallowedEgg1->_value.intValue == ANI_INV_EGGBOOT || g_vars->swallowedEgg2->_value.intValue == ANI_INV_EGGBOOT || g_vars->swallowedEgg3->_value.intValue == ANI_INV_EGGBOOT)) { - Scene *oldsc = g_currentScene; + Scene *oldsc = g_fp->_currentScene; g_fp->_currentScene = sc; g_vars->scene09_grit->changeStatics2(ST_GRT9_NORM); g_fp->_currentScene = oldsc; @@ -63,7 +70,7 @@ void scene09_initScene(Scene *sc) { g_vars->scene09_var12 = -1000; while (g_vars->scene09_balls.numBalls) { - Ball *b = &g_vars->scene09_balls.pHead->p0; + Ball *b = g_vars->scene09_balls.pHead->p0; g_vars->scene09_balls.pHead = g_vars->scene09_balls.pHead->p0; @@ -72,25 +79,14 @@ void scene09_initScene(Scene *sc) { else g_vars->scene09_balls.field_8 = 0; - g_vars->scene09_balls->init(b); + g_vars->scene09_balls.init(&b); } g_vars->scene09_var13 = 3; - if (g_vars->scene09_hangers) { - if (g_vars->scene09_var15 < 4) { - error("scene09_initScene(): old code"): - } else { - if (g_vars->scene09_numMovingHangers < 4) - error("scene09_initScene(): old code2"); - - g_vars->scene09_numMovingHangers = 4; - } - } else { - g_vars->scene09_hangers.clear(); - g_vars->scene09_var15 = 4; - g_vars->scene09_numMovingHangers = 4; - } + g_vars->scene09_hangers.clear(); + g_vars->scene09_var15 = 4; + g_vars->scene09_numMovingHangers = 4; StaticANIObject *hanger = sc->getStaticANIObject1ById(ANI_VISUNCHIK, -1); Hanger *hng = new Hanger; @@ -104,8 +100,8 @@ void scene09_initScene(Scene *sc) { int x = 75; - for (int i = 1; x < 300; i++, x += 75) - StaicANIObject *ani = new StaticANIObject(hanger); + for (int i = 1; x < 300; i++, x += 75) { + StaticANIObject *ani = new StaticANIObject(hanger); ani->show1(x + hanger->_ox, hanger->_oy, MV_VSN_CYCLE2, 0); sc->addStaticANIObject(hanger, 1); @@ -137,9 +133,9 @@ void scene09_initScene(Scene *sc) { g_vars->scene09_var07.numBalls--; } - g_vars->scene09_var07->reset(); + g_vars->scene09_var07.reset(); - Ball *b9 = g_vars->scene09_var07->sub04(g_vars->scene09_var07.field_8, 0); + Ball *b9 = g_vars->scene09_var07.sub04(g_vars->scene09_var07.field_8, 0); b9->ani = sc->getStaticANIObject1ById(ANI_BALL9, -1); b9->ani->setAlpha(0xc8); @@ -152,12 +148,12 @@ void scene09_initScene(Scene *sc) { } for (int i = 0; i < 4; i++) { - Ball *newball = new StaticANIObject(b9); + StaticANIObject *newball = new StaticANIObject(b9->ani); newball->setAlpha(0xc8); Ball *runPtr = g_vars->scene09_var07.pTail; - ball *lastP = g_vars->scene09_var07.field_8; + Ball *lastP = g_vars->scene09_var07.field_8; if (!g_vars->scene09_var07.pTail) { g_vars->scene09_var07.cPlex = (byte *)calloc(g_vars->scene09_var07.cPlexLen, sizeof(Ball)); @@ -197,9 +193,9 @@ void scene09_initScene(Scene *sc) { sc->addStaticANIObject(newball, 1); } - setObjectState(sO_RightStairs_9, getObjectEnumState(sO_RightStairs_9, sO_IsClosed)); + g_fp->setObjectState(sO_RightStairs_9, g_fp->getObjectEnumState(sO_RightStairs_9, sO_IsClosed)); - GameVar *eggvar = getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs); + GameVar *eggvar = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs); g_vars->swallowedEgg1 = eggvar->getSubVarByName(sO_Egg1); g_vars->swallowedEgg2 = eggvar->getSubVarByName(sO_Egg2); @@ -211,7 +207,7 @@ void scene09_initScene(Scene *sc) { g_fp->lift_setButton(sO_Level1, ST_LBN_1N); - g-fp->setArcadeOverlay(PIC_CSR_ARCADE4); + g_fp->setArcadeOverlay(PIC_CSR_ARCADE4); } } // End of namespace Fullpipe -- cgit v1.2.3