[Scummvm-cvs-logs] scummvm master -> aaf9ebfd680dd733ce11fbcd1943f177f4487a40
sev-
sev at scummvm.org
Wed Feb 12 23:51:26 CET 2014
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
7d0dc05622 FULLPIPE: More work on scene09_initScene()
417426a165 FULLPIPE: Even more work on scene09_initScene()
d48d4b325c FULLPIPE: Implement scene09_setupGrit()
7c549a3eed FULLPIPE: Further work on scene09_initScene()
893667fc9e FULLPIPE: Plug scene09 in
2c5e338d33 FULLPIPE: Implement scene09_updateCursor()
f9ecd6518a FULLPIPE: Implement sceneHandler09_updateScreenCallback()
a1b7a36cdd FULLPIPE: Implement sceneHandler09()
aaf9ebfd68 FULLPIPE: Enable scene09
Commit: 7d0dc05622055709d1edafb52c6a8de6acf1bf5f
https://github.com/scummvm/scummvm/commit/7d0dc05622055709d1edafb52c6a8de6acf1bf5f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:40-08:00
Commit Message:
FULLPIPE: More work on scene09_initScene()
Changed paths:
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 9ccb847..57a7823 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -49,15 +49,16 @@ void scene09_initScene(Scene *sc) {
g_vars->scene09_var12 = -1000;
while (g_vars->scene09_balls.numBalls) {
- v3 = &g_vars->scene09_balls.pHead->p0;
- v4 = 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;
+
if (g_vars->scene09_balls.pHead)
- v4->p1 = 0;
+ g_vars->scene09_balls.pHead->p0->p1 = 0;
else
g_vars->scene09_balls.field_8 = 0;
- BallChain_init(&g_vars->scene09_balls, v3);
+ g_vars->scene09_balls->init(b);
}
g_vars->scene09_var13 = 3;
@@ -111,7 +112,7 @@ void scene09_initScene(Scene *sc) {
g_vars->scene09_hangers[i].field_4 = 0;
g_vars->scene09_hangers[i].field_8 = 0;
}
- v11 = 0;
+
if (g_vars->scene09_var07.numBalls) {
while (1) {
v12 = g_vars->scene09_var07.pHead;
@@ -132,24 +133,26 @@ void scene09_initScene(Scene *sc) {
}
}
}
- v16 = Scene_getStaticANIObject1ById(sc, ANI_BALL9, -1);
- StaticANIObject_setAlpha(v16, -56);
- v17 = BallChain_sub04(&g_vars->scene09_var07, g_vars->scene09_var07.field_8, 0);
- v17->ani = v16;
+
+ 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);
+
if (g_vars->scene09_var07.field_8) {
- g_vars->scene09_var07.field_8->p0 = v17;
- g_vars->scene09_var07.field_8 = v17;
+ g_vars->scene09_var07.field_8->p0 = b9;
+ g_vars->scene09_var07.field_8 = b9;
numVis = 4;
} else {
- g_vars->scene09_var07.pHead = v17;
- g_vars->scene09_var07.field_8 = v17;
+ g_vars->scene09_var07.pHead = b9;
+ g_vars->scene09_var07.field_8 = b9;
numVis = 4;
}
+
while (1) {
- v18 = (StaticANIObject *)operator new(0xACu);
- if (v18)
- v11 = StaticANIObject_ctorCopy(v18, v16);
- StaticANIObject_setAlpha(v11, -56);
+ Ball *newball = new StaticANIObject(b9);
+
+ newball->setAlpha(0xc8);
+
v19 = g_vars->scene09_var07.pTail;
v20 = g_vars->scene09_var07.field_8;
if (!g_vars->scene09_var07.pTail) {
@@ -173,30 +176,33 @@ void scene09_initScene(Scene *sc) {
v19->p0 = 0;
++g_vars->scene09_var07.numBalls;
v19->ani = 0;
- v19->ani = v11;
+ v19->ani = newball;
if (g_vars->scene09_var07.field_8)
g_vars->scene09_var07.field_8->p0 = v19;
else
g_vars->scene09_var07.pHead = v19;
g_vars->scene09_var07.field_8 = v19;
- Scene_addStaticANIObject(sc, v11, 1);
+ sc->addStaticANIObject(newball, 1);
--numVis;
if (!numVis)
break;
- v11 = 0;
}
- v23 = getObjectEnumState("Правая лестница_9", "Закрыта");
- setObjectState("Правая лестница_9", v23);
- v24 = getGameLoaderGameVar();
- v25 = GameVar_getSubVarByName(v24, "OBJSTATES");
- v26 = GameVar_getSubVarByName(v25, "Проглоченные яйца");
- g_vars->swallowedEgg1 = GameVar_getSubVarByName(v26, "Яйцо1");
- g_vars->swallowedEgg2 = GameVar_getSubVarByName(v26, "Яйцо2");
- g_vars->swallowedEgg3 = GameVar_getSubVarByName(v26, "Яйцо3");
+
+ setObjectState(sO_RightStairs_9, getObjectEnumState(sO_RightStairs_9, sO_IsClosed));
+
+ GameVar *eggvar = getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
+
+ g_vars->swallowedEgg1 = eggvar->getSubVarByName(sO_Egg1);
+ g_vars->swallowedEgg2 = eggvar->getSubVarByName(sO_Egg2);
+ g_vars->swallowedEgg3 = eggvar->getSubVarByName(sO_Egg3);
+
scene09_setupGrit(sc);
- initArcadeKeys("SC_9");
- lift_setButton("Этаж 1", ST_LBN_1N);
- setArcadeOverlay(PIC_CSR_ARCADE4);
+
+ g_fp->initArcadeKeys("SC_9");
+
+ g_fp->lift_setButton(sO_Level1, ST_LBN_1N);
+
+ g-fp->setArcadeOverlay(PIC_CSR_ARCADE4);
}
} // End of namespace Fullpipe
Commit: 417426a1652fe8eaa47193f590bc014cc99aabaa
https://github.com/scummvm/scummvm/commit/417426a1652fe8eaa47193f590bc014cc99aabaa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:40-08:00
Commit Message:
FULLPIPE: Even more work on scene09_initScene()
Changed paths:
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 57a7823..9bd7250 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -113,27 +113,25 @@ void scene09_initScene(Scene *sc) {
g_vars->scene09_hangers[i].field_8 = 0;
}
- if (g_vars->scene09_var07.numBalls) {
- while (1) {
- v12 = g_vars->scene09_var07.pHead;
- v13 = g_vars->scene09_var07.pHead->p0;
- g_vars->scene09_var07.pHead = g_vars->scene09_var07.pHead->p0;
- if (g_vars->scene09_var07.pHead)
- v13->p1 = 0;
- else
- g_vars->scene09_var07.field_8 = 0;
- v12->p0 = g_vars->scene09_var07.pTail;
- v14 = g_vars->scene09_var07.numBalls == 1;
- g_vars->scene09_var07.pTail = v12;
- --g_vars->scene09_var07.numBalls;
- if (v14) {
- BallChain_reset(&g_vars->scene09_var07);
- if (!g_vars->scene09_var07.numBalls)
- break;
- }
- }
+ while (g_vars->scene09_var07.numBalls) {
+ Ball *ohead = g_vars->scene09_var07.pHead;
+
+ g_vars->scene09_var07.pHead = g_vars->scene09_var07.pHead->p0;
+
+ if (g_vars->scene09_var07.pHead)
+ ohead->p0->p1 = 0;
+ else
+ g_vars->scene09_var07.field_8 = 0;
+
+ ohead->p0 = g_vars->scene09_var07.pTail;
+
+ g_vars->scene09_var07.pTail = ohead;
+
+ g_vars->scene09_var07.numBalls--;
}
+ g_vars->scene09_var07->reset();
+
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);
@@ -141,20 +139,19 @@ void scene09_initScene(Scene *sc) {
if (g_vars->scene09_var07.field_8) {
g_vars->scene09_var07.field_8->p0 = b9;
g_vars->scene09_var07.field_8 = b9;
- numVis = 4;
} else {
g_vars->scene09_var07.pHead = b9;
g_vars->scene09_var07.field_8 = b9;
- numVis = 4;
}
- while (1) {
+ for (int i = 0; i < 4; i++) {
Ball *newball = new StaticANIObject(b9);
newball->setAlpha(0xc8);
v19 = g_vars->scene09_var07.pTail;
v20 = g_vars->scene09_var07.field_8;
+
if (!g_vars->scene09_var07.pTail) {
v21 = (Ball_p4 *)((char *)CPlex::Create((int)&g_vars->scene09_var07.cPlex, g_vars->scene09_var07.cPlexLen, 12) + 12 * g_vars->scene09_var07.cPlexLen - 8);
if (g_vars->scene09_var07.cPlexLen - 1 < 0) {
@@ -171,10 +168,11 @@ void scene09_initScene(Scene *sc) {
g_vars->scene09_var07.pTail = v19;
}
}
+
g_vars->scene09_var07.pTail = v19->p0;
v19->p1 = v20;
v19->p0 = 0;
- ++g_vars->scene09_var07.numBalls;
+ g_vars->scene09_var07.numBalls++;
v19->ani = 0;
v19->ani = newball;
if (g_vars->scene09_var07.field_8)
@@ -183,9 +181,6 @@ void scene09_initScene(Scene *sc) {
g_vars->scene09_var07.pHead = v19;
g_vars->scene09_var07.field_8 = v19;
sc->addStaticANIObject(newball, 1);
- --numVis;
- if (!numVis)
- break;
}
setObjectState(sO_RightStairs_9, getObjectEnumState(sO_RightStairs_9, sO_IsClosed));
Commit: d48d4b325c58ea8ee81fa0edc20d86913a7cf454
https://github.com/scummvm/scummvm/commit/d48d4b325c58ea8ee81fa0edc20d86913a7cf454
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:40-08:00
Commit Message:
FULLPIPE: Implement scene09_setupGrit()
Changed paths:
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 9bd7250..21b46e5 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -36,6 +36,20 @@
namespace Fullpipe {
+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)
+ && (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;
+ g_fp->_currentScene = sc;
+ g_vars->scene09_grit->changeStatics2(ST_GRT9_NORM);
+ g_fp->_currentScene = oldsc;
+ }
+ }
+ }
+}
+
void scene09_initScene(Scene *sc) {
g_vars->scene09_flyingBall = 0;
g_vars->scene09_var05 = 0;
@@ -107,7 +121,7 @@ void scene09_initScene(Scene *sc) {
ani->show1(x + hanger->_ox, haner->_oy, MV_VSN_CYCLE2, 0);
sc->addStaticANIObject(hanger, 1);
- g_vars->scene09_hangers[i].ani = v2;
+ g_vars->scene09_hangers[i].ani = ani;
g_vars->scene09_hangers[i].phase = 0;
g_vars->scene09_hangers[i].field_4 = 0;
g_vars->scene09_hangers[i].field_8 = 0;
Commit: 7c549a3eed235a1cb9850508549a48fc44e9c0a1
https://github.com/scummvm/scummvm/commit/7c549a3eed235a1cb9850508549a48fc44e9c0a1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Further work on scene09_initScene()
Changed paths:
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 21b46e5..82edc2b 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -79,52 +79,45 @@ void scene09_initScene(Scene *sc) {
if (g_vars->scene09_hangers) {
if (g_vars->scene09_var15 < 4) {
- v5 = g_vars->scene09_var15 + 3;
-
- if (g_vars->scene09_var15 + 3 <= 4)
- v5 = 4;
-
- v6 = operator new(16 * v5);
- memcpy(v6, g_vars->scene09_hangers, 16 * g_vars->scene09_numMovingHangers);
- Hanger_clear((Hanger *)v6 + g_vars->scene09_numMovingHangers, 4 - g_vars->scene09_numMovingHangers);
-
- CObjectFree(g_vars->scene09_hangers);
-
- g_vars->scene09_var15 = v5;
- g_vars->scene09_hangers = (Hanger *)v6;
- g_vars->scene09_numMovingHangers = 4;
+ error("scene09_initScene(): old code"):
} else {
if (g_vars->scene09_numMovingHangers < 4)
- Hanger_clear(&g_vars->scene09_hangers[g_vars->scene09_numMovingHangers], 4 - g_vars->scene09_numMovingHangers);
+ error("scene09_initScene(): old code2");
g_vars->scene09_numMovingHangers = 4;
}
} else {
- g_vars->scene09_hangers = (Hanger *)operator new(0x40u);
- Hanger_clear(g_vars->scene09_hangers, 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;
- g_vars->scene09_hangers[0]->ani = hanger;
- g_vars->scene09_hangers[0]->phase = 0;
- g_vars->scene09_hangers[0]->field_4 = 0;
- g_vars->scene09_hangers[0]->field_8 = 0;
+ hng->ani = hanger;
+ hng->phase = 0;
+ hng->field_4 = 0;
+ hng->field_8 = 0;
+
+ g_vars->scene09_hangers.push_back(hng);
int x = 75;
for (int i = 1; x < 300; i++, x += 75)
StaicANIObject *ani = new StaticANIObject(hanger);
- ani->show1(x + hanger->_ox, haner->_oy, MV_VSN_CYCLE2, 0);
+ ani->show1(x + hanger->_ox, hanger->_oy, MV_VSN_CYCLE2, 0);
sc->addStaticANIObject(hanger, 1);
- g_vars->scene09_hangers[i].ani = ani;
- g_vars->scene09_hangers[i].phase = 0;
- g_vars->scene09_hangers[i].field_4 = 0;
- g_vars->scene09_hangers[i].field_8 = 0;
+ hng = new Hanger;
+
+ hng->ani = ani;
+ hng->phase = 0;
+ hng->field_4 = 0;
+ hng->field_8 = 0;
+
+ g_vars->scene09_hangers.push_back(hng);
}
while (g_vars->scene09_var07.numBalls) {
@@ -163,37 +156,44 @@ void scene09_initScene(Scene *sc) {
newball->setAlpha(0xc8);
- v19 = g_vars->scene09_var07.pTail;
- v20 = g_vars->scene09_var07.field_8;
+ Ball *runPtr = g_vars->scene09_var07.pTail;
+ ball *lastP = g_vars->scene09_var07.field_8;
if (!g_vars->scene09_var07.pTail) {
- v21 = (Ball_p4 *)((char *)CPlex::Create((int)&g_vars->scene09_var07.cPlex, g_vars->scene09_var07.cPlexLen, 12) + 12 * g_vars->scene09_var07.cPlexLen - 8);
+ g_vars->scene09_var07.cPlex = (byte *)calloc(g_vars->scene09_var07.cPlexLen, sizeof(Ball));
+
+ byte *p1 = g_vars->scene09_var07.cPlex + (g_vars->scene09_var07.cPlexLen - 1) * sizeof(Ball);
+
if (g_vars->scene09_var07.cPlexLen - 1 < 0) {
- v19 = g_vars->scene09_var07.pTail;
+ runPtr = g_vars->scene09_var07.pTail;
} else {
- v22 = g_vars->scene09_var07.cPlexLen;
- v19 = g_vars->scene09_var07.pTail;
- do {
- v21->p1 = v19;
- v19 = (Ball *)v21;
- --v21;
- --v22;
- } while (v22);
- g_vars->scene09_var07.pTail = v19;
+ runPtr = g_vars->scene09_var07.pTail;
+
+ for (int j = 0; j < g_vars->scene09_var07.cPlexLen; j++) {
+ ((Ball *)p1)->p1 = runPtr;
+ runPtr = (Ball *)p1;
+
+ p1 -= sizeof(Ball);
+ }
+
+ g_vars->scene09_var07.pTail = runPtr;
}
}
- g_vars->scene09_var07.pTail = v19->p0;
- v19->p1 = v20;
- v19->p0 = 0;
+ g_vars->scene09_var07.pTail = runPtr->p0;
+ runPtr->p1 = lastP;
+ runPtr->p0 = 0;
+ runPtr->ani = newball;
+
g_vars->scene09_var07.numBalls++;
- v19->ani = 0;
- v19->ani = newball;
+
if (g_vars->scene09_var07.field_8)
- g_vars->scene09_var07.field_8->p0 = v19;
+ g_vars->scene09_var07.field_8->p0 = runPtr;
else
- g_vars->scene09_var07.pHead = v19;
- g_vars->scene09_var07.field_8 = v19;
+ g_vars->scene09_var07.pHead = runPtr;
+
+ g_vars->scene09_var07.field_8 = runPtr;
+
sc->addStaticANIObject(newball, 1);
}
Commit: 893667fc9e1f83d51351b3c84cf1b6dcd1f703b5
https://github.com/scummvm/scummvm/commit/893667fc9e1f83d51351b3c84cf1b6dcd1f703b5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Plug scene09 in
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/module.mk
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 4d63031..c8400c7 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 0299934..db97fa2 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 6225c33..3d4898e 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 1719618..1dbad6e 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 82edc2b..2930541 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
Commit: 2c5e338d3366ad33f09b9f9976907f814b5c7afd
https://github.com/scummvm/scummvm/commit/2c5e338d3366ad33f09b9f9976907f814b5c7afd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Implement scene09_updateCursor()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index c8400c7..84ef20d 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -592,6 +592,7 @@ namespace Fullpipe {
#define ANI_PLEVATEL 919
#define ANI_VISUNCHIK 904
#define MV_VSN_CYCLE2 2987
+#define PIC_SC9_LADDER_R 2700
#define ST_GRT9_GRIT 2722
#define ST_GRT9_NORM 2721
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 3d4898e..fe1ac17 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -161,6 +161,7 @@ Vars::Vars() {
scene09_glotatel = 0;
scene09_spitter = 0;
scene09_grit = 0;
+ scene09_var02 = 0;
scene09_var08 = 1;
scene09_var09 = 0;
scene09_var10 = -1;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 1dbad6e..a30f058 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -344,6 +344,7 @@ public:
bool scene08_stairsVisible;
int scene08_manOffsetY;
+ int scene09_var02;
StaticANIObject *scene09_flyingBall;
int scene09_var05;
StaticANIObject *scene09_glotatel;
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 2930541..ce7fecc 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -210,4 +210,28 @@ void scene09_initScene(Scene *sc) {
g_fp->setArcadeOverlay(PIC_CSR_ARCADE4);
}
+int sceneHandler09_updateScreenCallback() {
+ warning("STUB: int sceneHandler09_updateScreenCallback()");
+
+ return 0;
+}
+
+int scene09_updateCursor() {
+ g_fp->updateCursorCommon();
+
+ if (g_vars->scene09_var10 < 0) {
+ if (g_fp->_objectIdAtCursor == ANI_VISUNCHIK) {
+ if (g_fp->_cursorId == PIC_CSR_ITN)
+ g_fp->_updateScreenCallback = sceneHandler09_updateScreenCallback;
+ } else {
+ if (g_fp->_objectIdAtCursor == PIC_SC9_LADDER_R && g_fp->_cursorId == PIC_CSR_ITN)
+ g_fp->_cursorId = (g_vars->scene09_var02 < 350) ? PIC_CSR_GOD : PIC_CSR_GOU;
+ }
+ } else {
+ g_fp->_cursorId = PIC_CSR_ITN;
+ }
+
+ return g_fp->_cursorId;
+}
+
} // End of namespace Fullpipe
Commit: f9ecd6518a93ede5f98510ce2cccd9ebf2a19902
https://github.com/scummvm/scummvm/commit/f9ecd6518a93ede5f98510ce2cccd9ebf2a19902
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Implement sceneHandler09_updateScreenCallback()
Changed paths:
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index ce7fecc..34d976b 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -211,9 +211,12 @@ void scene09_initScene(Scene *sc) {
}
int sceneHandler09_updateScreenCallback() {
- warning("STUB: int sceneHandler09_updateScreenCallback()");
+ int res = g_fp->drawArcadeOverlay(g_fp->_objectIdAtCursor == ANI_VISUNCHIK || g_vars->scene09_var10 >= 0);
- return 0;
+ if (!res)
+ g_fp->_updateScreenCallback = 0;
+
+ return res;
}
int scene09_updateCursor() {
Commit: a1b7a36cdd138a96294cd85ae1e910061d77d3d5
https://github.com/scummvm/scummvm/commit/a1b7a36cdd138a96294cd85ae1e910061d77d3d5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Implement sceneHandler09()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene09.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 84ef20d..05c917f 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -591,10 +591,21 @@ namespace Fullpipe {
#define ANI_GRIT_9 2719
#define ANI_PLEVATEL 919
#define ANI_VISUNCHIK 904
+#define MSG_SC9_EATBALL 941
+#define MSG_SC9_FLOWN 943
+#define MSG_SC9_FROMLADDER 4207
+#define MSG_SC9_PLVCLICK 965
+#define MSG_SC9_SETSCROLL 964
+#define MSG_SC9_SHOWBALL 936
+#define MSG_SC9_STARTTIOTIA 4942
+#define MSG_SC9_TOLADDER 4206
+#define MV_MAN9_SHOOT 922
#define MV_VSN_CYCLE2 2987
#define PIC_SC9_LADDER_R 2700
+#define SND_9_018 4200
#define ST_GRT9_GRIT 2722
#define ST_GRT9_NORM 2721
+#define ST_VSN_NORMAL 906
// Scene 10
#define ANI_GUM 978
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index fe1ac17..a59269d 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -170,6 +170,8 @@ Vars::Vars() {
scene09_numMovingHangers = 0;
scene09_var13 = 0;
scene09_var15 = 0;
+ scene09_var17 = 0;
+ scene09_var19 = 0;
scene10_gum = 0;
scene10_packet = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index a30f058..2352efb 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -361,6 +361,8 @@ public:
int scene09_numMovingHangers;
int scene09_var13;
int scene09_var15;
+ int scene09_var17;
+ int scene09_var19;
StaticANIObject *scene10_gum;
StaticANIObject *scene10_packet;
diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp
index 34d976b..1796d77 100644
--- a/engines/fullpipe/scenes/scene09.cpp
+++ b/engines/fullpipe/scenes/scene09.cpp
@@ -237,4 +237,197 @@ int scene09_updateCursor() {
return g_fp->_cursorId;
}
+void sceneHandler09_winArcade() {
+ warning("STUB: sceneHandler09_winArcade()");
+}
+
+void sceneHandler09_startAuntie() {
+ warning("STUB: sceneHandler09_startAuntie()");
+}
+
+void sceneHandler09_spitterClick() {
+ warning("STUB: sceneHandler09_spitterClick()");
+}
+
+void sceneHandler09_eatBall() {
+ warning("STUB: sceneHandler09_eatBall()");
+}
+
+void sceneHandler09_showBall() {
+ warning("STUB: sceneHandler09_showBall()");
+}
+
+void sceneHandler09_cycleHangers() {
+ warning("STUB: sceneHandler09_cycleHangers()");
+}
+
+void sceneHandler09_limitHangerPhase() {
+ warning("STUB: sceneHandler09_limitHangerPhase()");
+}
+
+void sceneHandler09_checkHangerCollide() {
+ warning("STUB: sceneHandler09_checkHangerCollide()");
+}
+
+void sceneHandler09_hangerStartCycle() {
+ warning("STUB: sceneHandler09_hangerStartCycle()");
+}
+
+int sceneHandler09(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_CMN_WINARCADE:
+ sceneHandler09_winArcade();
+ break;
+
+ case MSG_SC9_STARTTIOTIA:
+ sceneHandler09_startAuntie();
+ break;
+
+ case MSG_SC9_FROMLADDER:
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
+
+ g_vars->scene09_var09 = 0;
+ break;
+
+ case MSG_SC9_TOLADDER:
+ getCurrSceneSc2MotionController()->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+
+ g_vars->scene09_var09 = 1;
+ break;
+
+ case MSG_SC9_PLVCLICK:
+ sceneHandler09_spitterClick();
+ break;
+
+ case MSG_SC9_FLOWN:
+ g_vars->scene09_var08 = 0;
+ break;
+
+ case MSG_SC9_EATBALL:
+ sceneHandler09_eatBall();
+ break;
+
+ case MSG_SC9_SHOWBALL:
+ sceneHandler09_showBall();
+ break;
+
+ case 33:
+ {
+ int res = 0;
+
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ g_vars->scene09_var02 = g_fp->_aniMan2->_oy;
+
+ if (x < g_fp->_sceneRect.left + 200)
+ g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300;
+
+ if (x > g_fp->_sceneRect.right - 200)
+ g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300;
+
+ res = 1;
+ } else {
+ if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id != MV_MAN9_SHOOT)
+ g_fp->_aniMan2 = g_fp->_aniMan;
+ }
+
+ sceneHandler09_cycleHangers();
+ sceneHandler09_limitHangerPhase();
+ sceneHandler09_checkHangerCollide();
+
+ if (g_vars->scene09_var10 >= 0)
+ sceneHandler09_hangerStartCycle();
+
+ if (!g_vars->scene09_var17)
+ g_fp->_behaviorManager->updateBehaviors();
+
+ g_fp->startSceneTrack();
+
+ return res;
+ }
+
+ case 30:
+ if (g_vars->scene09_var10 >= 0) {
+ if (ABS(g_vars->scene09_hangers[g_vars->scene09_var10]->phase) < 15) {
+ g_vars->scene09_hangers[g_vars->scene09_var10]->ani->_callback2 = 0;
+ g_vars->scene09_hangers[g_vars->scene09_var10]->ani->changeStatics2(ST_VSN_NORMAL);
+ }
+ }
+
+ g_vars->scene09_var10 = -1;
+
+ break;
+
+ case 29:
+ {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+
+ if (ani) {
+ if (ani->_id == ANI_PLEVATEL) {
+ sceneHandler09_spitterClick();
+ break;
+ }
+
+ if (ani->_id == ANI_VISUNCHIK) {
+ if (g_vars->scene09_numMovingHangers > 0) {
+ int hng = 0;
+
+ while (g_vars->scene09_hangers[hng]->ani != ani) {
+ ++hng;
+
+ if (hng >= g_vars->scene09_numMovingHangers)
+ break;
+ }
+
+ g_vars->scene09_var10 = hng;
+ g_vars->scene09_var11 = g_vars->scene09_hangers[hng]->phase;
+ g_vars->scene09_var12 = g_vars->scene09_hangers[hng]->phase;
+
+ g_vars->scene09_var19 = cmd->_y;
+
+ if (!g_vars->scene09_hangers[hng]->ani->_movement || g_vars->scene09_hangers[hng]->ani->_movement->_id != MV_VSN_CYCLE2) {
+ g_vars->scene09_hangers[hng]->ani->changeStatics2(ST_VSN_NORMAL);
+ g_vars->scene09_hangers[hng]->ani->startAnim(MV_VSN_CYCLE2, 0, -1);
+ g_vars->scene09_hangers[hng]->ani->_callback2 = 0;
+ }
+
+ ExCommand *ex = new ExCommand(0, 35, SND_9_018, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_field_14 = 1;
+ ex->_excFlags |= 2;
+ ex->postMessage();
+ }
+
+ break;
+ }
+ }
+
+ if (g_vars->scene09_var09 && g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC9_LADDER_R
+ && !cmd->_keyCode && !g_fp->_aniMan->_movement) {
+ handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC9_LADDER_R, 0), 0);
+ }
+
+ if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
+ int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+ if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+ if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
+ g_fp->processArcade(cmd);
+ }
+ }
+
+ break;
+ }
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe
Commit: aaf9ebfd680dd733ce11fbcd1943f177f4487a40
https://github.com/scummvm/scummvm/commit/aaf9ebfd680dd733ce11fbcd1943f177f4487a40
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-12T14:50:41-08:00
Commit Message:
FULLPIPE: Enable scene09
Changed paths:
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index a59269d..118821e 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -652,7 +652,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene08_updateCursor;
break;
-#if 0
case SC_9:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_9");
scene->preloadMovements(sceneVar);
@@ -663,7 +662,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
insertMessageHandler(sceneHandler09, 2, 2);
_updateCursorCallback = scene09_updateCursor;
break;
-#endif
case SC_10:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_10");
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 2352efb..7e1c45b 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -71,6 +71,10 @@ void scene08_setupMusic();
int sceneHandler08(ExCommand *cmd);
int scene08_updateCursor();
+int scene09_updateCursor();
+void scene09_initScene(Scene *sc);
+int sceneHandler09(ExCommand *cmd);
+
void scene10_initScene(Scene *sc);
int sceneHandler10(ExCommand *cmd);
int scene10_updateCursor();
More information about the Scummvm-git-logs
mailing list