[Scummvm-cvs-logs] scummvm master -> f5ffef7b66230aa4d147ec6c0fdc2fea14244677
sev-
sev at scummvm.org
Mon Feb 3 14:47:20 CET 2014
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8f9bc161f4 FULLPIPE: Plug scene27 in
a7c0495d70 FULLPIPE: Implement sceneHandler27()
f5ffef7b66 FULLPIPE: Implement sceneHandler27_aimDude()
Commit: 8f9bc161f46b1b337c8a64254811b144dfebd9cd
https://github.com/scummvm/scummvm/commit/8f9bc161f46b1b337c8a64254811b144dfebd9cd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00
Commit Message:
FULLPIPE: Plug scene27 in
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/module.mk
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene27.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index f22505a..cc09d9e 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1083,6 +1083,16 @@ namespace Fullpipe {
#define ST_VNT26_RIGHT2 3348
#define ST_VNT26_UP2 1948
+// Scene 27
+#define ANI_BITA 2026
+#define ANI_BITAHANDLER 3349
+#define ANI_MAID 2015
+#define ANI_VODILLA 1994
+#define PIC_SC27_HITZONE2 4756
+#define ST_MID_BROOM 2022
+#define ST_MID_SPADE 3489
+#define ST_MID_SWAB2 2019
+
// Scene 28
#define ANI_LIFT 982
#define ANI_LIFT_28 4238
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index f6a94de..0299934 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -49,6 +49,7 @@ MODULE_OBJS = \
scenes/scene24.o \
scenes/scene25.o \
scenes/scene26.o \
+ scenes/scene27.o \
scenes/scene28.o \
scenes/scene30.o \
scenes/scene31.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 71c8b1e..9075dba 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -300,6 +300,24 @@ Vars::Vars() {
scene26_sock = 0;
scene26_activeVent = 0;
+ scene27_var01 = 0;
+ scene27_var02 = 0;
+ scene27_var03 = 0;
+ scene27_var04 = 0;
+ scene27_hitZone = 0;
+ scene27_driver = 0;
+ scene27_maid = 0;
+ scene27_batHandler = 0;
+ scene27_var15 = 0;
+ scene27_bat = 0;
+ scene27_var08 = 0;
+ scene27_var09 = 0;
+ scene27_var10 = 0;
+ scene27_var11 = 0;
+ scene27_var12 = 0;
+ scene27_var13 = 0;
+ scene27_launchPhase = 0;
+
scene28_fliesArePresent = true;
scene28_beardedDirection = true;
scene28_darkeningObject = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 5f77f74..1f119b6 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -25,6 +25,7 @@
namespace Fullpipe {
+struct Bat;
struct BehaviorEntryInfo;
class MGM;
class MctlLadder;
@@ -183,6 +184,26 @@ int sceneHandlerFinal(ExCommand *cmd);
void sceneDbgMenu_initScene(Scene *sc);
int sceneHandlerDbgMenu(ExCommand *cmd);
+struct Ball {
+ Ball *p0;
+ Ball *p1;
+ StaticANIObject *ani;
+
+ Ball() : p0(0), p1(0), ani(0) {}
+};
+
+struct BallChain {
+ Ball *pHead;
+ Ball *field_8;
+ int numBalls;
+ Ball *pTail;
+ Ball *cPlex;
+ int cPlexLen;
+
+ BallChain() : pHead(0), field_8(0), pTail(0), numBalls(0), cPlex(0), cPlexLen(0) {}
+ ~BallChain() { free(cPlex); }
+};
+
class Vars {
public:
Vars();
@@ -461,6 +482,27 @@ public:
StaticANIObject *scene26_sock;
StaticANIObject *scene26_activeVent;
+ int scene27_var01;
+ int scene27_var02;
+ int scene27_var03;
+ int scene27_var04;
+ PictureObject *scene27_hitZone;
+ StaticANIObject *scene27_driver;
+ StaticANIObject *scene27_maid;
+ StaticANIObject *scene27_batHandler;
+ int scene27_var15;
+ StaticANIObject *scene27_bat;
+ int scene27_var08;
+ int scene27_var09;
+ int scene27_var10;
+ int scene27_var11;
+ int scene27_var12;
+ int scene27_var13;
+ int scene27_launchPhase;
+ BallChain scene27_balls;
+ Common::List<Bat *> scene27_bats;
+ Common::List<Bat *> scene27_var07;
+
bool scene28_fliesArePresent;
bool scene28_beardedDirection;
PictureObject *scene28_darkeningObject;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 8d55a63..2f00878 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -36,6 +36,18 @@
namespace Fullpipe {
+struct Bat {
+ StaticANIObject *ani;
+ int field_4;
+ double power;
+ int field_10;
+ int field_14;
+ double currX;
+ double currY;
+ double powerCos;
+ double powerSin;
+};
+
void scene27_initScene(Scene *sc) {
g_vars->scene27_var01 = 200;
g_vars->scene27_var02 = 200;
@@ -50,10 +62,13 @@ void scene27_initScene(Scene *sc) {
g_vars->scene27_balls.pTail = 0;
g_vars->scene27_balls.field_8 = 0;
g_vars->scene27_balls.pHead = 0;
- CPlex::FreeDataChain(g_vars->scene27_balls.cPlex);
+ g_vars->scene27_balls.cPlexLen = 10;
+
+ free(g_vars->scene27_balls.cPlex);
g_vars->scene27_balls.cPlex = 0;
- scene27_bats.clear();
- scene27_var07.clear();
+
+ g_vars->scene27_bats.clear();
+ g_vars->scene27_var07.clear();
g_vars->scene27_var15 = 1;
g_vars->scene27_bat = sc->getStaticANIObject1ById(ANI_BITA, -1);
@@ -61,39 +76,43 @@ void scene27_initScene(Scene *sc) {
for (int i = 0; i < 4; i++) {
StaticANIObject *newbat = new StaticANIObject(g_vars->scene27_bat);
- v5 = g_vars->scene27_balls.pTail;
- v6 = g_vars->scene27_balls.field_8;
+ Ball *runPtr = g_vars->scene27_balls.pTail;
+ Ball *lastP = g_vars->scene27_balls.field_8;
if (!g_vars->scene27_balls.pTail) {
- v7 = CPlex::Create(&g_vars->scene27_balls.cPlex, g_vars->scene27_balls.cPlexLen, 12) + 4 + 12 * g_vars->scene27_balls.cPlexLen - 12;
+ g_vars->scene27_balls.cPlex = (Ball *)calloc(g_vars->scene27_balls.cPlexLen, sizeof(Ball));
+
+ Ball *p1 = g_vars->scene27_balls.cPlex + (g_vars->scene27_balls.cPlexLen - 1) * sizeof(Ball);
+
if (g_vars->scene27_balls.cPlexLen - 1 < 0) {
- v5 = g_vars->scene27_balls.pTail;
+ runPtr = g_vars->scene27_balls.pTail;
} else {
- v8 = g_vars->scene27_balls.cPlexLen;
- v5 = g_vars->scene27_balls.pTail;
- do {
- *(_DWORD *)v7 = v5;
- v5 = (Ball *)v7;
- v7 -= 12;
- --v8;
- } while (v8);
-
- g_vars->scene27_balls.pTail = v5;
+ runPtr = g_vars->scene27_balls.pTail;
+
+ for (int j = 0; j < g_vars->scene27_balls.cPlexLen; j++) {
+ p1->p1 = runPtr;
+ runPtr = p1;
+
+ p1 -= sizeof(Ball);
+ }
+
+ g_vars->scene27_balls.pTail = runPtr;
}
}
- g_vars->scene27_balls.pTail = v5->pNext;
- v5->pPrev = v6;
- v5->pNext = 0;
- ++g_vars->scene27_balls.numBalls;
- v5->ani = 0;
- v5->ani = newbat;
+ g_vars->scene27_balls.pTail = runPtr->p0;
+ runPtr->p1 = lastP;
+ runPtr->p0 = 0;
+ runPtr->ani = newbat;
+
+ g_vars->scene27_balls.numBalls++;
if (g_vars->scene27_balls.field_8)
- g_vars->scene27_balls.field_8->pNext = v5;
+ g_vars->scene27_balls.field_8->p0 = runPtr;
else
- g_vars->scene27_balls.pHead = v5;
- g_vars->scene27_balls.field_8 = v5;
+ g_vars->scene27_balls.pHead = runPtr;
+
+ g_vars->scene27_balls.field_8 = runPtr;
sc->addStaticANIObject(newbat, 1);
}
@@ -106,15 +125,15 @@ void scene27_initScene(Scene *sc) {
g_vars->scene27_var13 = 0;
g_vars->scene27_launchPhase = 0;
- oldsc = g_fp->_currentScene;
+ Scene *oldsc = g_fp->_currentScene;
g_fp->_currentScene = sc;
if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
- StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_SWAB2);
+ g_vars->scene27_maid->changeStatics2(ST_MID_SWAB2);
} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithBroom)) {
- StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_BROOM);
+ g_vars->scene27_maid->changeStatics2(ST_MID_BROOM);
} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSpade)) {
- StaticANIObject_changeStatics2(g_vars->scene27_maid, ST_MID_SPADE);
+ g_vars->scene27_maid->changeStatics2(ST_MID_SPADE);
}
g_fp->_currentScene = oldsc;
Commit: a7c0495d70f11981e6366a830c4b5178ab1e3ad1
https://github.com/scummvm/scummvm/commit/a7c0495d70f11981e6366a830c4b5178ab1e3ad1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00
Commit Message:
FULLPIPE: Implement sceneHandler27()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene27.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index cc09d9e..b148083 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1088,7 +1088,16 @@ namespace Fullpipe {
#define ANI_BITAHANDLER 3349
#define ANI_MAID 2015
#define ANI_VODILLA 1994
+#define MSG_SC27_CLICKBET 2048
+#define MSG_SC27_HANDLERTOBACK 3372
+#define MSG_SC27_HANDLERTOFRONT 3371
+#define MSG_SC27_SHOWNEXTBET 3369
+#define MSG_SC27_STARTBET 2047
+#define MSG_SC27_STARTWIPE 2057
+#define MSG_SC27_TAKEVENT 4584
+#define MV_MAN27_FLOW 1990
#define PIC_SC27_HITZONE2 4756
+#define SND_27_027 4128
#define ST_MID_BROOM 2022
#define ST_MID_SPADE 3489
#define ST_MID_SWAB2 2019
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index 2f00878..c3cba7f 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -157,4 +157,129 @@ int scene27_updateCursor() {
return g_fp->_cursorId;
}
+void sceneHandler27_winArcade() {
+ warning("STUB: sceneHandler27_winArcade()");
+}
+
+void sceneHandler27_takeVent() {
+ warning("STUB: sceneHandler27_takeVent()");
+}
+
+void sceneHandler27_showNextBat() {
+ warning("STUB: sceneHandler27_showNextBat()");
+}
+
+void sceneHandler27_clickBat(ExCommand *cmd) {
+ warning("STUB: sceneHandler27_clickBat()");
+}
+
+void sceneHandler27_startBat(StaticANIObject *bat) {
+ warning("STUB: sceneHandler27_startBat()");
+}
+
+void sceneHandler27_startAiming() {
+ warning("STUB: sceneHandler27_startAiming()");
+}
+
+void sceneHandler27_sub04(ExCommand *cmd) {
+ warning("STUB: sceneHandler27_sub04()");
+}
+
+void sceneHandler27_aimDude() {
+ warning("STUB: sceneHandler27_aimDude()");
+}
+
+void sceneHandler27_throwBat() {
+ warning("STUB: sceneHandler27_throwBat()");
+}
+
+void sceneHandler27_animateBats() {
+ warning("STUB: sceneHandler27_animateBats()");
+}
+
+
+
+int sceneHandler27(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_CMN_WINARCADE:
+ sceneHandler27_winArcade();
+ break;
+
+ case MSG_SC27_TAKEVENT:
+ sceneHandler27_takeVent();
+ break;
+
+ case MSG_SC27_SHOWNEXTBET:
+ sceneHandler27_showNextBat();
+ break;
+
+ case MSG_SC27_HANDLERTOFRONT:
+ g_vars->scene27_batHandler->_priority = 1005;
+ break;
+
+ case MSG_SC27_STARTWIPE:
+ g_vars->scene27_var10 = 1;
+
+ g_fp->playSound(SND_27_027, 0);
+
+ break;
+
+ case MSG_SC27_CLICKBET:
+ sceneHandler27_clickBat(cmd);
+ break;
+
+ case MSG_SC27_STARTBET:
+ if (g_vars->scene27_bat)
+ sceneHandler27_startBat(g_vars->scene27_bat);
+
+ break;
+
+ case 30:
+ if (g_vars->scene27_var08)
+ sceneHandler27_startAiming();
+
+ break;
+
+ case 29:
+ if (g_fp->_aniMan == g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y)
+ && g_vars->scene27_var09)
+ sceneHandler27_sub04(cmd);
+
+ break;
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x < g_fp->_sceneRect.left + g_vars->scene27_var01)
+ g_fp->_currentScene->_x = x - g_vars->scene27_var03 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - g_vars->scene27_var01)
+ g_fp->_currentScene->_x = x + g_vars->scene27_var03 - g_fp->_sceneRect.right;
+ }
+
+ if (g_vars->scene27_var08)
+ sceneHandler27_aimDude();
+
+ if (g_vars->scene27_var10) {
+ sceneHandler27_throwBat();
+
+ if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT)
+ g_fp->_aniMan->startAnim(MV_MAN27_FLOW, 0, -1);
+ }
+
+ sceneHandler27_animateBats();
+
+ g_fp->_behaviorManager->updateBehaviors();
+ g_fp->startSceneTrack();
+
+ break;
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe
Commit: f5ffef7b66230aa4d147ec6c0fdc2fea14244677
https://github.com/scummvm/scummvm/commit/f5ffef7b66230aa4d147ec6c0fdc2fea14244677
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-02-03T05:46:39-08:00
Commit Message:
FULLPIPE: Implement sceneHandler27_aimDude()
Changed paths:
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene27.cpp
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 9075dba..faa0cc6 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -316,6 +316,7 @@ Vars::Vars() {
scene27_var11 = 0;
scene27_var12 = 0;
scene27_var13 = 0;
+ scene27_var16 = 0;
scene27_launchPhase = 0;
scene28_fliesArePresent = true;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 1f119b6..99c061e 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -498,6 +498,7 @@ public:
int scene27_var11;
int scene27_var12;
int scene27_var13;
+ int scene27_var16;
int scene27_launchPhase;
BallChain scene27_balls;
Common::List<Bat *> scene27_bats;
diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp
index c3cba7f..46eebba 100644
--- a/engines/fullpipe/scenes/scene27.cpp
+++ b/engines/fullpipe/scenes/scene27.cpp
@@ -186,7 +186,16 @@ void sceneHandler27_sub04(ExCommand *cmd) {
}
void sceneHandler27_aimDude() {
- warning("STUB: sceneHandler27_aimDude()");
+ int phase = (g_vars->scene27_var16 - g_fp->_mouseScreenPos.x) / 20 + 6;
+
+ if (phase < 6)
+ phase = 6;
+
+ if (phase > 11)
+ phase = 11;
+
+ if (g_fp->_aniMan->_movement)
+ g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
}
void sceneHandler27_throwBat() {
More information about the Scummvm-git-logs
mailing list