[Scummvm-cvs-logs] scummvm master -> 9aa17f4cdea68d3e86190016cf6fea9bbf0e6674
sev-
sev at scummvm.org
Wed Apr 2 14:11:17 CEST 2014
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c08a4fdba1 FULLPIPE: Implement sceneHandler29_shootRed()
9aa17f4cde FULLPIPE: Implement sceneHandler29_sub03()
Commit: c08a4fdba13319b1af96e120297d4aee792f360f
https://github.com/scummvm/scummvm/commit/c08a4fdba13319b1af96e120297d4aee792f360f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-02T15:10:28+03:00
Commit Message:
FULLPIPE: Implement sceneHandler29_shootRed()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene29.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 8e3803b..0d1db26 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1305,8 +1305,8 @@ namespace Fullpipe {
#define MV_PTR_MOVEFAST 2102
#define MV_SHG_HITASS 2151
#define MV_SHG_NORM 2117
-#define MV_SHG_NORM 2117
#define MV_SHR_HITASS 2152
+#define MV_SHR_NORM 2131
#define MV_STR1_SHOOT 2109
#define MV_STR2_SHOOT 2112
#define PIC_SC29_LTRUBA 2081
diff --git a/engines/fullpipe/scenes/scene29.cpp b/engines/fullpipe/scenes/scene29.cpp
index 5b14a3f..2145490 100644
--- a/engines/fullpipe/scenes/scene29.cpp
+++ b/engines/fullpipe/scenes/scene29.cpp
@@ -249,7 +249,76 @@ void sceneHandler29_shootGreen() {
}
void sceneHandler29_shootRed() {
- warning("STUB: sceneHandler29_shootRed()");
+ if (g_vars->scene29_var05.numBalls) {
+ int x = g_vars->scene29_shooter1->_ox - 101;
+ int y = g_vars->scene29_shooter1->_oy - 14;
+ StaticANIObject *ani = g_vars->scene29_var05.pHead->ani;
+ Ball *oldhead = g_vars->scene29_var05.pHead;
+ Ball *oldp0 = g_vars->scene29_var05.pHead->p0;
+
+ g_vars->scene29_var05.pHead = g_vars->scene29_var05.pHead->p0;
+
+ if (g_vars->scene29_var05.pHead)
+ oldp0->p1 = 0;
+ else
+ g_vars->scene29_var05.field_8 = 0;
+
+ oldhead->p0 = g_vars->scene29_var05.pTail;
+
+ g_vars->scene29_var05.pTail = oldhead;
+ g_vars->scene29_var05.numBalls--;
+
+ if (!g_vars->scene29_var05.numBalls) {
+ g_vars->scene29_var05.numBalls = 0;
+ g_vars->scene29_var05.pTail = 0;
+ g_vars->scene29_var05.field_8 = 0;
+ g_vars->scene29_var05.pHead = 0;
+
+ free(g_vars->scene29_var05.cPlex);
+ g_vars->scene29_var05.cPlex = 0;
+ }
+
+ ani->show1(x, y, MV_SHR_NORM, 0);
+ ani->_priority = 5;
+
+ Ball *runPtr = g_vars->scene29_var07.pTail;
+ Ball *lastP = g_vars->scene29_var07.field_8;
+
+ if (!g_vars->scene29_var07.pTail) {
+ g_vars->scene29_var07.cPlex = (byte *)calloc(g_vars->scene29_var07.cPlexLen, sizeof(Ball));
+
+ byte *p1 = g_vars->scene29_var07.cPlex + (g_vars->scene29_var07.cPlexLen - 1) * sizeof(Ball);
+
+ if (g_vars->scene29_var07.cPlexLen - 1 < 0) {
+ runPtr = g_vars->scene29_var07.pTail;
+ } else {
+ runPtr = g_vars->scene29_var07.pTail;
+
+ for (int j = 0; j < g_vars->scene29_var07.cPlexLen; j++) {
+ ((Ball *)p1)->p1 = runPtr;
+ runPtr = (Ball *)p1;
+
+ p1 -= sizeof(Ball);
+ }
+
+ g_vars->scene29_var07.pTail = runPtr;
+ }
+ }
+ g_vars->scene29_var07.pTail = runPtr->p0;
+ runPtr->p1 = lastP;
+ runPtr->p0 = 0;
+ runPtr->ani = ani;
+
+ g_vars->scene29_var07.numBalls++;
+
+ if (g_vars->scene29_var07.field_8) {
+ g_vars->scene29_var07.field_8->p0 = runPtr;
+ g_vars->scene29_var07.field_8 = runPtr;
+ } else {
+ g_vars->scene29_var07.pHead = runPtr;
+ g_vars->scene29_var07.field_8 = runPtr;
+ }
+ }
}
void sceneHandler29_manJump() {
Commit: 9aa17f4cdea68d3e86190016cf6fea9bbf0e6674
https://github.com/scummvm/scummvm/commit/9aa17f4cdea68d3e86190016cf6fea9bbf0e6674
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-04-02T15:10:28+03:00
Commit Message:
FULLPIPE: Implement sceneHandler29_sub03()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene29.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 0d1db26..5a291df 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1304,8 +1304,10 @@ namespace Fullpipe {
#define MV_MAN29_STANDUP_NORM 2093
#define MV_PTR_MOVEFAST 2102
#define MV_SHG_HITASS 2151
+#define MV_SHG_HITMAN 2147
#define MV_SHG_NORM 2117
#define MV_SHR_HITASS 2152
+#define MV_SHR_HITMAN 2149
#define MV_SHR_NORM 2131
#define MV_STR1_SHOOT 2109
#define MV_STR2_SHOOT 2112
@@ -1319,6 +1321,8 @@ namespace Fullpipe {
#define QU_SC29_MANFROM_R 2104
#define QU_SC29_MANTO_L 2103
#define QU_SC29_MANTO_R 2100
+#define SND_29_014 4348
+#define SND_29_027 4757
#define SND_29_028 4758
#define SND_29_029 4759
#define ST_ASS_NORM 2122
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 3fe8704..55d67ab 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -1469,5 +1469,9 @@ Ball *BallChain::sub04(Ball *ballP, Ball *ballN) {
return pTail;
}
+void BallChain::sub05(Ball *ball) {
+ warning("STUB: BallChain::sub05");
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index ef6af54..a0701f2 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -232,6 +232,7 @@ struct BallChain {
void init(Ball **ball);
Ball *sub04(Ball *ballP, Ball *ballN);
+ void sub05(Ball *ball);
void reset() { pHead = 0; pTail = 0; field_8 = 0; numBalls = 0; free(cPlex); cPlex = 0; cPlexLen = 0; }
};
diff --git a/engines/fullpipe/scenes/scene29.cpp b/engines/fullpipe/scenes/scene29.cpp
index 2145490..c893850 100644
--- a/engines/fullpipe/scenes/scene29.cpp
+++ b/engines/fullpipe/scenes/scene29.cpp
@@ -452,8 +452,154 @@ void sceneHandler29_manHit() {
}
}
+void sceneHandler29_assHitRed() {
+ if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
+ g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
+ g_vars->scene29_ass->startAnim(MV_ASS_HITRED, 0, -1);
+ }
+}
+
+void sceneHandler29_assHitGreen() {
+ if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
+ g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
+ g_vars->scene29_ass->startAnim(MV_ASS_HITGREEN, 0, -1);
+ }
+}
+
void sceneHandler29_sub03() {
- warning("STUB: sceneHandler29_sub03()");
+ Ball *ball = g_vars->scene29_var08.pHead;
+ Ball *newball;
+ int x, y;
+
+ while (ball) {
+ x = ball->ani->_ox - 30;
+ y = ball->ani->_oy;
+
+ if (x >= 186) {
+ if (sceneHandler29_sub16(ball->ani, x)) {
+ newball = g_vars->scene29_var05.sub04(g_vars->scene29_var05.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_var05.field_8)
+ g_vars->scene29_var05.field_8->p0 = newball;
+ else
+ g_vars->scene29_var05.pHead = newball;
+
+ g_vars->scene29_var05.field_8 = newball;
+
+ if (ball == g_vars->scene29_var08.pHead)
+ g_vars->scene29_var08.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_var08.field_8)
+ g_vars->scene29_var08.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_var08.init(&ball);
+
+ sceneHandler29_manHit();
+
+ g_fp->playSound(SND_29_014, 0);
+
+ ball->ani->startAnim(MV_SHG_HITMAN, 0, -1);
+
+ g_vars->scene29_var18 = ball->ani->_id;
+ } else {
+ ball->ani->setOXY(x, y);
+ }
+ } else {
+ newball = g_vars->scene29_var05.sub04(g_vars->scene29_var05.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_var05.field_8)
+ g_vars->scene29_var05.field_8->p0 = newball;
+ else
+ g_vars->scene29_var05.pHead = newball;
+
+ g_vars->scene29_var05.field_8 = newball;
+
+ ball->ani->hide();
+
+ if (ball == g_vars->scene29_var08.pHead)
+ g_vars->scene29_var08.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_var08.field_8)
+ g_vars->scene29_var08.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_var08.init(&ball);
+
+ sceneHandler29_assHitGreen();
+ }
+
+ ball = ball->p0;
+ }
+
+ ball = g_vars->scene29_var07.pHead;
+
+ while (ball) {
+ x = ball->ani->_ox - 30;
+ y = ball->ani->_oy;
+
+ if (x >= 147) {
+ if (sceneHandler29_sub15(ball->ani, x)) {
+ newball = g_vars->scene29_var06.sub04(g_vars->scene29_var06.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_var06.field_8)
+ g_vars->scene29_var06.field_8->p0 = newball;
+ else
+ g_vars->scene29_var06.pHead = newball;
+
+ g_vars->scene29_var06.field_8 = newball;
+
+ g_vars->scene29_var07.sub05(ball);
+
+ sceneHandler29_manHit();
+
+ g_fp->playSound(SND_29_027, 0);
+
+ ball->ani->startAnim(MV_SHR_HITMAN, 0, -1);
+
+ g_vars->scene29_var18 = ball->ani->_id;
+ } else {
+ ball->ani->setOXY(x, y);
+ }
+ } else {
+ newball = g_vars->scene29_var06.sub04(g_vars->scene29_var06.field_8, 0);
+ newball->ani = ball->ani;
+
+ if (g_vars->scene29_var06.field_8)
+ g_vars->scene29_var06.field_8->p0 = newball;
+ else
+ g_vars->scene29_var06.pHead = newball;
+
+ g_vars->scene29_var06.field_8 = newball;
+
+ ball->ani->hide();
+
+ if (ball == g_vars->scene29_var07.pHead)
+ g_vars->scene29_var07.pHead = ball->p0;
+ else
+ ball->p1->p0 = ball->p0;
+
+ if (ball == g_vars->scene29_var07.field_8)
+ g_vars->scene29_var07.field_8 = ball->p1;
+ else
+ ball->p0->p1 = ball->p1;
+
+ g_vars->scene29_var07.init(&ball);
+
+ sceneHandler29_assHitRed();
+ }
+
+ ball = ball->p0;
+ }
}
void sceneHandler29_manFromL() {
@@ -603,20 +749,6 @@ void sceneHandler29_sub07() {
g_fp->_aniMan->setOXY(g_vars->scene29_var20, g_vars->scene29_var21);
}
-void sceneHandler29_assHitGreen() {
- if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
- g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
- g_vars->scene29_ass->startAnim(MV_ASS_HITGREEN, 0, -1);
- }
-}
-
-void sceneHandler29_assHitRed() {
- if (g_vars->scene29_ass->_statics->_staticsId == ST_ASS_NORM) {
- g_vars->scene29_ass->changeStatics2(ST_ASS_NORM);
- g_vars->scene29_ass->startAnim(MV_ASS_HITRED, 0, -1);
- }
-}
-
void sceneHandler29_shoot() {
if (g_vars->scene29_var10 && g_vars->scene29_var20 < 1310) {
if (g_fp->_rnd->getRandomNumber(1) || g_vars->scene29_shooter1->_movement || g_vars->scene29_shooter1->_statics->_staticsId != ST_STR1_RIGHT) {
More information about the Scummvm-git-logs
mailing list