diff options
| author | Eugene Sandulenko | 2014-02-12 21:15:48 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2014-02-13 00:50:41 +0200 | 
| commit | 893667fc9e1f83d51351b3c84cf1b6dcd1f703b5 (patch) | |
| tree | 9f61592082c56508e488858deed5beb42e1cb540 | |
| parent | 7c549a3eed235a1cb9850508549a48fc44e9c0a1 (diff) | |
| download | scummvm-rg350-893667fc9e1f83d51351b3c84cf1b6dcd1f703b5.tar.gz scummvm-rg350-893667fc9e1f83d51351b3c84cf1b6dcd1f703b5.tar.bz2 scummvm-rg350-893667fc9e1f83d51351b3c84cf1b6dcd1f703b5.zip  | |
FULLPIPE: Plug scene09 in
| -rw-r--r-- | engines/fullpipe/constants.h | 10 | ||||
| -rw-r--r-- | engines/fullpipe/module.mk | 1 | ||||
| -rw-r--r-- | engines/fullpipe/scenes.cpp | 21 | ||||
| -rw-r--r-- | engines/fullpipe/scenes.h | 20 | ||||
| -rw-r--r-- | engines/fullpipe/scenes/scene09.cpp | 50 | 
5 files changed, 75 insertions, 27 deletions
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<Hanger *> 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  | 
