From e136183a35c6fc8927883ba94a0554b06d69c90b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 13 Dec 2013 15:59:29 +0200 Subject: FULLPIPE: Implement sceneHandler04_leaveScene() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene04.cpp | 27 ++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 1a59cce787..31ca2d3d33 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -173,6 +173,7 @@ namespace Fullpipe { #define PIC_IN1_PIPETITLE 5167 #define PIC_INV_MENU 991 #define PIC_MAP_A13 5275 +#define PIC_MAP_P03 5279 #define PIC_MAP_S01 5223 #define PIC_SC1_KUCHKA 1321 #define PIC_SC1_LADDER 1091 @@ -209,6 +210,7 @@ namespace Fullpipe { #define QU_SC3_EXITLIFT 2808 #define QU_SC4_GOCLOCK 595 #define QU_SC4_MANFROMBOTTLE 2851 +#define QU_SC4_MANTOBOTTLE 2850 #define SC_1 301 #define SC_10 653 #define SC_11 654 diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 07ac109477..d0cab72fa3 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -652,8 +652,29 @@ void sceneHandler04_springWobble() { sceneHandler04_bottleUpdateObjects(oldDynIndex - g_vars->scene04_dynamicPhaseIndex); } -void sceneHandler04_sub5() { - warning("STUB: sceneHandler04_sub5()"); +void sceneHandler04_leaveScene() { + g_fullpipe->_aniMan2 = 0; + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC4_MANTOBOTTLE), 0, 0); + ExCommand *ex = 0; + + for (uint i = 0; i < mq->getCount(); i++) { + if (mq->getExCommandByIndex(i)->_messageKind == 27) { + ex = mq->getExCommandByIndex(i); + break; + } + } + + ex->_y = g_vars->scene04_bottle->_oy - 304; + + mq->chain(0); + + g_vars->scene04_var07 = 0; + g_vars->scene04_dudeOnLadder = 0; + + g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 0); + + g_fullpipe->updateMapPiece(PIC_MAP_P03, 1); } void sceneHandler04_liftBottle() { @@ -963,7 +984,7 @@ int sceneHandler04(ExCommand *ex) { sceneHandler04_springWobble(); if (g_vars->scene04_var07 && !g_vars->scene04_var09) - sceneHandler04_sub5(); + sceneHandler04_leaveScene(); if (g_vars->scene04_var12) sceneHandler04_liftBottle(); -- cgit v1.2.3 From c111eff575a979bcf43c80e5fffc1c303b5892fc Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 01:18:35 +0200 Subject: FULLPIPE: Implement sceneHandler04_shootKozyawka() --- engines/fullpipe/constants.h | 3 + engines/fullpipe/scenes/scene04.cpp | 114 +++++++++++++++++++++++++++++++++++- 2 files changed, 116 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 31ca2d3d33..6e9f117fb9 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -277,6 +277,7 @@ namespace Fullpipe { #define ST_HND_EMPTY 603 #define ST_IN1MAN_SLEEP 5112 #define ST_KZW_EMPTY 498 +#define ST_KZW_RIGHT 559 #define ST_LBN_0N 2832 #define ST_LBN_0P 2833 #define ST_LBN_1N 2753 @@ -301,12 +302,14 @@ namespace Fullpipe { #define ST_MAN_GOLADDER2 2843 #define ST_MAN_EMPTY 476 #define ST_MAN_LADDERDOWN 521 +#define ST_MAN_LOOKPLANK 555 #define ST_MAN_ONPLANK 552 #define ST_MAN_RIGHT 325 #define ST_MAN_SIT 1164 #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 #define ST_PNK_WEIGHTLEFT 503 +#define ST_PNK_WEIGHTRIGHT 504 #define ST_SPR_UP 544 #define TrubaDown 697 #define TrubaLeft 474 diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index d0cab72fa3..f5b376e002 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -549,8 +549,120 @@ void sceneHandler04_raisePlank() { g_vars->scene04_plank->startAnim(MV_PNK_WEIGHTLEFT, 0, -1); } +MessageQueue *sceneHandler04_kozFly3(StaticANIObject *ani, double phase) { + warning("STUB: sceneHandler04_kozFly3()"); + + return 0; +} + +MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { + warning("STUB: sceneHandler04_kozFly5()"); + + return 0; +} + +MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { + warning("STUB: sceneHandler04_kozFly6()"); + + return 0; +} + +MessageQueue *sceneHandler04_kozFly7(StaticANIObject *ani, double phase) { + warning("STUB: sceneHandler04_kozFly7()"); + + return 0; +} + +static const int kozTrajectory3[] = { + 3, 2, 0, + 3, 2, 0, + 3, 2, 0 +}; + +static const int kozTrajectory4[] = { + 5, 3, 1, + 5, 4, 1, + 5, 3, 1 +}; + +static const int kozTrajectory5[] = { + 6, 5, 4, + 6, 5, 4, + 6, 5, 4 +}; + +static const int kozTrajectory6[] = { + 7, 6, 5, + 7, 6, 5, + 7, 6, 5 +}; + void sceneHandler04_shootKozyawka() { - warning("STUB: sceneHandler04_shootKozyawka()"); + g_vars->scene04_plank->changeStatics2(ST_PNK_WEIGHTRIGHT); + + if (!g_vars->scene04_walkingKozyawka) + return; + + if (g_vars->scene04_walkingKozyawka->_movement) { + if (g_vars->scene04_walkingKozyawka->_movement->_id == MV_KZW_WALKPLANK) { + int dphase = g_vars->scene04_walkingKozyawka->_movement->_currDynamicPhaseIndex; + + if (dphase < 41) { + int col = 3 * dphase / 15; + if (col > 2) + col = 2; + + int row = g_vars->scene04_kozyawkiAni.size(); + if (row > 2) + row = 2; + + int idx = 3 * row + col; + int phase; + + if (g_vars->scene04_ladderOffset == 3) { + phase = kozTrajectory3[idx]; + } else if (g_vars->scene04_ladderOffset == 4) { + phase = kozTrajectory4[idx]; + } else { + if (g_vars->scene04_ladderOffset == 5) + phase = kozTrajectory5[idx]; + else + phase = kozTrajectory6[idx]; + } + + g_vars->scene04_walkingKozyawka->queueMessageQueue(0); + g_vars->scene04_walkingKozyawka->_movement = 0; + g_vars->scene04_walkingKozyawka->_statics = g_vars->scene04_walkingKozyawka->getStaticsById(ST_KZW_RIGHT); + + MessageQueue *mq; + + if (phase > 2) { + if (phase > 5) { + if (phase == 6) + mq = sceneHandler04_kozFly6(g_vars->scene04_walkingKozyawka); + else + mq = sceneHandler04_kozFly7(g_vars->scene04_walkingKozyawka, (double)(phase - 6) * 0.3333333333333333); + } else { + mq = sceneHandler04_kozFly5(g_vars->scene04_walkingKozyawka, (double)(phase - 2) * 0.3333333333333333); + } + } else { + mq = sceneHandler04_kozFly3(g_vars->scene04_walkingKozyawka, (double)phase * 0.5); + } + + if (mq) { + g_vars->scene04_var24 = g_vars->scene04_walkingKozyawka; + + if (!mq->chain(g_vars->scene04_walkingKozyawka) ) + delete mq; + } + } + } + } + + if (g_vars->scene04_ladderOffset > 3) + g_fullpipe->_aniMan->changeStatics1(ST_MAN_LOOKPLANK); + + g_vars->scene04_var04 = 1; } void sceneHandler04_showCoin() { -- cgit v1.2.3 From 2ab8287f202995fd635f86813163cef12cf1b5f6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 12:49:30 +0200 Subject: FULLPIPE: Implement sceneHandler04_kozFly3() --- engines/fullpipe/constants.h | 4 ++++ engines/fullpipe/scenes/scene04.cpp | 47 +++++++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 6e9f117fb9..dcc9974af9 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -115,6 +115,8 @@ namespace Fullpipe { #define MV_BTN_CLICK 599 #define MV_CLK_GO 589 #define MV_HND_POINT 602 +#define MV_KZW_STANDUP 563 +#define MV_KZW_TURN 562 #define MV_MAN_GOD 481 #define MV_MAN_GOLADDER 451 #define MV_MAN_GOLADDER2 2844 @@ -278,6 +280,7 @@ namespace Fullpipe { #define ST_IN1MAN_SLEEP 5112 #define ST_KZW_EMPTY 498 #define ST_KZW_RIGHT 559 +#define ST_KZW_SIT 560 #define ST_LBN_0N 2832 #define ST_LBN_0P 2833 #define ST_LBN_1N 2753 @@ -316,6 +319,7 @@ namespace Fullpipe { #define TrubaRight 696 #define TrubaUp 680 #define rMV_MAN_LOOKUP 4775 +#define rMV_KZW_GOR 566 } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index f5b376e002..d3abe32a8b 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -550,9 +550,52 @@ void sceneHandler04_raisePlank() { } MessageQueue *sceneHandler04_kozFly3(StaticANIObject *ani, double phase) { - warning("STUB: sceneHandler04_kozFly3()"); + MGM mgm; + MGMInfo mgminfo; - return 0; + mgm.addItem(ANI_KOZAWKA); + + mgminfo.ani = ani; + mgminfo.staticsId2 = ST_KZW_SIT; + mgminfo.x1 = (int)(723.0 - phase * 185.0); + mgminfo.y1 = 486; + mgminfo.field_1C = 10; + mgminfo.field_10 = 1; + mgminfo.flags = 78; + mgminfo.movementId = MV_KZW_JUMP; + + MessageQueue *mq = mgm.genMovement(&mgminfo); + + if (mq) { + ExCommand *ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_STANDUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_TURN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + for (int i = 0; i < 5; i++) { + ex = new ExCommand(ANI_KOZAWKA, 1, rMV_KZW_GOR, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_KOZAWKA, 6, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 17, MSG_KOZAWRESTART, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + return mq; } MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { -- cgit v1.2.3 From f57ce931fd9c0862251ce4e39fe3170446021166 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 13:14:00 +0200 Subject: FULLPIPE: Implement sceneHandler04_kozFly5() --- engines/fullpipe/constants.h | 3 ++ engines/fullpipe/motion.h | 2 ++ engines/fullpipe/scenes/scene04.cpp | 65 +++++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index dcc9974af9..b0b6202caa 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -115,6 +115,8 @@ namespace Fullpipe { #define MV_BTN_CLICK 599 #define MV_CLK_GO 589 #define MV_HND_POINT 602 +#define MV_KZW_JUMPHIT 2857 +#define MV_KZW_JUMPOUT 586 #define MV_KZW_STANDUP 563 #define MV_KZW_TURN 562 #define MV_MAN_GOD 481 @@ -279,6 +281,7 @@ namespace Fullpipe { #define ST_HND_EMPTY 603 #define ST_IN1MAN_SLEEP 5112 #define ST_KZW_EMPTY 498 +#define ST_KZW_JUMPOUT 587 #define ST_KZW_RIGHT 559 #define ST_KZW_SIT 560 #define ST_LBN_0N 2832 diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index b49fea55bc..21841af134 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -146,6 +146,8 @@ struct MGMInfo { int x2; int y2; int flags; + + MGMInfo() { memset(this, 0, sizeof(MGMInfo)); } }; class MGM : public CObject { diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index d3abe32a8b..a75d98d9cd 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -599,9 +599,70 @@ MessageQueue *sceneHandler04_kozFly3(StaticANIObject *ani, double phase) { } MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { - warning("STUB: sceneHandler04_kozFly5()"); + MGM mgm; + MGMInfo mgminfo; - return 0; + mgm.addItem(ANI_KOZAWKA); + + mgminfo.ani = ani; + mgminfo.staticsId2 = ST_KZW_JUMPOUT; + mgminfo.x1 = 525; + mgminfo.y1 = (int)(344.0 - (double)(320 - g_vars->scene04_bottle->_oy) * phase); + mgminfo.field_1C = 10; + mgminfo.field_10 = 1; + mgminfo.flags = 78; + mgminfo.movementId = MV_KZW_JUMPHIT; + + MessageQueue *mq1 = mgm.genMovement(&mgminfo); + + memset(&mgminfo, 0, sizeof(mgminfo)); + mgminfo.ani = ani; + mgminfo.staticsId1 = ST_KZW_JUMPOUT; + mgminfo.staticsId2 = ST_KZW_SIT; + mgminfo.x2 = 525; + mgminfo.y2 = (int)(344.0 - (double)(320 - g_vars->scene04_bottle->_oy) * phase); + mgminfo.y1 = 486; + mgminfo.field_1C = 10; + mgminfo.field_10 = 1; + mgminfo.flags = 117; + mgminfo.movementId = MV_KZW_JUMPOUT; + + MessageQueue *mq2 = mgm.genMovement(&mgminfo); + + if (mq1 && mq2) { + mq1->addExCommandToEnd(new ExCommand(mq2->getExCommandByIndex(0))); + + delete mq2; + + ExCommand *ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_STANDUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq1->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_TURN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq1->addExCommandToEnd(ex); + + for (int i = 0; i < 5; i++) { + ex = new ExCommand(ANI_KOZAWKA, 1, rMV_KZW_GOR, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq1->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_KOZAWKA, 6, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq1->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 17, MSG_KOZAWRESTART, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq1->addExCommandToEnd(ex); + } + + return mq1; } MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { -- cgit v1.2.3 From 7bc700ed276430606d39aac0a2c756c0b44788d2 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 13:36:29 +0200 Subject: FULLPIPE: Implement sceneHandler04_kozFly7() --- engines/fullpipe/scenes/scene04.cpp | 68 +++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index a75d98d9cd..6bcefa3086 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -671,10 +671,74 @@ MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { return 0; } +void sceneHandler04_kozMove(Movement *mov, int from, int to, Common::Point *points, double phase) { + for (int i = from; i < to; i++) { + mov->setDynamicPhaseIndex(i); + + Common::Point *p; + if (mov->_framePosOffsets) { + p = mov->_framePosOffsets[mov->_currDynamicPhaseIndex]; + } else { + p = &mov->_somePoint; + p->x = 0; + p->y = 0; + } + + p->y = (int)((double)points[i].y * phase); + } +} + MessageQueue *sceneHandler04_kozFly7(StaticANIObject *ani, double phase) { - warning("STUB: sceneHandler04_kozFly7()"); + MGM mgm; + MGMInfo mgminfo; - return 0; + mgm.addItem(ANI_KOZAWKA); + + mgminfo.ani = ani; + mgminfo.staticsId2 = 560; + mgminfo.x1 = (int)(250.0 - phase * 100.0); + mgminfo.y1 = 455; + mgminfo.field_1C = 10; + mgminfo.field_10 = 1; + mgminfo.flags = 78; + mgminfo.movementId = MV_KZW_JUMPROTATE; + + MessageQueue *mq = mgm.genMovement(&mgminfo); + + if (mq) { + sceneHandler04_kozMove(ani->getMovementById(MV_KZW_JUMPROTATE), 1, 9, g_vars->scene04_jumpRotateKozyawki, phase * 0.5 + 1.5); + + ani->_priority = 10; + + ExCommand *ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_STANDUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_TURN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + for (int i = 0; i < 2; i++) { + ex = new ExCommand(ANI_KOZAWKA, 1, rMV_KZW_GOR, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_KOZAWKA, 6, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 17, MSG_KOZAWRESTART, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + } + + return mq; } static const int kozTrajectory3[] = { -- cgit v1.2.3 From 87f69f078e483958e8263352ad2d8c5478fb3042 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 13:51:03 +0200 Subject: FULLPIPE: Implement sceneHandler04_kozFly6() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene04.cpp | 39 +++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b0b6202caa..ee89d4eec8 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -107,6 +107,7 @@ namespace Fullpipe { #define MSG_UPDATEBOTTLE 613 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 +#define MV_KZW_GOR 564 #define MV_KZW_JUMP 558 #define MV_KZW_JUMPROTATE 561 #define MV_KZW_TOHOLERV 537 @@ -117,6 +118,7 @@ namespace Fullpipe { #define MV_HND_POINT 602 #define MV_KZW_JUMPHIT 2857 #define MV_KZW_JUMPOUT 586 +#define MV_KZW_RAISEHEAD 577 #define MV_KZW_STANDUP 563 #define MV_KZW_TURN 562 #define MV_MAN_GOD 481 diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 6bcefa3086..78695cc33a 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -666,9 +666,44 @@ MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { } MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { - warning("STUB: sceneHandler04_kozFly6()"); + MGM mgm; + MGMInfo mgminfo; - return 0; + mgm.addItem(ANI_KOZAWKA); + + mgminfo.ani = ani; + mgminfo.staticsId2 = ST_KZW_SIT; + mgminfo.x1 = 397 - 4 * g_fullpipe->_rnd->getRandomNumber(1); + mgminfo.field_1C = ani->_priority; + mgminfo.y1 = g_vars->scene04_bottle->_oy - 4 * g_fullpipe->_rnd->getRandomNumber(1) + 109; + mgminfo.field_10 = 1; + mgminfo.flags = 78; + mgminfo.movementId = MV_KZW_JUMPROTATE; + + MessageQueue *mq = mgm.genMovement(&mgminfo); + + if (mq) { + mq->deleteExCommandByIndex(mq->getCount() - 1, 1); + + ExCommand *ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_STANDUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_GOR, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(ANI_KOZAWKA, 1, MV_KZW_RAISEHEAD, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = ani->_okeyCode; + mq->addExCommandToEnd(ex); + + g_vars->scene04_var11 = 1; + } + + return mq; } void sceneHandler04_kozMove(Movement *mov, int from, int to, Common::Point *points, double phase) { -- cgit v1.2.3 From 2c5b5cbb92455bb37d3061facf5178531c7b9142 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 14:49:59 +0200 Subject: FULLPIPE: Implement sceneHandler04_sub8() --- engines/fullpipe/constants.h | 3 ++ engines/fullpipe/motion.cpp | 4 ++ engines/fullpipe/motion.h | 8 ++-- engines/fullpipe/scenes/scene04.cpp | 80 +++++++++++++++++++++++++++++++++++-- 4 files changed, 87 insertions(+), 8 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index ee89d4eec8..b2ebea6701 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -121,16 +121,19 @@ namespace Fullpipe { #define MV_KZW_RAISEHEAD 577 #define MV_KZW_STANDUP 563 #define MV_KZW_TURN 562 +#define MV_MAN_FROMLADDER 493 #define MV_MAN_GOD 481 #define MV_MAN_GOLADDER 451 #define MV_MAN_GOLADDER2 2844 #define MV_MAN_GOU 460 #define MV_MAN_JUMPONPLANK 551 #define MV_MAN_LOOKLADDER 520 +#define MV_MAN_LOOKLADDERRV 556 #define MV_MAN_LOOKUP 4773 #define MV_MAN_PLANKTOLADDER 553 #define MV_MAN_STARTLADDER 452 #define MV_MAN_STARTLADDER2 2842 +#define MV_MAN_STARTLADDERD 457 #define MV_MAN_STOPLADDER 454 #define MV_MAN_STOPLADDER2 2845 #define MV_MAN_TOLADDER 448 diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index fbe2768486..3451259893 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -309,6 +309,10 @@ MessageQueue *MctlLadder::doWalkTo(StaticANIObject *subj, int xpos, int ypos, in return 0; } +MessageQueue *MctlLadder::controllerWalkTo(StaticANIObject *ani, int off) { + return doWalkTo(ani, _objId + off * _ladder_field_18, _ladderY + off * _height, 1, 0); +} + MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, int destIndex, int connectionX, int connectionY, int sourceIndex, int *minDistancePtr) { warning("STUB: MctlCompound::findClosestConnectionPoint()"); diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index 21841af134..b1e4b69676 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -76,9 +76,7 @@ public: }; class MctlCompoundArrayItem : public CObject { - friend class MctlCompound; - -protected: +public: MotionController *_motionControllerObj; MovGraphReact *_movGraphReactObj; Common::Array _connectionPoints; @@ -96,9 +94,9 @@ class MctlCompoundArray : public Common::Array, public }; class MctlCompound : public MotionController { +public: MctlCompoundArray _motionControllers; - public: MctlCompound() { _objtype = kObjTypeMctlCompound; } virtual bool load(MfcArchive &file); @@ -204,6 +202,8 @@ public: virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId); virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId); + MessageQueue *controllerWalkTo(StaticANIObject *ani, int off); + private: int findObjectPos(StaticANIObject *obj); bool initMovement(StaticANIObject *ani, MctlLadderMovement *movement); diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 78695cc33a..8c4dba0d09 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -1033,10 +1033,6 @@ void sceneHandler04_goClock() { g_vars->scene04_var14 = 0; } -void sceneHandler04_sub8(ExCommand *ex) { - warning("STUB: sceneHandler04_sub8()"); -} - void sceneHandler04_sub12() { StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); @@ -1047,6 +1043,82 @@ void sceneHandler04_sub12() { g_vars->scene04_var13 = 0; } +void sceneHandler04_sub8(ExCommand *ex) { + if (!g_fullpipe->_aniMan->isIdle()) + return; + + if (!(g_fullpipe->_aniMan->_flags & 0x100)) { + if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_objtype == kObjTypeMctlCompound) { + MctlCompound *mc = (MctlCompound *)getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); + + if (mc->_motionControllers[0]->_movGraphReactObj->pointInRegion(g_fullpipe->_sceneRect.left + ex->_x, g_fullpipe->_sceneRect.top + ex->_y)) { + if (g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan)) { + MessageQueue *mq = g_vars->scene04_ladder->controllerWalkTo(g_fullpipe->_aniMan, 0); + + if (mq) { + mq->addExCommandToEnd(new ExCommand(ex)); + + if (mq->chain(g_fullpipe->_aniMan) ) + ex->_messageKind = 0; + else + delete mq; + + if (g_vars->scene04_var13) { + sceneHandler04_sub12(); + return; + } + } + } else { + MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + ExCommand *ex1; + + if (g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN) { + ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_LOOKLADDERRV, 0, 0, 0, 1, 0, 0, 0); + ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_excFlags |= 2; + mq->addExCommandToEnd(ex1); + } + + ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_STARTLADDERD, 0, 0, 0, 1, 0, 0, 0); + ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_excFlags |= 2; + mq->addExCommandToEnd(ex1); + + ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_FROMLADDER, 0, 0, 0, 1, 0, 0, 0); + ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_excFlags |= 2; + mq->addExCommandToEnd(ex1); + + ex1 = new ExCommand(ex); + mq->addExCommandToEnd(ex1); + + mq->setFlags(mq->getFlags() | 1); + + if (mq->chain(g_fullpipe->_aniMan)) { + if (g_vars->scene04_ladder) + delete g_vars->scene04_ladder; + + g_vars->scene04_ladder = 0; + g_vars->scene04_dudeOnLadder = 0; + + ex->_messageKind = 0; + + mc->setEnabled(); + getGameLoaderInteractionController()->enableFlag24(); + } else if (mq) { + delete mq; + } + + if (g_vars->scene04_var13) { + sceneHandler04_sub12(); + return; + } + } + } + } + } +} + void sceneHandler04_handTake() { g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); -- cgit v1.2.3 From 625ce270da5aaaa6f1ff34f2e4b1779c48766117 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 14:53:15 +0200 Subject: FULLPIPE: Some renames in MctlLadder --- engines/fullpipe/motion.cpp | 6 +++--- engines/fullpipe/motion.h | 4 ++-- engines/fullpipe/scenes/scene04.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 3451259893..9bacfec0e2 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -186,8 +186,8 @@ MessageQueue *MctlCompound::doWalkTo(StaticANIObject *subj, int xpos, int ypos, } MctlLadder::MctlLadder() { - _ladder_field_18 = 0; - _objId = 0; + _width = 0; + _ladderX = 0; _height = 0; _ladderY = 0; _ladder_field_14 = 0; @@ -310,7 +310,7 @@ MessageQueue *MctlLadder::doWalkTo(StaticANIObject *subj, int xpos, int ypos, in } MessageQueue *MctlLadder::controllerWalkTo(StaticANIObject *ani, int off) { - return doWalkTo(ani, _objId + off * _ladder_field_18, _ladderY + off * _height, 1, 0); + return doWalkTo(ani, _ladderX + off * _width, _ladderY + off * _height, 1, 0); } MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, int destIndex, int connectionX, int connectionY, int sourceIndex, int *minDistancePtr) { diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index b1e4b69676..7d35c3f8c1 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -181,10 +181,10 @@ struct MctlLadderMovement { class MctlLadder : public MotionController { public: - int _objId; + int _ladderX; int _ladderY; int _ladder_field_14; - int _ladder_field_18; + int _width; int _height; int _ladder_field_20; int _ladder_field_24; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 8c4dba0d09..cd0b40fee2 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -313,10 +313,10 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) { g_vars->scene04_dudeOnLadder = 1; g_vars->scene04_ladder = new MctlLadder; - g_vars->scene04_ladder->_objId = MV_MAN_TURN_SUD; + g_vars->scene04_ladder->_ladderX = 1089; g_vars->scene04_ladder->_ladderY = 406; g_vars->scene04_ladder->_ladder_field_14 = 12; - g_vars->scene04_ladder->_ladder_field_18 = 0; + g_vars->scene04_ladder->_width = 0; g_vars->scene04_ladder->_height = -40; g_vars->scene04_ladder->_ladder_field_20 = 0; g_vars->scene04_ladder->_ladder_field_24 = -60; -- cgit v1.2.3 From a917e9d6fe96cbf4ffb3521fdedf6f9ad5e6fe30 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 14:56:56 +0200 Subject: FULLPIPE: Add basic logic to sceneHandler04_stopSound(). This completes scene04 --- engines/fullpipe/scenes/scene04.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index cd0b40fee2..875b38f92e 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -879,6 +879,8 @@ void sceneHandler04_showCoin() { } void sceneHandler04_stopSound() { + g_vars->scene04_soundPlaying = 0; + warning("STUB: sceneHandler04_stopSound()"); } @@ -1018,6 +1020,10 @@ void sceneHandler04_liftBottle() { void sceneHandler04_startSounds(const char *snd1, const char *snd2, const char *snd3) { warning("STUB: sceneHandler04_startSounds()"); + + // playFile(snd1); + // playFile(snd2); + // playFile(snd3); } void sceneHandler04_goClock() { -- cgit v1.2.3 From 8ab71a2a2397da7ca1f0bad296a8befb11a9810f Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 15:48:35 +0200 Subject: FULLPIPE: Renames in scene04 --- engines/fullpipe/scenes.cpp | 20 +++---- engines/fullpipe/scenes.h | 20 +++---- engines/fullpipe/scenes/scene04.cpp | 116 ++++++++++++++++++------------------ 3 files changed, 78 insertions(+), 78 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 37d1250ae0..97173003b2 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -80,18 +80,18 @@ Vars::Vars() { scene04_dudePosX = 0; scene04_dudePosY = 0; - scene04_var02 = 0; - scene04_var04 = 0; + scene04_bottleIsTaken = false; + scene04_kozyawkaOnLadder = false; scene04_walkingKozyawka = 0; scene04_bottleWeight = 0; - scene04_var07 = 0; - scene04_var08 = 0; - scene04_var09 = 0; - scene04_var10 = 0; - scene04_var11 = 0; - scene04_var12 = 0; - scene04_var13 = 0; - scene04_var14 = 0; + scene04_var07 = false; + scene04_ladderClickable = false; + scene04_handIsDown = false; + scene04_dudeInBottle = false; + scene04_kozHeadRaised = false; + scene04_bottleIsDropped = false; + scene04_bigBallIn = false; + scene04_bigBallCounter = 0; scene04_var15 = 0; scene04_speakerVariant = 0; scene04_speakerPhase = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 38f685e82a..4f0df7a4d1 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -113,17 +113,17 @@ public: int scene04_speakerVariant; int scene04_speakerPhase; - int scene04_var02; - int scene04_var04; + bool scene04_bottleIsTaken; + bool scene04_kozyawkaOnLadder; int scene04_bottleWeight; - int scene04_var07; - int scene04_var08; - int scene04_var09; - int scene04_var10; - int scene04_var11; - int scene04_var12; - int scene04_var13; - int scene04_var14; + bool scene04_var07; + bool scene04_ladderClickable; + bool scene04_handIsDown; + bool scene04_dudeInBottle; + bool scene04_kozHeadRaised; + bool scene04_bottleIsDropped; + bool scene04_bigBallIn; + int scene04_bigBallCounter; int scene04_var15; int scene04_var18; int scene04_var19; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 875b38f92e..6e4396daa7 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -160,9 +160,9 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_var19 = 1; } - g_vars->scene04_var02 = 0; + g_vars->scene04_bottleIsTaken = false; g_vars->scene04_soundPlaying = false; - g_vars->scene04_var04 = 0; + g_vars->scene04_kozyawkaOnLadder = false; g_vars->scene04_walkingKozyawka = 0; g_vars->scene04_bottleWeight = 2; g_vars->scene04_dynamicPhaseIndex = 0; @@ -171,15 +171,15 @@ void scene04_initScene(Scene *sc) { g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); - g_vars->scene04_var07 = 0; - g_vars->scene04_var08 = 0; + g_vars->scene04_var07 = false; + g_vars->scene04_ladderClickable = false; g_vars->scene04_coinPut = 0; - g_vars->scene04_var09 = 0; - g_vars->scene04_var10 = 0; - g_vars->scene04_var11 = 0; - g_vars->scene04_var12 = 0; - g_vars->scene04_var13 = 1; - g_vars->scene04_var14 = 0; + g_vars->scene04_handIsDown = false; + g_vars->scene04_dudeInBottle = false; + g_vars->scene04_kozHeadRaised = false; + g_vars->scene04_bottleIsDropped = false; + g_vars->scene04_bigBallIn = true; + g_vars->scene04_bigBallCounter = 0; g_vars->scene04_var15 = 1; if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_Gone)) @@ -251,11 +251,11 @@ void sceneHandler04_checkBigBallClick() { for (uint i = 0; i < ball->_movements.size(); i++) ((Movement *)ball->_movements[i])->_counterMax = 73; - g_vars->scene04_var13 = 1; + g_vars->scene04_bigBallIn = true; } void sceneHandler04_clickBottle() { - if (!g_vars->scene04_var02) + if (!g_vars->scene04_bottleIsTaken) g_vars->scene04_var20 += 5; } @@ -266,7 +266,7 @@ void sceneHandler04_clickButton() { if (!g_vars->scene04_clock->_movement || (g_vars->scene04_clock->_movement->_id == MV_CLK_GO && g_vars->scene04_clock->_movement->_currDynamicPhaseIndex > 3 && g_vars->scene04_clock->_movement->_currDynamicPhaseIndex < 105)) { - if (!g_vars->scene04_hand->_movement && !g_vars->scene04_var02) { + if (!g_vars->scene04_hand->_movement && !g_vars->scene04_bottleIsTaken) { but->startAnim(MV_BTN_CLICK, 0, -1); g_vars->scene04_hand->startAnim(MV_HND_POINT, 0, -1); } @@ -347,7 +347,7 @@ void sceneHandler04_clickLadder() { if (g_vars->scene04_dudeOnLadder) { if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) { - g_vars->scene04_var08 = 1; + g_vars->scene04_ladderClickable = true; } else { int h3 = 3 * g_vars->scene04_ladder->_height; int half = abs(g_vars->scene04_ladder->_height) / 2; @@ -363,7 +363,7 @@ void sceneHandler04_clickLadder() { sceneHandler04_downLadder(g_vars->scene04_sceneClickX, g_vars->scene04_sceneClickY); - g_vars->scene04_var08 = 0; + g_vars->scene04_ladderClickable = false; } } else { if (g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) { @@ -433,7 +433,7 @@ void sceneHandler04_clickPlank() { } void sceneHandler04_dropBottle() { - g_vars->scene04_var12 = 1; + g_vars->scene04_bottleIsDropped = true; g_vars->scene04_bottleY = 10; g_vars->scene04_bottleWeight = 0; @@ -513,7 +513,7 @@ void sceneHandler04_gotoLadder(ExCommand *ex) { } } - g_vars->scene04_var04 = 0; + g_vars->scene04_kozyawkaOnLadder = false; } void sceneHandler04_lowerPlank() { @@ -542,7 +542,7 @@ void sceneHandler04_manToBottle() { g_vars->scene04_var20 = 5; g_vars->scene04_bottleWeight += 9; g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; - g_vars->scene04_var10 = 1; + g_vars->scene04_dudeInBottle = 1; } void sceneHandler04_raisePlank() { @@ -700,7 +700,7 @@ MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { ex->_keyCode = ani->_okeyCode; mq->addExCommandToEnd(ex); - g_vars->scene04_var11 = 1; + g_vars->scene04_kozHeadRaised = true; } return mq; @@ -865,7 +865,7 @@ void sceneHandler04_shootKozyawka() { if (g_vars->scene04_ladderOffset > 3) g_fullpipe->_aniMan->changeStatics1(ST_MAN_LOOKPLANK); - g_vars->scene04_var04 = 1; + g_vars->scene04_kozyawkaOnLadder = true; } void sceneHandler04_showCoin() { @@ -884,7 +884,7 @@ void sceneHandler04_stopSound() { warning("STUB: sceneHandler04_stopSound()"); } -void sceneHandler04_sub1(ExCommand *ex) { +void sceneHandler04_animOutOfBottle(ExCommand *ex) { g_fullpipe->_aniMan->changeStatics2(ST_MAN_SIT); MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0); @@ -898,7 +898,7 @@ void sceneHandler04_sub1(ExCommand *ex) { mq->_flags |= 1; mq->chain(0); - g_vars->scene04_var10 = 0; + g_vars->scene04_dudeInBottle = false; g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 1); } @@ -986,7 +986,7 @@ void sceneHandler04_leaveScene() { mq->chain(0); - g_vars->scene04_var07 = 0; + g_vars->scene04_var07 = false; g_vars->scene04_dudeOnLadder = 0; g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 0); @@ -1007,12 +1007,12 @@ void sceneHandler04_liftBottle() { sceneHandler04_bottleUpdateObjects(226 - g_vars->scene04_bottle->_oy); g_vars->scene04_spring->setOXY(g_vars->scene04_spring->_ox, 437); - g_vars->scene04_var12 = 0; - g_vars->scene04_var09 = 0; + g_vars->scene04_bottleIsDropped = false; + g_vars->scene04_handIsDown = false; g_vars->scene04_var19 = 1; g_vars->scene04_bottleWeight = 2; g_vars->scene04_var20 = 10; - g_vars->scene04_var02 = 0; + g_vars->scene04_bottleIsTaken = false; g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); } @@ -1036,7 +1036,7 @@ void sceneHandler04_goClock() { sceneHandler04_startSounds("sc4_start.ogg", "sc4_loop.ogg", "sc4_stop2.ogg"); - g_vars->scene04_var14 = 0; + g_vars->scene04_bigBallCounter = 0; } void sceneHandler04_sub12() { @@ -1046,7 +1046,7 @@ void sceneHandler04_sub12() { for (uint i = 0; i < ball->_movements.size(); i++) ((Movement *)ball->_movements[i])->_counterMax = 0; - g_vars->scene04_var13 = 0; + g_vars->scene04_bigBallIn = false; } void sceneHandler04_sub8(ExCommand *ex) { @@ -1069,7 +1069,7 @@ void sceneHandler04_sub8(ExCommand *ex) { else delete mq; - if (g_vars->scene04_var13) { + if (g_vars->scene04_bigBallIn) { sceneHandler04_sub12(); return; } @@ -1115,7 +1115,7 @@ void sceneHandler04_sub8(ExCommand *ex) { delete mq; } - if (g_vars->scene04_var13) { + if (g_vars->scene04_bigBallIn) { sceneHandler04_sub12(); return; } @@ -1142,7 +1142,7 @@ void sceneHandler04_handTake() { } } -void sceneHandler04_sub9(StaticANIObject *ani) { +void sceneHandler04_putKozyawkaBack(StaticANIObject *ani) { g_vars->scene04_bottleObjList.push_back(ani); g_vars->scene04_kozyawkiAni.push_back(ani); @@ -1161,7 +1161,7 @@ void sceneHandler04_sub9(StaticANIObject *ani) { } } -void sceneHandler04_sub17() { +void sceneHandler04_bigBallWalkIn() { StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); if (g_vars->scene04_dudeOnLadder @@ -1178,13 +1178,13 @@ void sceneHandler04_sub17() { sceneHandler04_checkBigBallClick(); - g_vars->scene04_var14 = 0; + g_vars->scene04_bigBallCounter = 0; } } } void sceneHandler04_takeBottle() { - g_vars->scene04_var02 = 1; + g_vars->scene04_bottleIsTaken = true; g_vars->scene04_hand->_priority = 5; g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsOpened)); @@ -1290,16 +1290,16 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_SHAKEBOTTLE: - if (!g_vars->scene04_var02) + if (!g_vars->scene04_bottleIsTaken) ++g_vars->scene04_var20; break; case MSG_STARTHAND: - g_vars->scene04_var09 = 1; + g_vars->scene04_handIsDown = true; g_vars->scene04_coinPut = 0; - if (g_vars->scene04_var10) - sceneHandler04_sub1(0); + if (g_vars->scene04_dudeInBottle) + sceneHandler04_animOutOfBottle(0); sceneHandler04_handTake(); sceneHandler04_stopSound(); @@ -1376,19 +1376,19 @@ int sceneHandler04(ExCommand *ex) { sceneHandler04_springWobble(); - if (g_vars->scene04_var07 && !g_vars->scene04_var09) + if (g_vars->scene04_var07 && !g_vars->scene04_handIsDown) sceneHandler04_leaveScene(); - if (g_vars->scene04_var12) + if (g_vars->scene04_bottleIsDropped) sceneHandler04_liftBottle(); - if (g_vars->scene04_var08) + if (g_vars->scene04_ladderClickable) sceneHandler04_clickLadder(); - if (g_vars->scene04_var10 && g_vars->scene04_hand->_movement) - sceneHandler04_sub1(0); + if (g_vars->scene04_dudeInBottle && g_vars->scene04_hand->_movement) + sceneHandler04_animOutOfBottle(0); - if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying) + if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_handIsDown && !g_vars->scene04_soundPlaying) sceneHandler04_goClock(); if (g_vars->scene04_dudeOnLadder) { @@ -1399,10 +1399,10 @@ int sceneHandler04(ExCommand *ex) { return res; } - g_vars->scene04_var14++; + g_vars->scene04_bigBallCounter++; - if (g_vars->scene04_var14 > 600) - sceneHandler04_sub17(); + if (g_vars->scene04_bigBallCounter > 600) + sceneHandler04_bigBallWalkIn(); } if (g_vars->scene04_soundPlaying) { @@ -1422,14 +1422,14 @@ int sceneHandler04(ExCommand *ex) { { int picid = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); - if (g_vars->scene04_var10) { - sceneHandler04_sub1(ex); + if (g_vars->scene04_dudeInBottle) { + sceneHandler04_animOutOfBottle(ex); break; } if (picid == PIC_SC4_LADDER) { - if (!g_vars->scene04_var04) { + if (!g_vars->scene04_kozyawkaOnLadder) { g_vars->scene04_sceneClickX = ex->_sceneClickX; g_vars->scene04_sceneClickY = ex->_sceneClickY; @@ -1475,7 +1475,7 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_SC4_HANDOVER: - g_vars->scene04_var09 = 0; + g_vars->scene04_handIsDown = false; g_vars->scene04_var19 = 1; break; @@ -1488,11 +1488,11 @@ int sceneHandler04(ExCommand *ex) { g_vars->scene04_coinPut = 0; sceneHandler04_stopSound(); - if (g_vars->scene04_kozyawkiAni.size() && !g_vars->scene04_var02) { - g_vars->scene04_var09 = 1; + if (g_vars->scene04_kozyawkiAni.size() && !g_vars->scene04_bottleIsTaken) { + g_vars->scene04_handIsDown = true; - if (g_vars->scene04_var10) - sceneHandler04_sub1(0); + if (g_vars->scene04_dudeInBottle) + sceneHandler04_animOutOfBottle(0); sceneHandler04_handTake(); } @@ -1503,10 +1503,10 @@ int sceneHandler04(ExCommand *ex) { { ExCommand *exnew; - if (g_vars->scene04_var11) { - sceneHandler04_sub9(g_vars->scene04_var24); + if (g_vars->scene04_kozHeadRaised) { + sceneHandler04_putKozyawkaBack(g_vars->scene04_var24); - g_vars->scene04_var11 = 0; + g_vars->scene04_kozHeadRaised = 0; exnew = new ExCommand(0, 35, SND_4_010, 0, 0, 0, 1, 0, 0, 0); } else { -- cgit v1.2.3 From 620174ee95234ccd27186306961cf634671ce68f Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 16:12:40 +0200 Subject: FULLPIPE: Final renames in scene04 --- engines/fullpipe/scenes.cpp | 12 ++--- engines/fullpipe/scenes.h | 12 ++--- engines/fullpipe/scenes/scene04.cpp | 94 ++++++++++++++++++------------------- 3 files changed, 59 insertions(+), 59 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 97173003b2..95ca7c1554 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -92,14 +92,14 @@ Vars::Vars() { scene04_bottleIsDropped = false; scene04_bigBallIn = false; scene04_bigBallCounter = 0; - scene04_var15 = 0; + scene04_bigBallFromLeft = false; scene04_speakerVariant = 0; scene04_speakerPhase = 0; - scene04_var18 = 0; - scene04_var19 = 0; - scene04_var20 = 0; - scene04_var24 = 0; - scene04_var25 = 0; + scene04_clockCanGo = false; + scene04_objectIsTaken = false; + scene04_springOffset = 0; + scene04_lastKozyawka = 0; + scene04_springDelay = 0; scene04_bottleY = 0; scene04_ladderOffset = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 4f0df7a4d1..2905c27fa3 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -124,12 +124,12 @@ public: bool scene04_bottleIsDropped; bool scene04_bigBallIn; int scene04_bigBallCounter; - int scene04_var15; - int scene04_var18; - int scene04_var19; - int scene04_var20; - StaticANIObject *scene04_var24; - int scene04_var25; + bool scene04_bigBallFromLeft; + bool scene04_clockCanGo; + bool scene04_objectIsTaken; + int scene04_springOffset; + StaticANIObject *scene04_lastKozyawka; + int scene04_springDelay; PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 6e4396daa7..8415aee6fd 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -121,8 +121,8 @@ void scene04_initScene(Scene *sc) { sc->getPictureObjectById(PIC_SC4_MASK, 0)->_flags &= 0xfffb; sc->getStaticANIObject1ById(ANI_SPRING, 0)->_flags &= 0xfffb; - g_vars->scene04_var18 = 0; - g_vars->scene04_var19 = 0; + g_vars->scene04_clockCanGo = false; + g_vars->scene04_objectIsTaken = false; } else { StaticANIObject *spring = sc->getStaticANIObject1ById(ANI_SPRING, -1); @@ -156,8 +156,8 @@ void scene04_initScene(Scene *sc) { } sc->getPictureObjectById(PIC_SC4_BOTTLE2, 0)->_flags &= 0xfffb; - g_vars->scene04_var18 = 1; - g_vars->scene04_var19 = 1; + g_vars->scene04_clockCanGo = true; + g_vars->scene04_objectIsTaken = true; } g_vars->scene04_bottleIsTaken = false; @@ -173,14 +173,14 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_var07 = false; g_vars->scene04_ladderClickable = false; - g_vars->scene04_coinPut = 0; + g_vars->scene04_coinPut = false; g_vars->scene04_handIsDown = false; g_vars->scene04_dudeInBottle = false; g_vars->scene04_kozHeadRaised = false; g_vars->scene04_bottleIsDropped = false; g_vars->scene04_bigBallIn = true; g_vars->scene04_bigBallCounter = 0; - g_vars->scene04_var15 = 1; + g_vars->scene04_bigBallFromLeft = true; if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_Gone)) g_vars->scene04_mamasha->hide(); @@ -217,7 +217,7 @@ int scene04_updateCursor() { g_fullpipe->updateCursorCommon(); if (g_fullpipe->_objectIdAtCursor == PIC_SC4_LRTRUBA) { - if (!g_vars->scene04_var19) { + if (!g_vars->scene04_objectIsTaken) { g_fullpipe->_cursorId = PIC_CSR_DEFAULT; return g_fullpipe->_cursorId; @@ -256,7 +256,7 @@ void sceneHandler04_checkBigBallClick() { void sceneHandler04_clickBottle() { if (!g_vars->scene04_bottleIsTaken) - g_vars->scene04_var20 += 5; + g_vars->scene04_springOffset += 5; } void sceneHandler04_clickButton() { @@ -539,7 +539,7 @@ void sceneHandler04_manFromBottle() { void sceneHandler04_manToBottle() { g_vars->scene04_bottleObjList.push_back(g_fullpipe->_aniMan); - g_vars->scene04_var20 = 5; + g_vars->scene04_springOffset = 5; g_vars->scene04_bottleWeight += 9; g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; g_vars->scene04_dudeInBottle = 1; @@ -853,7 +853,7 @@ void sceneHandler04_shootKozyawka() { } if (mq) { - g_vars->scene04_var24 = g_vars->scene04_walkingKozyawka; + g_vars->scene04_lastKozyawka = g_vars->scene04_walkingKozyawka; if (!mq->chain(g_vars->scene04_walkingKozyawka) ) delete mq; @@ -879,7 +879,7 @@ void sceneHandler04_showCoin() { } void sceneHandler04_stopSound() { - g_vars->scene04_soundPlaying = 0; + g_vars->scene04_soundPlaying = false; warning("STUB: sceneHandler04_stopSound()"); } @@ -923,34 +923,34 @@ void sceneHandler04_bottleUpdateObjects(int off) { void sceneHandler04_springWobble() { int oldDynIndex = g_vars->scene04_dynamicPhaseIndex; - int newdelta = g_vars->scene04_var20 + g_vars->scene04_dynamicPhaseIndex; + int newdelta = g_vars->scene04_springOffset + g_vars->scene04_dynamicPhaseIndex; - g_vars->scene04_dynamicPhaseIndex += g_vars->scene04_var20; + g_vars->scene04_dynamicPhaseIndex += g_vars->scene04_springOffset; if (newdelta < 0) { newdelta = 0; g_vars->scene04_dynamicPhaseIndex = 0; - g_vars->scene04_var20 = 0; + g_vars->scene04_springOffset = 0; } if (newdelta > 14) { newdelta = 14; g_vars->scene04_dynamicPhaseIndex = 14; - g_vars->scene04_var20 = 0; + g_vars->scene04_springOffset = 0; } if (g_vars->scene04_bottleWeight > newdelta) - g_vars->scene04_var20++; + g_vars->scene04_springOffset++; if (g_vars->scene04_bottleWeight < newdelta) - g_vars->scene04_var20--; + g_vars->scene04_springOffset--; if ((oldDynIndex > g_vars->scene04_bottleWeight && newdelta > g_vars->scene04_bottleWeight) || newdelta <= g_vars->scene04_bottleWeight) { - g_vars->scene04_var25++; + g_vars->scene04_springDelay++; - if (g_vars->scene04_var20 && g_vars->scene04_var25 > 1) { - g_vars->scene04_var25 = 0; - g_vars->scene04_var20 = g_vars->scene04_var20 - g_vars->scene04_var20 / abs(g_vars->scene04_var20); + if (g_vars->scene04_springOffset && g_vars->scene04_springDelay > 1) { + g_vars->scene04_springDelay = 0; + g_vars->scene04_springOffset = g_vars->scene04_springOffset - g_vars->scene04_springOffset / abs(g_vars->scene04_springOffset); } } @@ -1009,9 +1009,9 @@ void sceneHandler04_liftBottle() { g_vars->scene04_spring->setOXY(g_vars->scene04_spring->_ox, 437); g_vars->scene04_bottleIsDropped = false; g_vars->scene04_handIsDown = false; - g_vars->scene04_var19 = 1; + g_vars->scene04_objectIsTaken = true; g_vars->scene04_bottleWeight = 2; - g_vars->scene04_var20 = 10; + g_vars->scene04_springOffset = 10; g_vars->scene04_bottleIsTaken = false; g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); @@ -1029,8 +1029,8 @@ void sceneHandler04_startSounds(const char *snd1, const char *snd2, const char * void sceneHandler04_goClock() { sceneHandler04_walkKozyawka(); chainQueue(QU_SC4_GOCLOCK, 0); - g_vars->scene04_soundPlaying = 1; - g_vars->scene04_coinPut = 0; + g_vars->scene04_soundPlaying = true; + g_vars->scene04_coinPut = false; g_fullpipe->stopAllSoundStreams(); @@ -1039,7 +1039,7 @@ void sceneHandler04_goClock() { g_vars->scene04_bigBallCounter = 0; } -void sceneHandler04_sub12() { +void sceneHandler04_bigBallOut() { StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); if (ball && ball->_flags & 4) @@ -1049,7 +1049,7 @@ void sceneHandler04_sub12() { g_vars->scene04_bigBallIn = false; } -void sceneHandler04_sub8(ExCommand *ex) { +void sceneHandler04_leaveLadder(ExCommand *ex) { if (!g_fullpipe->_aniMan->isIdle()) return; @@ -1070,7 +1070,7 @@ void sceneHandler04_sub8(ExCommand *ex) { delete mq; if (g_vars->scene04_bigBallIn) { - sceneHandler04_sub12(); + sceneHandler04_bigBallOut(); return; } } @@ -1116,7 +1116,7 @@ void sceneHandler04_sub8(ExCommand *ex) { } if (g_vars->scene04_bigBallIn) { - sceneHandler04_sub12(); + sceneHandler04_bigBallOut(); return; } } @@ -1131,14 +1131,14 @@ void sceneHandler04_handTake() { if (g_vars->scene04_kozyawkiAni.size()) { if (g_vars->scene04_kozyawkiAni.size() == 1) { chainQueue(QU_HND_TAKE1, 0); - g_vars->scene04_var19 = 0; + g_vars->scene04_objectIsTaken = false; } else { chainQueue((g_vars->scene04_kozyawkiAni.size() != 2) ? QU_HND_TAKEBOTTLE : QU_HND_TAKE2, 0); - g_vars->scene04_var19 = 0; + g_vars->scene04_objectIsTaken = false; } } else { chainQueue(QU_HND_TAKE0, 0); - g_vars->scene04_var19 = 0; + g_vars->scene04_objectIsTaken = false; } } @@ -1148,10 +1148,10 @@ void sceneHandler04_putKozyawkaBack(StaticANIObject *ani) { g_vars->scene04_bottleWeight += 2; g_vars->scene04_walkingKozyawka = 0; - g_vars->scene04_var24 = 0; + g_vars->scene04_lastKozyawka = 0; if (g_vars->scene04_kozyawkiAni.size() > 1 ) - g_vars->scene04_var19 = 0; + g_vars->scene04_objectIsTaken = false; if (g_vars->scene04_kozyawkiAni.size() <= 2 || g_vars->scene04_hand->_movement) { sceneHandler04_walkKozyawka(); @@ -1169,12 +1169,12 @@ void sceneHandler04_bigBallWalkIn() { && g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan) > 3) { if (!g_fullpipe->_rnd->getRandomNumber(49)) { - if (g_vars->scene04_var15) + if (g_vars->scene04_bigBallFromLeft) chainQueue(QU_BALL_WALKR, 0); else chainQueue(QU_BALL_WALKL, 0); - g_vars->scene04_var15 = !g_vars->scene04_var15; + g_vars->scene04_bigBallFromLeft = !g_vars->scene04_bigBallFromLeft; sceneHandler04_checkBigBallClick(); @@ -1193,7 +1193,7 @@ void sceneHandler04_takeBottle() { void sceneHandler04_takeKozyawka() { if (g_vars->scene04_kozyawkiAni.size() > 0) { if (g_vars->scene04_kozyawkiAni.size() == 1) - g_vars->scene04_var19 = 1; + g_vars->scene04_objectIsTaken = true; StaticANIObject *koz = g_vars->scene04_kozyawkiAni.front(); g_vars->scene04_kozyawkiAni.pop_front(); @@ -1261,8 +1261,8 @@ void sceneHandler04_winArcade() { g_vars->scene04_walkingKozyawka = 0; } - g_vars->scene04_var19 = 0; - g_vars->scene04_soundPlaying = 0; + g_vars->scene04_objectIsTaken = false; + g_vars->scene04_soundPlaying = false; getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->setEnabled(); @@ -1291,12 +1291,12 @@ int sceneHandler04(ExCommand *ex) { case MSG_SHAKEBOTTLE: if (!g_vars->scene04_bottleIsTaken) - ++g_vars->scene04_var20; + ++g_vars->scene04_springOffset; break; case MSG_STARTHAND: g_vars->scene04_handIsDown = true; - g_vars->scene04_coinPut = 0; + g_vars->scene04_coinPut = false; if (g_vars->scene04_dudeInBottle) sceneHandler04_animOutOfBottle(0); @@ -1388,7 +1388,7 @@ int sceneHandler04(ExCommand *ex) { if (g_vars->scene04_dudeInBottle && g_vars->scene04_hand->_movement) sceneHandler04_animOutOfBottle(0); - if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_handIsDown && !g_vars->scene04_soundPlaying) + if (g_vars->scene04_coinPut && g_vars->scene04_clockCanGo && !g_vars->scene04_handIsDown && !g_vars->scene04_soundPlaying) sceneHandler04_goClock(); if (g_vars->scene04_dudeOnLadder) { @@ -1452,7 +1452,7 @@ int sceneHandler04(ExCommand *ex) { ex->_messageKind = 0; } else if (g_vars->scene04_dudeOnLadder) { - sceneHandler04_sub8(ex); + sceneHandler04_leaveLadder(ex); } else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) { PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picid, 0); @@ -1476,7 +1476,7 @@ int sceneHandler04(ExCommand *ex) { case MSG_SC4_HANDOVER: g_vars->scene04_handIsDown = false; - g_vars->scene04_var19 = 1; + g_vars->scene04_objectIsTaken = true; break; case MSG_SC4_DROPBOTTLE: @@ -1485,7 +1485,7 @@ int sceneHandler04(ExCommand *ex) { case MSG_SC4_COINOUT: g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); - g_vars->scene04_coinPut = 0; + g_vars->scene04_coinPut = false; sceneHandler04_stopSound(); if (g_vars->scene04_kozyawkiAni.size() && !g_vars->scene04_bottleIsTaken) { @@ -1504,7 +1504,7 @@ int sceneHandler04(ExCommand *ex) { ExCommand *exnew; if (g_vars->scene04_kozHeadRaised) { - sceneHandler04_putKozyawkaBack(g_vars->scene04_var24); + sceneHandler04_putKozyawkaBack(g_vars->scene04_lastKozyawka); g_vars->scene04_kozHeadRaised = 0; @@ -1544,7 +1544,7 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_SC4_COINPUT: - g_vars->scene04_coinPut = 1; + g_vars->scene04_coinPut = true; break; } -- cgit v1.2.3 From 84bf5238cd69ee6cf2fee11431d7c48b8aba906a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 17:38:14 +0200 Subject: FULLPIPE: Started scene05 code --- engines/fullpipe/constants.h | 22 +++++ engines/fullpipe/fullpipe.h | 1 + engines/fullpipe/module.mk | 1 + engines/fullpipe/scenes.cpp | 9 +- engines/fullpipe/scenes.h | 10 ++ engines/fullpipe/scenes/scene05.cpp | 191 ++++++++++++++++++++++++++++++++++++ engines/fullpipe/sound.cpp | 3 + 7 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 engines/fullpipe/scenes/scene05.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b2ebea6701..db9b6f685a 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -26,6 +26,7 @@ namespace Fullpipe { #define ANI_BIGBALL 4923 +#define ANI_BIGLUK 909 #define ANI_BOOT_1 4231 #define ANI_BUTTON 598 #define ANI_CLOCK 588 @@ -33,6 +34,7 @@ namespace Fullpipe { #define ANI_DADAYASHIK 306 #define ANI_EGGEATER 334 #define ANI_HAND 601 +#define ANI_HANDLE 622 #define ANI_IN1MAN 5110 #define ANI_INV_COIN 875 #define ANI_INV_EGGAPL 1564 @@ -45,6 +47,7 @@ namespace Fullpipe { #define ANI_LIFTBUTTON 2751 #define ANI_MAMASHA_4 660 #define ANI_MAN 322 +#define ANI_OTMOROZ 419 #define ANI_PLANK 501 #define ANI_SC2_BOX 1020 #define ANI_SC4_BOOT 1035 @@ -96,6 +99,15 @@ namespace Fullpipe { #define MSG_SC4_KOZAWFALL 2858 #define MSG_SC4_MANFROMBOTTLE 2854 #define MSG_SC4_MANTOBOTTLE 2852 +#define MSG_SC5_BGRSOUNDOFF 5315 +#define MSG_SC5_BGRSOUNDON 5314 +#define MSG_SC5_HANDLEDOWN 916 +#define MSG_SC5_HANDLEUP 915 +#define MSG_SC5_HIDEHANDLE 917 +#define MSG_SC5_MAKEMANFLIGHT 1136 +#define MSG_SC5_MAKEOTMFEEDBACK 1169 +#define MSG_SC5_SHOWHANDLE 918 +#define MSG_SC5_TESTLUK 914 #define MSG_GOTOLADDER 618 #define MSG_SHAKEBOTTLE 584 #define MSG_SHOOTKOZAW 557 @@ -140,6 +152,8 @@ namespace Fullpipe { #define MV_MAN_TOLADDER2 2841 #define MV_MAN_TURN_LU 486 #define MV_MAN_TURN_SUD 1089 +#define MV_MANHDL_HANDLEDOWN 630 +#define MV_MANHDL_HANDLEUP 631 #define MV_PNK_WEIGHTLEFT 541 #define MV_PNK_WEIGHTRIGHT 502 #define MV_SC4_COIN_default 1029 @@ -275,14 +289,19 @@ namespace Fullpipe { #define SND_4_010 3125 #define SND_4_012 3127 #define SND_4_033 4990 +#define SND_5_026 5316 #define SND_CMN_031 3516 #define SND_CMN_070 5199 #define SND_INTR_019 5220 +#define ST_BLK_CLOSED 912 #define ST_CLK_CLOSED 590 #define ST_DYAS_LIES 318 #define ST_EGTR_MID1 2863 #define ST_EGTR_MID2 2869 #define ST_EGTR_SLIM 336 +#define ST_HDL_BROKEN 3342 +#define ST_HDL_DOWN 625 +#define ST_HDL_UP 624 #define ST_HND_EMPTY 603 #define ST_IN1MAN_SLEEP 5112 #define ST_KZW_EMPTY 498 @@ -319,6 +338,9 @@ namespace Fullpipe { #define ST_MAN_SIT 1164 #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 +#define ST_OTM_BOX_LEFT 429 +#define ST_OTM_GLS_LEFT 421 +#define ST_OTM_VNT_LEFT 434 #define ST_PNK_WEIGHTLEFT 503 #define ST_PNK_WEIGHTRIGHT 504 #define ST_SPR_UP 544 diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index eb502cbadf..51b935362e 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -151,6 +151,7 @@ public: void startSceneTrack(); void stopSoundStream2(); void stopAllSoundStreams(); + void stopAllSoundInstances(int id); int _sfxVolume; diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index bd948b7ab4..1da0c33b86 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -28,6 +28,7 @@ MODULE_OBJS = \ scenes/scene02.o \ scenes/scene03.o \ scenes/scene04.o \ + scenes/scene05.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 95ca7c1554..a36b30a613 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -103,6 +103,13 @@ Vars::Vars() { scene04_bottleY = 0; scene04_ladderOffset = 0; + scene05_handle = 0; + scene05_wacko = 0; + scene05_bigHatch = 0; + scene05_var01 = 0; + scene05_var02 = 0; + scene05_var03 = 0; + selector = 0; } @@ -265,7 +272,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = scene04_updateCursor; break; -#if 0 case SC_5: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_5"); scene->preloadMovements(sceneVar); @@ -277,6 +283,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = defaultUpdateCursor; break; +#if 0 case SC_6: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_6"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 2905c27fa3..4645d8bf9c 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -50,6 +50,9 @@ int scene04_updateCursor(); void scene04_initScene(Scene *sc); int sceneHandler04(ExCommand *cmd); +void scene05_initScene(Scene *sc); +int sceneHandler05(ExCommand *cmd); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); @@ -131,6 +134,13 @@ public: StaticANIObject *scene04_lastKozyawka; int scene04_springDelay; + StaticANIObject *scene05_handle; + StaticANIObject *scene05_wacko; + StaticANIObject *scene05_bigHatch; + int scene05_var01; + int scene05_var02; + int scene05_var03; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp new file mode 100644 index 0000000000..3127105a2f --- /dev/null +++ b/engines/fullpipe/scenes/scene05.cpp @@ -0,0 +1,191 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objects.h" +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/statics.h" +#include "fullpipe/scene.h" +#include "fullpipe/scenes.h" +#include "fullpipe/messages.h" +#include "fullpipe/floaters.h" +#include "fullpipe/behavior.h" + +namespace Fullpipe { + +void scene05_initScene(Scene *sc) { + g_vars->scene05_handle = sc->getStaticANIObject1ById(ANI_HANDLE, -1); + g_vars->scene05_wacko = sc->getStaticANIObject1ById(ANI_OTMOROZ, -1); + g_vars->scene05_bigHatch = sc->getStaticANIObject1ById(ANI_BIGLUK, -1); + + + g_vars->scene05_var01 = 0; + g_vars->scene05_var02 = 1; + g_vars->scene05_var03 = 1000; + + Scene *oldscene = g_fullpipe->_currentScene; + + g_fullpipe->_currentScene = sc; + + if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + g_vars->scene05_wacko->changeStatics2(ST_OTM_GLS_LEFT); + g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); + + g_vars->scene05_handle->changeStatics2(ST_HDL_UP); + g_vars->scene05_handle->_flags |= 4; + } else if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + g_vars->scene05_wacko->changeStatics2(ST_OTM_BOX_LEFT); + g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); + g_vars->scene05_handle->changeStatics2(ST_HDL_UP); + g_vars->scene05_handle->_flags |= 4; + } else { + g_vars->scene05_wacko->changeStatics2(ST_OTM_VNT_LEFT); + + if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) { + g_vars->scene05_handle->changeStatics2(ST_HDL_BROKEN); + g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); + } + } + + g_fullpipe->_currentScene = oldscene; +} + +void sceneHandler05_makeManFlight() { + warning("STUB: sceneHandler05_makeManFlight()"); +} + +void sceneHandler05_makeOtmFeedback() { + warning("STUB: sceneHandler05_makeOtmFeedback()"); +} + +void sceneHandler05_showHandle() { + warning("STUB: sceneHandler05_showHandle()"); +} + +void sceneHandler05_handleDown() { + warning("STUB: sceneHandler05_handleDown()"); +} + +void sceneHandler05_hideHandle() { + warning("STUB: sceneHandler05_hideHandle()"); +} + +void sceneHandler05_handleUp() { + warning("STUB: sceneHandler05_handleUp()"); +} + +void sceneHandler05_testHatch(ExCommand *ex) { + warning("STUB: sceneHandler05_testHatch()"); +} + + +int sceneHandler05(ExCommand *ex) { + if (ex->_messageKind != 17) + return 0; + + switch (ex->_messageNum) { + case MSG_SC5_BGRSOUNDOFF: + g_fullpipe->stopAllSoundInstances(SND_5_026); + break; + + case MSG_SC5_BGRSOUNDON: + g_fullpipe->playSound(SND_5_026, 1); + break; + + case MSG_SC5_MAKEMANFLIGHT: + sceneHandler05_makeManFlight(); + break; + + case MSG_SC5_MAKEOTMFEEDBACK: + if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP + && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { + sceneHandler05_makeOtmFeedback(); + g_vars->scene05_var01 = 0; + } + break; + + case MSG_SC5_SHOWHANDLE: + sceneHandler05_showHandle(); + break; + + case MSG_SC5_HANDLEDOWN: + g_vars->scene05_handle->changeStatics2(ST_HDL_DOWN); + sceneHandler05_handleDown(); + break; + + case MSG_SC5_HIDEHANDLE: + sceneHandler05_hideHandle(); + break; + + case MSG_SC5_HANDLEUP: + g_vars->scene05_handle->changeStatics2(ST_HDL_UP); + sceneHandler05_handleUp(); + break; + + case MSG_SC5_TESTLUK: + sceneHandler05_testHatch(ex); + break; + + case 33: + { + int res = 0; + if (g_fullpipe->_aniMan2) { + if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + + if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + + res = 1; + } + + if (g_vars->scene05_var01) { + if ((g_fullpipe->_updateTicks - g_vars->scene05_var01) > 62 ) { + if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP + && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { + if (g_vars->scene05_var02 % 2) + sceneHandler05_makeOtmFeedback(); + + g_vars->scene05_var01 = 0; + + ++g_vars->scene05_var02; + } + } + } + + ++g_vars->scene05_var03; + g_fullpipe->_floaters->update(); + + g_fullpipe->_behaviorManager->updateBehaviors(); + + g_fullpipe->startSceneTrack(); + + return res; + } + } + + return 0; +} + +} // End of namespace Fullpipe diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp index 147d6218c6..36f6030935 100644 --- a/engines/fullpipe/sound.cpp +++ b/engines/fullpipe/sound.cpp @@ -143,5 +143,8 @@ void FullpipeEngine::stopAllSoundStreams() { warning("STUB: FullpipeEngine::stopAllSoundStreams()"); } +void FullpipeEngine::stopAllSoundInstances(int id) { + warning("STUB: FullpipeEngine::stopAllSoundInstances(%d)", id); +} } // End of namespace Fullpipe -- cgit v1.2.3 From 42c04c8735fde38532edba8ee36c9c03eef2c465 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 14 Dec 2013 17:42:41 +0200 Subject: FULLPIPE: Implement sceneHandler05_showHandle() and sceneHandler05_hideHandle() --- engines/fullpipe/scenes/scene05.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 3127105a2f..5900e73353 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -80,7 +80,7 @@ void sceneHandler05_makeOtmFeedback() { } void sceneHandler05_showHandle() { - warning("STUB: sceneHandler05_showHandle()"); + g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0); } void sceneHandler05_handleDown() { @@ -88,7 +88,7 @@ void sceneHandler05_handleDown() { } void sceneHandler05_hideHandle() { - warning("STUB: sceneHandler05_hideHandle()"); + g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->hide(); } void sceneHandler05_handleUp() { -- cgit v1.2.3 From 9aaa7d742fa2d33e8f87d12828dd1d0248e19854 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 02:46:22 +0200 Subject: FULLPIPE: Implemented several destructors --- engines/fullpipe/motion.cpp | 20 ++++++++++++++++++++ engines/fullpipe/motion.h | 4 ++++ 2 files changed, 24 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 9bacfec0e2..0aa6a4ace6 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -185,6 +185,11 @@ MessageQueue *MctlCompound::doWalkTo(StaticANIObject *subj, int xpos, int ypos, return mq; } +MctlCompoundArrayItem::~MctlCompoundArrayItem() { + delete _movGraphReactObj; + delete _motionControllerObj; +} + MctlLadder::MctlLadder() { _width = 0; _ladderX = 0; @@ -319,6 +324,21 @@ MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, in return 0; } +MctlConnectionPoint::MctlConnectionPoint() { + _connectionX = 0; + _connectionY = 0; + _field_C = 0; + _field_10 = 0; + _field_14 = 0; + _field_16 = 0; + _messageQueueObj = 0; + _motionControllerObj = 0; +} + +MctlConnectionPoint::~MctlConnectionPoint() { + delete _messageQueueObj; +} + bool MctlCompoundArray::load(MfcArchive &file) { debug(5, "MctlCompoundArray::load()"); diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index 7d35c3f8c1..c54ba7147b 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -86,6 +86,7 @@ public: public: MctlCompoundArrayItem() : _movGraphReactObj(0), _motionControllerObj(0), _field_20(0), _field_24(0), _field_28(0) {} + ~MctlCompoundArrayItem(); }; class MctlCompoundArray : public Common::Array, public CObject { @@ -413,6 +414,9 @@ public: int16 _field_16; MessageQueue *_messageQueueObj; int _motionControllerObj; + + MctlConnectionPoint(); + ~MctlConnectionPoint(); }; } // End of namespace Fullpipe -- cgit v1.2.3 From 7cb658f15245140cdefe42727540ec03251b3d29 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 13:50:35 +0200 Subject: FULLPIPE: Implement MctlLadder::method34() --- engines/fullpipe/motion.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 0aa6a4ace6..693efcb36e 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -303,7 +303,15 @@ void MctlLadder::freeItems() { } MessageQueue *MctlLadder::method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { - warning("STUB: MctlLadder::method34()"); + MessageQueue *mq = doWalkTo(subj, xpos, ypos, fuzzyMatch, staticsId); + + if (mq) { + if (mq->chain(subj)) + return mq; + + } else { + delete mq; + } return 0; } -- cgit v1.2.3 From 5751f4c1103305465dc3ffaf38a1094724a23be7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 14:20:13 +0200 Subject: FULLPIPE: Implement MGM::getPoint() --- engines/fullpipe/motion.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++-- engines/fullpipe/motion.h | 5 +++- 2 files changed, 60 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 693efcb36e..16ac82be9e 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -1576,12 +1576,66 @@ void MGM::updateAnimStatics(StaticANIObject *ani, int staticsId) { } } -Common::Point *MGM::getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2) { - warning("STUB: MGM::getPoint()"); +Common::Point *MGM::getPoint(Common::Point *point, int objectId, int staticsId1, int staticsId2) { + int idx = getItemIndexById(objectId); + + if (idx == -1) { + point->x = -1; + point->y = -1; + } else { + int st1idx = getStaticsIndexById(idx, staticsId1); + int st2idx = getStaticsIndexById(idx, staticsId2); + + if (st1idx == st2idx) { + point->x = 0; + point->y = 0; + } else { + int subidx = st1idx + st2idx * _items[idx]->statics.size(); + + if (!_items[idx]->subItems[subidx]->movement) { + clearMovements2(idx); + recalcOffsets(idx, st1idx, st2idx, false, true); + + if (!_items[idx]->subItems[subidx]->movement) { + clearMovements2(idx); + recalcOffsets(idx, st1idx, st2idx, true, false); + } + } + + MGMSubItem *sub = _items[idx]->subItems[subidx]; + + if (sub->movement) { + point->x = sub->x; + point->y = sub->y; + } else { + point->x = 0; + point->y = 0; + } + } + } return point; } +int MGM::getStaticsIndexById(int idx, int16 id) { + for (uint i = 0; i < _items[idx]->statics.size(); i++) { + if (_items[idx]->statics[i]->_staticsId == id) + return i; + } + + return 0; +} + +void MGM::clearMovements2(int idx) { + _items[idx]->movements2.clear(); +} + +int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) { + warning("STUB: MGM::recalcOffsets()"); + + return 0; +} + MovGraphLink::MovGraphLink() { _distance = 0; _angle = 0; diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index c54ba7147b..e5b592876e 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -113,7 +113,7 @@ public: }; struct MGMSubItem { - int movement; + Movement *movement; int staticsIndex; int field_8; int field_C; @@ -162,6 +162,9 @@ public: MessageQueue *genMovement(MGMInfo *mgminfo); void updateAnimStatics(StaticANIObject *ani, int staticsId); Common::Point *getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2); + int getStaticsIndexById(int idx, int16 id); + void clearMovements2(int idx); + int recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop); }; struct MctlLadderMovementVars { -- cgit v1.2.3 From 29a8bb5dbcd1754c3821ed81856249ec9fff2082 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 14:42:32 +0200 Subject: FULLPIPE: Implement sceneHandler05_makeManFlight() --- engines/fullpipe/constants.h | 3 +++ engines/fullpipe/scenes/scene05.cpp | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index db9b6f685a..d6a63da3b6 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -234,6 +234,8 @@ namespace Fullpipe { #define QU_SC4_GOCLOCK 595 #define QU_SC4_MANFROMBOTTLE 2851 #define QU_SC4_MANTOBOTTLE 2850 +#define QU_SC5_MANBUMP 1167 +#define QU_SC5_MANFLY 1168 #define SC_1 301 #define SC_10 653 #define SC_11 654 @@ -294,6 +296,7 @@ namespace Fullpipe { #define SND_CMN_070 5199 #define SND_INTR_019 5220 #define ST_BLK_CLOSED 912 +#define ST_BLK_OPEN 913 #define ST_CLK_CLOSED 590 #define ST_DYAS_LIES 318 #define ST_EGTR_MID1 2863 diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 5900e73353..0e7731163c 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -72,7 +72,18 @@ void scene05_initScene(Scene *sc) { } void sceneHandler05_makeManFlight() { - warning("STUB: sceneHandler05_makeManFlight()"); + int qid; + + if (!g_vars->scene05_bigHatch->_statics || g_vars->scene05_bigHatch->_statics->_staticsId != ST_BLK_OPEN) + qid = QU_SC5_MANBUMP; + else + qid = QU_SC5_MANFLY; + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(qid), 0, 0); + + mq->setFlags(mq->getFlags() | 1); + + mq->chain(0); } void sceneHandler05_makeOtmFeedback() { -- cgit v1.2.3 From 8b278d1cdd8f83483afef38b2115f5a25e37c603 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 14:59:16 +0200 Subject: FULLPIPE: Implement sceneHandler05_makeWackoFeedback() --- engines/fullpipe/constants.h | 4 ++++ engines/fullpipe/scenes/scene05.cpp | 39 +++++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index d6a63da3b6..d2e295f0ae 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -154,6 +154,10 @@ namespace Fullpipe { #define MV_MAN_TURN_SUD 1089 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 +#define MV_OTM_BOXHANDLEDOWN 626 +#define MV_OTM_BOXHANDLEUP 627 +#define MV_OTM_HANDLEDOWN 620 +#define MV_OTM_HANDLEUP 621 #define MV_PNK_WEIGHTLEFT 541 #define MV_PNK_WEIGHTRIGHT 502 #define MV_SC4_COIN_default 1029 diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 0e7731163c..4b61f5b187 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -86,8 +86,39 @@ void sceneHandler05_makeManFlight() { mq->chain(0); } -void sceneHandler05_makeOtmFeedback() { - warning("STUB: sceneHandler05_makeOtmFeedback()"); +void sceneHandler05_makeWackoFeedback() { + int staticsId1; + int staticsId2; + + if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + staticsId1 = ST_OTM_GLS_LEFT; + staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_HANDLEUP : MV_OTM_HANDLEDOWN; + } else if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + return; + } else { + staticsId1 = ST_OTM_BOX_LEFT; + staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_BOXHANDLEUP : MV_OTM_BOXHANDLEDOWN; + } + + if (g_vars->scene05_wacko->_movement) + g_vars->scene05_wacko->changeStatics2(g_vars->scene05_wacko->_movement->_staticsObj2->_staticsId); + + if (staticsId1 == g_vars->scene05_wacko->_statics->_staticsId) { + g_vars->scene05_wacko->startAnim(staticsId2, 0, -1); + } else { + MessageQueue *mq = g_vars->scene05_wacko->changeStatics1(staticsId1); + + if (mq) { + mq->setFlags(mq->getFlags() | 1); + + ExCommand *ex = new ExCommand(0, 17, MSG_SC5_MAKEOTMFEEDBACK, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags |= 2; + + mq->addExCommandToEnd(ex); + mq->_isFinished = 0; + } + } } void sceneHandler05_showHandle() { @@ -131,7 +162,7 @@ int sceneHandler05(ExCommand *ex) { case MSG_SC5_MAKEOTMFEEDBACK: if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { - sceneHandler05_makeOtmFeedback(); + sceneHandler05_makeWackoFeedback(); g_vars->scene05_var01 = 0; } break; @@ -176,7 +207,7 @@ int sceneHandler05(ExCommand *ex) { if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { if (g_vars->scene05_var02 % 2) - sceneHandler05_makeOtmFeedback(); + sceneHandler05_makeWackoFeedback(); g_vars->scene05_var01 = 0; -- cgit v1.2.3 From c61db56a48ad44b0aca8ad83b61013c25c4ab468 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 15:20:28 +0200 Subject: FULLPIPE: Implement void sceneHandler05_handleUp() and void sceneHandler05_handleDown() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene05.cpp | 27 +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index d2e295f0ae..be47e0d264 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -117,6 +117,8 @@ namespace Fullpipe { #define MSG_TAKEKOZAW 611 #define MSG_TESTPLANK 538 #define MSG_UPDATEBOTTLE 613 +#define MV_BLK_CLOSE 911 +#define MV_BLK_OPEN 910 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 #define MV_KZW_GOR 564 diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 4b61f5b187..cbeb6c4faf 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -121,12 +121,30 @@ void sceneHandler05_makeWackoFeedback() { } } +void sceneHandler05_resetTicks() { + if (g_fullpipe->_aniMan->_movement && (g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP + || g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN)) + g_vars->scene05_var01 = g_fullpipe->_updateTicks; + else + g_vars->scene05_var01 = 0; +} + +void sceneHandler05_genFlies() { + warning("STUB: sceneHandler05_genFlies()"); +} + void sceneHandler05_showHandle() { g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0); } void sceneHandler05_handleDown() { - warning("STUB: sceneHandler05_handleDown()"); + StaticANIObject *hatch = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); + + hatch->changeStatics2(ST_BLK_CLOSED); + hatch->startAnim(MV_BLK_OPEN, 0, -1); + + sceneHandler05_resetTicks(); + sceneHandler05_genFlies(); } void sceneHandler05_hideHandle() { @@ -134,7 +152,12 @@ void sceneHandler05_hideHandle() { } void sceneHandler05_handleUp() { - warning("STUB: sceneHandler05_handleUp()"); + StaticANIObject *hatch = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); + + hatch->changeStatics2(ST_BLK_OPEN); + hatch->startAnim(MV_BLK_CLOSE, 0, -1); + + sceneHandler05_resetTicks(); } void sceneHandler05_testHatch(ExCommand *ex) { -- cgit v1.2.3 From 7cd0da64f5eede4296655164f4db7e74230e7441 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 16:33:34 +0200 Subject: FULLPIPE: Implement sceneHandler05_testHatch() --- engines/fullpipe/scenes/scene05.cpp | 117 +++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index cbeb6c4faf..f050913747 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -160,8 +160,119 @@ void sceneHandler05_handleUp() { sceneHandler05_resetTicks(); } -void sceneHandler05_testHatch(ExCommand *ex) { - warning("STUB: sceneHandler05_testHatch()"); +void sceneHandler05_testHatch(ExCommand *inex) { + ExCommand *ex; + + if (g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1)->_statics->_staticsId == ST_BLK_CLOSED) { + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + ex->postMessage(); + + return; + } + + StaticANIObject *wacko = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_OTMOROZ, -1); + + if (wacko->_movement) + wacko->changeStatics2(wacko->_movement->_staticsObj2->_staticsId); + + if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(inex->_parId); + + if (mq) + mq->deleteExCommandByIndex(mq->getCount() - 1, 1); + + if (wacko->_statics->_staticsId != ST_OTM_GLS_LEFT) { + mq = wacko->changeStatics1(ST_OTM_GLS_LEFT); + + if (!mq) { + wacko->changeStatics2(ST_OTM_GLS_LEFT); + mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + } + + mq->setFlags(mq->getFlags() | 1); + + ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_HANDLEUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2u; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + mq->_isFinished = 0; + return; + } + + mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq->setFlags(mq->getFlags() | 1); + + ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_HANDLEUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + if (!mq->chain(wacko)) + delete mq; + } else if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(inex->_parId); + + if (mq) + mq->deleteExCommandByIndex(mq->getCount() - 1, 1); + + if (wacko->_statics->_staticsId != ST_OTM_BOX_LEFT) { + mq = wacko->changeStatics1(ST_OTM_BOX_LEFT); + if (!mq) { + wacko->changeStatics2(ST_OTM_BOX_LEFT); + mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + } + + mq->setFlags(mq->getFlags() | 1); + + ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_BOXHANDLEUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + mq->_isFinished = 0; + + return; + } + + mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq->setFlags(mq->getFlags() | 1); + + ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_BOXHANDLEUP, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + if (!mq->chain(wacko)) + delete mq; + + return; + } else { + ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); + ex->_keyCode = TrubaLeft; + ex->_excFlags |= 2; + ex->postMessage(); + + return; + } } @@ -226,7 +337,7 @@ int sceneHandler05(ExCommand *ex) { } if (g_vars->scene05_var01) { - if ((g_fullpipe->_updateTicks - g_vars->scene05_var01) > 62 ) { + if ((g_fullpipe->_updateTicks - g_vars->scene05_var01) > 62) { if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { if (g_vars->scene05_var02 % 2) -- cgit v1.2.3 From ab688e15a2709eacca3ab989e69c81370199dad3 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 16:45:28 +0200 Subject: FULLPIPE: Renames in scene05 --- engines/fullpipe/scenes.cpp | 6 +++--- engines/fullpipe/scenes.h | 6 +++--- engines/fullpipe/scenes/scene05.cpp | 25 +++++++++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index a36b30a613..41bec4df93 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -106,9 +106,9 @@ Vars::Vars() { scene05_handle = 0; scene05_wacko = 0; scene05_bigHatch = 0; - scene05_var01 = 0; - scene05_var02 = 0; - scene05_var03 = 0; + scene05_wackoTicker = 0; + scene05_handleFlipper = 0; + scene05_floatersTicker = 0; selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 4645d8bf9c..4c7302d9b7 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -137,9 +137,9 @@ public: StaticANIObject *scene05_handle; StaticANIObject *scene05_wacko; StaticANIObject *scene05_bigHatch; - int scene05_var01; - int scene05_var02; - int scene05_var03; + int scene05_wackoTicker; + int scene05_handleFlipper; + int scene05_floatersTicker; PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index f050913747..00861d951e 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -40,9 +40,9 @@ void scene05_initScene(Scene *sc) { g_vars->scene05_bigHatch = sc->getStaticANIObject1ById(ANI_BIGLUK, -1); - g_vars->scene05_var01 = 0; - g_vars->scene05_var02 = 1; - g_vars->scene05_var03 = 1000; + g_vars->scene05_wackoTicker = 0; + g_vars->scene05_handleFlipper = 1; + g_vars->scene05_floatersTicker = 1000; Scene *oldscene = g_fullpipe->_currentScene; @@ -124,9 +124,9 @@ void sceneHandler05_makeWackoFeedback() { void sceneHandler05_resetTicks() { if (g_fullpipe->_aniMan->_movement && (g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP || g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN)) - g_vars->scene05_var01 = g_fullpipe->_updateTicks; + g_vars->scene05_wackoTicker = g_fullpipe->_updateTicks; else - g_vars->scene05_var01 = 0; + g_vars->scene05_wackoTicker = 0; } void sceneHandler05_genFlies() { @@ -297,7 +297,7 @@ int sceneHandler05(ExCommand *ex) { if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { sceneHandler05_makeWackoFeedback(); - g_vars->scene05_var01 = 0; + g_vars->scene05_wackoTicker = 0; } break; @@ -336,21 +336,22 @@ int sceneHandler05(ExCommand *ex) { res = 1; } - if (g_vars->scene05_var01) { - if ((g_fullpipe->_updateTicks - g_vars->scene05_var01) > 62) { + if (g_vars->scene05_wackoTicker) { + if ((g_fullpipe->_updateTicks - g_vars->scene05_wackoTicker) > 62) { if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { - if (g_vars->scene05_var02 % 2) + if (g_vars->scene05_handleFlipper % 2) sceneHandler05_makeWackoFeedback(); - g_vars->scene05_var01 = 0; + g_vars->scene05_wackoTicker = 0; - ++g_vars->scene05_var02; + ++g_vars->scene05_handleFlipper; } } } - ++g_vars->scene05_var03; + ++g_vars->scene05_floatersTicker; + g_fullpipe->_floaters->update(); g_fullpipe->_behaviorManager->updateBehaviors(); -- cgit v1.2.3 From 73d7a7c14b3bd98523f13f739ae7b0780ee95f37 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 21:43:33 +0200 Subject: FULLPIPE: Implement sceneHandler05_genFlies(). This completes the scene --- engines/fullpipe/scenes/scene05.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 00861d951e..0d0e0de081 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -130,7 +130,24 @@ void sceneHandler05_resetTicks() { } void sceneHandler05_genFlies() { - warning("STUB: sceneHandler05_genFlies()"); + if (g_vars->scene05_floatersTicker <= 1000) + return; + + if (g_fullpipe->_rnd->getRandomNumber(1)) { + int numFlies = g_fullpipe->_rnd->getRandomNumber(3) + 1; + + for (int i = 0; i < numFlies; i++) { + int x = g_fullpipe->_rnd->getRandomNumber(55) + 538; + int y = g_fullpipe->_rnd->getRandomNumber(60) + i * 30 + 520; + + g_fullpipe->_floaters->genFlies(g_fullpipe->_currentScene, x, y, 5, 1); + g_fullpipe->_floaters->_array2.back()->val2 = 585; + g_fullpipe->_floaters->_array2.back()->val3 = -70; + g_fullpipe->_floaters->_array2.back()->val11 = 8.0; + } + } + + g_vars->scene05_floatersTicker = 0; } void sceneHandler05_showHandle() { -- cgit v1.2.3 From 4c445c64463a02c846924b7a7c97eb51c7159117 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 22:41:29 +0200 Subject: FULLPIPE: Fix indentation --- engines/fullpipe/scenes/scene05.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 0d0e0de081..faf53fcae4 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -144,7 +144,7 @@ void sceneHandler05_genFlies() { g_fullpipe->_floaters->_array2.back()->val2 = 585; g_fullpipe->_floaters->_array2.back()->val3 = -70; g_fullpipe->_floaters->_array2.back()->val11 = 8.0; - } + } } g_vars->scene05_floatersTicker = 0; @@ -299,23 +299,23 @@ int sceneHandler05(ExCommand *ex) { switch (ex->_messageNum) { case MSG_SC5_BGRSOUNDOFF: - g_fullpipe->stopAllSoundInstances(SND_5_026); + g_fullpipe->stopAllSoundInstances(SND_5_026); break; case MSG_SC5_BGRSOUNDON: - g_fullpipe->playSound(SND_5_026, 1); + g_fullpipe->playSound(SND_5_026, 1); break; case MSG_SC5_MAKEMANFLIGHT: - sceneHandler05_makeManFlight(); + sceneHandler05_makeManFlight(); break; case MSG_SC5_MAKEOTMFEEDBACK: - if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP + if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { sceneHandler05_makeWackoFeedback(); g_vars->scene05_wackoTicker = 0; - } + } break; case MSG_SC5_SHOWHANDLE: -- cgit v1.2.3 From c37d70b93352e2eeb05b62d74e955089080b2b6a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 15 Dec 2013 22:48:01 +0200 Subject: FULLPIPE: Fix warning --- engines/fullpipe/messages.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index 8ed99fce15..d145a11531 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -573,7 +573,7 @@ int GlobalMessageQueueList::compact() { disableQueueById(_storage[i]->_id); remove_at(i); } else { - if (_storage[i]->_id < size() + 2) + if ((uint)_storage[i]->_id < size() + 2) useList[_storage[i]->_id] = 1; i++; } -- cgit v1.2.3 From 021e00ab7c7fd82ca3b9ec1082abacc373823cfb Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 11:08:54 +0200 Subject: FULLPIPE: Implement scene06_initScene() --- engines/fullpipe/constants.h | 8 ++++ engines/fullpipe/fullpipe.h | 1 + engines/fullpipe/init.cpp | 2 +- engines/fullpipe/input.cpp | 5 +++ engines/fullpipe/module.mk | 1 + engines/fullpipe/objectnames.h | 4 +- engines/fullpipe/scenes.cpp | 15 +++++++ engines/fullpipe/scenes.h | 16 +++++++ engines/fullpipe/scenes/scene02.cpp | 2 +- engines/fullpipe/scenes/scene06.cpp | 88 +++++++++++++++++++++++++++++++++++++ 10 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 engines/fullpipe/scenes/scene06.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index be47e0d264..7abfd8aa0e 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -25,10 +25,12 @@ namespace Fullpipe { +#define ANI_BALLDROP 2685 #define ANI_BIGBALL 4923 #define ANI_BIGLUK 909 #define ANI_BOOT_1 4231 #define ANI_BUTTON 598 +#define ANI_BUTTON_6 2988 #define ANI_CLOCK 588 #define ANI_DOMINO_3 2732 #define ANI_DADAYASHIK 306 @@ -42,11 +44,14 @@ namespace Fullpipe { #define ANI_INV_EGGCOIN 1567 #define ANI_INV_EGGDOM 1561 #define ANI_INV_EGGGLS 1573 +#define ANI_INV_HANDLE 893 #define ANI_INV_MAP 5321 #define ANI_KOZAWKA 495 #define ANI_LIFTBUTTON 2751 +#define ANI_MAMASHA 656 #define ANI_MAMASHA_4 660 #define ANI_MAN 322 +#define ANI_NEWBALL 1073 #define ANI_OTMOROZ 419 #define ANI_PLANK 501 #define ANI_SC2_BOX 1020 @@ -242,6 +247,8 @@ namespace Fullpipe { #define QU_SC4_MANTOBOTTLE 2850 #define QU_SC5_MANBUMP 1167 #define QU_SC5_MANFLY 1168 +#define QU_SC6_ENTERLIFT 1054 +#define QU_SC6_EXITLIFT 1055 #define SC_1 301 #define SC_10 653 #define SC_11 654 @@ -347,6 +354,7 @@ namespace Fullpipe { #define ST_MAN_SIT 1164 #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 +#define ST_NBL_NORM 1076 #define ST_OTM_BOX_LEFT 429 #define ST_OTM_GLS_LEFT 421 #define ST_OTM_VNT_LEFT 434 diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index 51b935362e..d5001b2449 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -246,6 +246,7 @@ public: void initArcadeKeys(const char *varname); void processArcade(ExCommand *ex); void winArcade(); + void setArcadeOverlay(int picId); void getAllInventory(); diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp index eb109e11ec..0b74648140 100644 --- a/engines/fullpipe/init.cpp +++ b/engines/fullpipe/init.cpp @@ -52,7 +52,7 @@ void FullpipeEngine::initObjectStates() { setObjectState(sO_Fly_12, 0); setObjectState(sO_ClockAxis, getObjectEnumState(sO_ClockAxis, sO_NotAvailable)); setObjectState(sO_ClockHandle, getObjectEnumState(sO_ClockHandle, sO_In_7)); - setObjectState(sO_BigMumsy, getObjectEnumState(sO_BigMumsy, sO_Sleeping)); + setObjectState(sO_BigMumsy, getObjectEnumState(sO_BigMumsy, sO_IsSleeping)); setObjectState(sO_CoinSlot_1, getObjectEnumState(sO_CoinSlot_1, sO_Empty)); setObjectState(sO_FriesPit, getObjectEnumState(sO_FriesPit, sO_WithApple)); setObjectState(sO_Jug, getObjectEnumState(sO_Jug, sO_Blocked)); diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index e98920c78a..beff95c2e2 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -274,4 +274,9 @@ void FullpipeEngine::updateCursorCommon() { _cursorId = PIC_CSR_DEFAULT; } +void FullpipeEngine::setArcadeOverlay(int picId) { + warning("STUB: setArcadeOverlay()"); +} + + } // End of namespace Fullpipe diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 1da0c33b86..efb3d65786 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -29,6 +29,7 @@ MODULE_OBJS = \ scenes/scene03.o \ scenes/scene04.o \ scenes/scene05.o \ + scenes/scene06.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index b8696ec672..5e67f09688 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -94,7 +94,7 @@ namespace Fullpipe { #define sO_HalfFull "\xc7\xe0\xef\xee\xeb\xed\xe5\xed \xed\xe0\xef\xee\xeb\xee\xe2\xe8\xed\xf3" // "Заполнен наполовину" #define sO_Full "\xc7\xe0\xef\xee\xeb\xed\xe5\xed \xf6\xe5\xeb\xe8\xea\xee\xec" // "Заполнен целиком" #define sO_MirroredTo "\xc7\xe5\xf0\xea\xe0\xeb\xfc\xed\xe0\xff \xea" // "Зеркальная к" -#define sO_Playing "\xc8\xe3\xf0\xe0\xe5\xf2" // "Играет" +#define sO_IsPlaying "\xc8\xe3\xf0\xe0\xe5\xf2" // "Играет" #define sO_Tub "\xca\xe0\xe4\xea\xe0" // "Кадка" #define sO_Cactus "\xca\xe0\xea\xf2\xf3\xf1" // "Кактус" #define sO_SwingingWithBoot "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff \xf1 \xe1\xee\xf2\xe8\xed\xea\xee\xec" // "Катается с ботинком" @@ -203,7 +203,7 @@ namespace Fullpipe { #define sO_WithMop "\xd1\xee \xf8\xe2\xe0\xe1\xf0\xee\xe9" // "Со шваброй" #define sO_WithHose "\xd1\xee \xf8\xeb\xe0\xed\xe3\xee\xec" // "Со шлангом" #define sO_WithBrush "\xd1\xee \xf9\xe5\xf2\xea\xee\xe9" // "Со щеткой" -#define sO_Sleeping "\xd1\xef\xe8\xf2" // "Спит" +#define sO_IsSleeping "\xd1\xef\xe8\xf2" // "Спит" #define sO_OnRight "\xd1\xef\xf0\xe0\xe2\xe0" // "Справа" #define sO_StandsInBoots "\xd1\xf2\xee\xe8\xf2 \xe2 \xe1\xee\xf2\xe8\xed\xea\xe0\xf5" // "Стоит в ботинках" #define sO_StandsInCorner "\xd1\xf2\xee\xe8\xf2 \xe2 \xf3\xe3\xeb\xf3" // "Стоит в углу" diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 41bec4df93..a4b1a0782e 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -110,6 +110,21 @@ Vars::Vars() { scene05_handleFlipper = 0; scene05_floatersTicker = 0; + scene06_mumsy = 0; + scene06_var06 = 0; + scene06_invHandle = 0; + scene06_liftButton = 0; + scene06_ballDrop = 0; + scene06_var07 = 0; + scene06_var08 = 0; + scene06_var09 = 0; + scene06_var10 = 0; + scene06_var11 = 0; + scene06_var12 = 0; + scene06_var13 = 0; + scene06_var14 = 0; + scene06_var15 = 1; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 4c7302d9b7..7c1e338444 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -141,6 +141,22 @@ public: int scene05_handleFlipper; int scene05_floatersTicker; + StaticANIObject *scene06_mumsy; + int scene06_var06; + StaticANIObject *scene06_invHandle; + StaticANIObject *scene06_liftButton; + StaticANIObject *scene06_ballDrop; + int scene06_var07; + int scene06_var08; + int scene06_var09; + int scene06_var10; + int scene06_var11; + Common::Array scene06_balls; + int scene06_var12; + int scene06_var13; + int scene06_var14; + int scene06_var15; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene02.cpp b/engines/fullpipe/scenes/scene02.cpp index dd01af4c4b..3ca28cb0d1 100644 --- a/engines/fullpipe/scenes/scene02.cpp +++ b/engines/fullpipe/scenes/scene02.cpp @@ -39,7 +39,7 @@ namespace Fullpipe { void scene02_initScene(Scene *sc) { g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1); - if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_Sleeping)) { + if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) { Scene *s = g_fullpipe->_currentScene; g_fullpipe->_currentScene = sc; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp new file mode 100644 index 0000000000..f341216906 --- /dev/null +++ b/engines/fullpipe/scenes/scene06.cpp @@ -0,0 +1,88 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objects.h" +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/gfx.h" +#include "fullpipe/scenes.h" +#include "fullpipe/statics.h" +#include "fullpipe/scene.h" + +namespace Fullpipe { + +void sceneHandler06_setExits(Scene *sc) { + warning("STUB: sceneHandler06_setExits()"); +} + +void scene06_initScene(Scene *sc) { + g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); + g_vars->scene06_var06 = 0; + g_vars->scene06_invHandle = sc->getStaticANIObject1ById(ANI_INV_HANDLE, -1); + g_vars->scene06_liftButton = sc->getStaticANIObject1ById(ANI_BUTTON_6, -1); + g_vars->scene06_ballDrop = sc->getStaticANIObject1ById(ANI_BALLDROP, -1); + g_vars->scene06_var07 = 0; + g_vars->scene06_var08 = 0; + g_vars->scene06_var09 = 0; + g_vars->scene06_var10 = 0; + g_vars->scene06_var11 = 0; + g_vars->scene06_balls.clear(); + g_vars->scene06_var12 = 0; + g_vars->scene06_var13 = 0; + g_vars->scene06_var14 = 0; + g_vars->scene06_var15 = 1; + + StaticANIObject *ball = sc->getStaticANIObject1ById(ANI_NEWBALL, -1); + + ball->hide(); + ball->_statics = ball->getStaticsById(ST_NBL_NORM); + g_vars->scene06_balls.push_back(ball); + + for (int i = 0; i < 3; i++) { + StaticANIObject *ball2 = new StaticANIObject(ball); + + ball2->hide(); + ball2->_statics = ball2->getStaticsById(ST_NBL_NORM); + + sc->addStaticANIObject(ball2, 1); + + g_vars->scene06_balls.push_back(ball2); + } + + if (g_fullpipe->getObjectState(sO_BigMumsy) == g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)) + g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)); + + if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) + g_vars->scene06_mumsy->hide(); + + g_fullpipe->lift_setButton(sO_Level3, ST_LBN_3N); + g_fullpipe->lift_sub5(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT); + g_fullpipe->initArcadeKeys("SC_6"); + + sceneHandler06_setExits(sc); + + g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE2); +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From 0911865af6d1eb3a883c840b1e5823833fd50a81 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 11:10:39 +0200 Subject: FULLPIPE: Rearrange arcade-related functions --- engines/fullpipe/input.cpp | 20 ++++++++++++++++++++ engines/fullpipe/scenes.cpp | 20 -------------------- 2 files changed, 20 insertions(+), 20 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index beff95c2e2..d551019de4 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -274,6 +274,26 @@ void FullpipeEngine::updateCursorCommon() { _cursorId = PIC_CSR_DEFAULT; } +void FullpipeEngine::initArcadeKeys(const char *varname) { + GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS"); + + if (!var) + return; + + int cnt = var->getSubVarsCount(); + + for (int i = 0; i < cnt; i++) { + Common::Point *point = new Common::Point; + + GameVar *sub = var->getSubVarByIndex(i); + + point->x = sub->getSubVarAsInt("X"); + point->y = sub->getSubVarAsInt("Y"); + + _arcadeKeys.push_back(point); + } +} + void FullpipeEngine::setArcadeOverlay(int picId) { warning("STUB: setArcadeOverlay()"); } diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index a4b1a0782e..74beb1cdb1 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -729,26 +729,6 @@ int defaultUpdateCursor() { return g_fullpipe->_cursorId; } -void FullpipeEngine::initArcadeKeys(const char *varname) { - GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS"); - - if (!var) - return; - - int cnt = var->getSubVarsCount(); - - for (int i = 0; i < cnt; i++) { - Common::Point *point = new Common::Point; - - GameVar *sub = var->getSubVarByIndex(i); - - point->x = sub->getSubVarAsInt("X"); - point->y = sub->getSubVarAsInt("Y"); - - _arcadeKeys.push_back(point); - } -} - void FullpipeEngine::processArcade(ExCommand *ex) { warning("STUB: FullpipeEngine::processArcade()"); } -- cgit v1.2.3 From fe8d2df77c63bb23b070dda89c97f7a491e54d49 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 11:18:33 +0200 Subject: FULLPIPE: Implement FullpipeEngine::setArcadeOverlay() --- engines/fullpipe/fullpipe.cpp | 7 +++++++ engines/fullpipe/fullpipe.h | 8 ++++++++ engines/fullpipe/input.cpp | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp index 970af423ae..674f67fe55 100644 --- a/engines/fullpipe/fullpipe.cpp +++ b/engines/fullpipe/fullpipe.cpp @@ -148,6 +148,13 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc) _objectAtCursor = 0; _objectIdAtCursor = 0; + _arcadeOverlay = 0; + _arcadeOverlayHelper = 0; + _arcadeOverlayX = 0; + _arcadeOverlayY = 0; + _arcadeOverlayMidX = 0; + _arcadeOverlayMidY = 0; + _isSaveAllowed = true; g_fullpipe = this; diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index d5001b2449..b326c45004 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -63,6 +63,7 @@ struct MessageHandler; struct MovTable; class MGM; class NGIArchive; +class PictureObject; class Scene; class SoundList; class StaticANIObject; @@ -243,6 +244,13 @@ public: void openHelp(); void openMainMenu(); + PictureObject *_arcadeOverlay; + PictureObject *_arcadeOverlayHelper; + int _arcadeOverlayX; + int _arcadeOverlayY; + int _arcadeOverlayMidX; + int _arcadeOverlayMidY; + void initArcadeKeys(const char *varname); void processArcade(ExCommand *ex); void winArcade(); diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index d551019de4..d5431dd473 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -295,7 +295,20 @@ void FullpipeEngine::initArcadeKeys(const char *varname) { } void FullpipeEngine::setArcadeOverlay(int picId) { - warning("STUB: setArcadeOverlay()"); + Common::Point point; + Common::Point point2; + + _arcadeOverlayX = 800; + _arcadeOverlayY = 545; + + _arcadeOverlayHelper = accessScene(SC_INV)->getPictureObjectById(PIC_CSR_HELPERBGR, 0); + _arcadeOverlay = accessScene(SC_INV)->getPictureObjectById(picId, 0); + + _arcadeOverlay->getDimensions(&point); + _arcadeOverlayHelper->getDimensions(&point2); + + _arcadeOverlayMidX = (point2.x - point.x) / 2; + _arcadeOverlayMidY = abs(point2.y - point.y) / 2; } -- cgit v1.2.3 From 1d8b6a6843bd0fd4298b6a46f107230bcba52b6d Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Mon, 16 Dec 2013 20:32:13 +0100 Subject: FULLPIPE: Fix off-by-one error when checking valid 'idx' Verified by sev, but I haven't actually seen it cause any problems. --- engines/fullpipe/messages.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index d145a11531..e8fcf75fb6 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -331,7 +331,7 @@ void MessageQueue::addExCommandToEnd(ExCommand *ex) { } ExCommand *MessageQueue::getExCommandByIndex(uint idx) { - if (idx > getCount()) + if (idx >= getCount()) return 0; Common::List::iterator it = _exCommands.begin(); @@ -345,7 +345,7 @@ ExCommand *MessageQueue::getExCommandByIndex(uint idx) { } void MessageQueue::deleteExCommandByIndex(uint idx, bool doFree) { - if (idx > getCount()) + if (idx >= getCount()) return; Common::List::iterator it = _exCommands.begin(); -- cgit v1.2.3 From 5fc18c023d76d85624417b4c9fc90b0e61823faa Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 22:05:21 +0200 Subject: FULLPIPE: Implement sceneHandler06() --- engines/fullpipe/constants.h | 13 ++ engines/fullpipe/gameloader.cpp | 4 + engines/fullpipe/gameloader.h | 1 + engines/fullpipe/scenes.cpp | 14 ++ engines/fullpipe/scenes.h | 21 ++- engines/fullpipe/scenes/scene06.cpp | 309 ++++++++++++++++++++++++++++++++++++ 6 files changed, 359 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 7abfd8aa0e..f36006c25c 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -113,10 +113,22 @@ namespace Fullpipe { #define MSG_SC5_MAKEOTMFEEDBACK 1169 #define MSG_SC5_SHOWHANDLE 918 #define MSG_SC5_TESTLUK 914 +#define MSG_SC6_BTNPUSH 1017 +#define MSG_SC6_ENABLEDROPS 687 +#define MSG_SC6_INSTHANDLE 1012 +#define MSG_SC6_JUMPBK 2900 +#define MSG_SC6_JUMPFW 2901 +#define MSG_SC6_RESTORESCROLL 2906 +#define MSG_SC6_SHOWNEXTBALL 790 +#define MSG_SC6_STARTDROPS 2897 +#define MSG_SC6_TAKEBALL 682 +#define MSG_SC6_TESTNUMBALLS 2904 +#define MSG_SC6_UTRUBACLICK 1105 #define MSG_GOTOLADDER 618 #define MSG_SHAKEBOTTLE 584 #define MSG_SHOOTKOZAW 557 #define MSG_SHOWCOIN 1033 +#define MSG_SPINHANDLE 2398 #define MSG_STARTHAND 612 #define MSG_TAKEBOTTLE 614 #define MSG_TAKEKOZAW 611 @@ -354,6 +366,7 @@ namespace Fullpipe { #define ST_MAN_SIT 1164 #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 +#define ST_MAN6_BALL 2688 #define ST_NBL_NORM 1076 #define ST_OTM_BOX_LEFT 429 #define ST_OTM_GLS_LEFT 421 diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp index e130337001..0b667124ef 100644 --- a/engines/fullpipe/gameloader.cpp +++ b/engines/fullpipe/gameloader.cpp @@ -510,4 +510,8 @@ InputController *FullpipeEngine::getGameLoaderInputController() { return 0; } +MotionController *getCurrSceneSc2MotionController() { + return getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); +} + } // End of namespace Fullpipe diff --git a/engines/fullpipe/gameloader.h b/engines/fullpipe/gameloader.h index 4f5462671d..074537500c 100644 --- a/engines/fullpipe/gameloader.h +++ b/engines/fullpipe/gameloader.h @@ -111,6 +111,7 @@ class GameLoader : public CObject { Inventory2 *getGameLoaderInventory(); InteractionController *getGameLoaderInteractionController(); MctlCompound *getSc2MctlCompoundBySceneId(int16 sceneId); +MotionController *getCurrSceneSc2MotionController(); } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 74beb1cdb1..95786759e2 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -110,6 +110,10 @@ Vars::Vars() { scene05_handleFlipper = 0; scene05_floatersTicker = 0; + scene06_var01 = 0; + scene06_var02 = 0; + scene06_var03 = 0; + scene06_var04 = 0; scene06_mumsy = 0; scene06_var06 = 0; scene06_invHandle = 0; @@ -124,6 +128,16 @@ Vars::Vars() { scene06_var13 = 0; scene06_var14 = 0; scene06_var15 = 1; + scene06_var16 = 0; + scene06_var17 = 0; + scene06_var18 = 0; + scene06_sceneClickX = 0; + scene06_sceneClickY = 0; + scene06_mumsyPos = 0; + scene06_mumsyJumpBk = 0; + scene06_mumsyJumpFw = 0; + scene06_mumsyJumpBkPercent = 0; + scene06_mumsyJumpFwPercent = 0; selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 7c1e338444..73ebb41682 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -25,8 +25,9 @@ namespace Fullpipe { +struct BehaviorEntryInfo; class StaticANIObject; - class MctlLadder; +class MctlLadder; int defaultUpdateCursor(); @@ -142,20 +143,34 @@ public: int scene05_floatersTicker; StaticANIObject *scene06_mumsy; + int scene06_var01; + int scene06_var02; + int scene06_var03; + int scene06_var04; int scene06_var06; StaticANIObject *scene06_invHandle; StaticANIObject *scene06_liftButton; StaticANIObject *scene06_ballDrop; int scene06_var07; int scene06_var08; - int scene06_var09; + StaticANIObject *scene06_var09; int scene06_var10; - int scene06_var11; + StaticANIObject *scene06_var11; Common::Array scene06_balls; int scene06_var12; int scene06_var13; int scene06_var14; int scene06_var15; + int scene06_var16; + int scene06_var17; + int scene06_var18; + int scene06_sceneClickX; + int scene06_sceneClickY; + int scene06_mumsyPos; + BehaviorEntryInfo *scene06_mumsyJumpBk; + BehaviorEntryInfo *scene06_mumsyJumpFw; + int scene06_mumsyJumpBkPercent; + int scene06_mumsyJumpFwPercent; PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index f341216906..1ec6eddc1b 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -29,6 +29,11 @@ #include "fullpipe/scenes.h" #include "fullpipe/statics.h" #include "fullpipe/scene.h" +#include "fullpipe/messages.h" +#include "fullpipe/gameloader.h" +#include "fullpipe/behavior.h" +#include "fullpipe/motion.h" +#include "fullpipe/interaction.h" namespace Fullpipe { @@ -36,6 +41,83 @@ void sceneHandler06_setExits(Scene *sc) { warning("STUB: sceneHandler06_setExits()"); } +void sceneHandler06_winArcade() { + warning("STUB: sceneHandler06_winArcade()"); +} + +void sceneHandler06_enableDrops() { + warning("STUB: sceneHandler06_enableDrops()"); +} + +void sceneHandler06_sub01() { + warning("STUB: sceneHandler06_sub01()"); +} + +void sceneHandler06_spinHandle() { + warning("STUB: sceneHandler06_spinHandle()"); +} + +void sceneHandler06_uPipeClick() { + warning("STUB: sceneHandler06_uPipeClick()"); +} + +void sceneHandler06_buttonPush() { + warning("STUB: sceneHandler06_buttonPush()"); +} + +void sceneHandler06_showNextBall() { + warning("STUB: sceneHandler06_showNextBall()"); +} + +void sceneHandler06_installHandle() { + warning("STUB: sceneHandler06_installHandle()"); +} + +void sceneHandler06_takeBall() { + warning("STUB: sceneHandler06_takeBall()"); +} + +void sceneHandler06_sub02() { + warning("STUB: sceneHandler06_sub02()"); +} + +void sceneHandler06_throwBall() { + warning("STUB: sceneHandler06_throwBall()"); +} + +void sceneHandler06_sub03() { + warning("STUB: sceneHandler06_sub03()"); +} + +void sceneHandler06_sub04(int par) { + warning("STUB: sceneHandler06_sub04()"); +} + +void sceneHandler06_sub05() { + warning("STUB: sceneHandler06_sub05()"); +} + +void sceneHandler06_sub06() { + warning("STUB: sceneHandler06_sub06()"); +} + +void sceneHandler06_sub07() { + warning("STUB: sceneHandler06_sub07()"); +} + +void sceneHandler06_sub08() { + warning("STUB: sceneHandler06_sub08()"); +} + +void sceneHandler06_sub09() { + warning("STUB: sceneHandler06_sub09()"); +} + +void sceneHandler06_sub10() { + warning("STUB: sceneHandler06_sub10()"); +} + + void scene06_initScene(Scene *sc) { g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); g_vars->scene06_var06 = 0; @@ -85,4 +167,231 @@ void scene06_initScene(Scene *sc) { g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE2); } +int sceneHandler06(ExCommand *ex) { + if (ex->_messageKind != 17) + return 0; + + switch(ex->_messageNum) { + case MSG_LIFT_CLOSEDOOR: + g_fullpipe->lift_closedoorSeq(); + break; + + case MSG_LIFT_EXITLIFT: + g_fullpipe->lift_exitSeq(ex); + break; + + case MSG_CMN_WINARCADE: + sceneHandler06_winArcade(); + break; + + case MSG_LIFT_STARTEXITQUEUE: + g_fullpipe->lift_startExitQueue(); + break; + + case MSG_SC6_RESTORESCROLL: + g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + getCurrSceneSc2MotionController()->setEnabled(); + getGameLoaderInteractionController()->enableFlag24(); + sceneHandler06_setExits(g_fullpipe->_currentScene); + break; + + case MSG_SC6_STARTDROPS: + if (g_fullpipe->getObjectState(sO_BigMumsy) == g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) + sceneHandler06_enableDrops(); + break; + + case MSG_SC6_TESTNUMBALLS: + g_vars->scene06_var16 = 0; + + if (g_vars->scene06_var13 < 5 || !g_vars->scene06_var07) + return 0; + + sceneHandler06_sub01(); + break; + + case MSG_SC6_JUMPFW: + ++g_vars->scene06_mumsyPos; + break; + + case MSG_SC6_JUMPBK: + --g_vars->scene06_mumsyPos; + break; + + case MSG_LIFT_CLICKBUTTON: + g_fullpipe->lift_animation3(); + break; + + case MSG_SPINHANDLE: + sceneHandler06_spinHandle(); + break; + + case MSG_LIFT_GO: + g_fullpipe->lift_goAnimation(); + break; + + case MSG_SC6_UTRUBACLICK: + sceneHandler06_uPipeClick(); + break; + + case MSG_SC6_BTNPUSH: + sceneHandler06_buttonPush(); + break; + + case MSG_SC6_SHOWNEXTBALL: + sceneHandler06_showNextBall(); + break; + + case MSG_SC6_INSTHANDLE: + sceneHandler06_installHandle(); + break; + + case MSG_SC6_ENABLEDROPS: + sceneHandler06_enableDrops(); + break; + + case 64: + g_fullpipe->lift_sub05(ex); + break; + + case MSG_SC6_TAKEBALL: + sceneHandler06_takeBall(); + break; + + case 30: + if (g_vars->scene06_var08) { + sceneHandler06_sub02(); + break; + } + + if (!g_vars->scene06_var07) { + // Do nothing + break; + } + break; + + case 29: + { + StaticANIObject *st = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + + if (st) { + if (!g_vars->scene06_var07 && st->_id == ANI_LIFTBUTTON) { + g_fullpipe->lift_sub1(st); + ex->_messageKind = 0; + return 0; + } + + if (g_vars->scene06_var09 == st) { + if (g_vars->scene06_var12 == 1) + sceneHandler06_takeBall(); + + ex->_messageKind = 0; + } else if (g_vars->scene06_var10 && g_fullpipe->_aniMan == st && !g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL) { + g_vars->scene06_sceneClickX = ex->_sceneClickX; + g_vars->scene06_sceneClickY = ex->_sceneClickY; + + sceneHandler06_throwBall(); + } + } + + if (!st || !canInteractAny(g_fullpipe->_aniMan, st, ex->_keyCode)) { + int picId = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); + PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picId, 0); + + if (!pic || !canInteractAny(g_fullpipe->_aniMan, pic, ex->_keyCode)) { + if ((g_fullpipe->_sceneRect.right - ex->_sceneClickX < 47 + && g_fullpipe->_sceneRect.right < g_fullpipe->_sceneWidth - 1) + || (ex->_sceneClickX - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0)) { + g_fullpipe->processArcade(ex); + return 0; + } + } + } + } + + break; + + case 33: + { + int res = 0; + + if (g_fullpipe->_aniMan2) { + int ox = g_fullpipe->_aniMan2->_ox; + int oy = g_fullpipe->_aniMan2->_oy; + + g_vars->scene06_var01 = ox; + g_vars->scene06_var02 = oy; + + if (g_vars->scene06_var07 && oy <= 470 && ox >= 1088) { + if (ox < g_fullpipe->_sceneRect.left + 600) { + g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 700; + ox = g_vars->scene06_var01; + } + + if (ox > g_fullpipe->_sceneRect.right - 50) + g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.right + 70; + } else { + if (ox < g_fullpipe->_sceneRect.left + 200) { + g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 300; + ox = g_vars->scene06_var01; + } + + if (ox > g_fullpipe->_sceneRect.right - 200) + g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.right + 300; + } + + res = 1; + } + if (g_vars->scene06_var07) { + if (g_vars->scene06_mumsyPos > -3) + g_vars->scene06_mumsyJumpBk->_percent = g_vars->scene06_mumsyJumpBkPercent; + else + g_vars->scene06_mumsyJumpBk->_percent = 0; + + if (g_vars->scene06_mumsyPos < 4) + g_vars->scene06_mumsyJumpFw->_percent = g_vars->scene06_mumsyJumpFwPercent; + else + g_vars->scene06_mumsyJumpFw->_percent = 0; + + if (g_vars->scene06_var08) { + g_vars->scene06_var14++; + if (g_vars->scene06_var14 >= 600) + sceneHandler06_sub03(); + } + } else { + g_vars->scene06_mumsyJumpFw->_percent = 0; + g_vars->scene06_mumsyJumpBk->_percent = 0; + } + + if (g_vars->scene06_var11) { + g_vars->scene06_var03 = g_vars->scene06_var11->_ox - g_vars->scene06_var17; + g_vars->scene06_var04 = g_vars->scene06_var11->_oy - g_vars->scene06_var18; + + g_vars->scene06_var11->setOXY(g_vars->scene06_var03, g_vars->scene06_var04); + + if (g_vars->scene06_var17 >= 2) + g_vars->scene06_var17 -= 2; + + g_vars->scene06_var18 -= 5; + + sceneHandler06_sub04(g_vars->scene06_var17); + } + if (g_vars->scene06_var07 + && !g_vars->scene06_var09 + && !g_vars->scene06_var10 + && !g_vars->scene06_var11 + && g_vars->scene06_var12 >= 15 + && !g_vars->scene06_ballDrop->_movement + && !g_vars->scene06_mumsy->_movement + && !g_vars->scene06_var16) + sceneHandler06_sub01(); + g_fullpipe->_behaviorManager->updateBehaviors(); + g_fullpipe->startSceneTrack(); + + return res; + } + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From 65512ffd970b9d2ad0ebc1920213c77f4a0ebbcb Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 22:16:47 +0200 Subject: FULLPIPE: Implement scene06_initMumsy() --- engines/fullpipe/behavior.cpp | 6 ++++++ engines/fullpipe/behavior.h | 2 ++ engines/fullpipe/constants.h | 3 +++ engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes/scene06.cpp | 7 +++++++ 5 files changed, 19 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp index c27f1082f5..bcf5f0d7bb 100644 --- a/engines/fullpipe/behavior.cpp +++ b/engines/fullpipe/behavior.cpp @@ -198,6 +198,12 @@ void BehaviorManager::setFlagByStaticAniObject(StaticANIObject *ani, int flag) { } } +BehaviorEntryInfo *BehaviorManager::getBehaviorEntryInfoByMessageQueueDataId(StaticANIObject *ani, int id1, int id2) { + warning("STUB: getBehaviorEntryInfoByMessageQueueDataId()"); + + return 0; +} + void BehaviorInfo::clear() { _ani = 0; _staticsId = 0; diff --git a/engines/fullpipe/behavior.h b/engines/fullpipe/behavior.h index 1ac0b5bbfe..90bb38dc9b 100644 --- a/engines/fullpipe/behavior.h +++ b/engines/fullpipe/behavior.h @@ -81,6 +81,8 @@ class BehaviorManager : public CObject { bool setBehaviorEnabled(StaticANIObject *obj, int aniId, int quId, int flag); void setFlagByStaticAniObject(StaticANIObject *ani, int flag); + + BehaviorEntryInfo *getBehaviorEntryInfoByMessageQueueDataId(StaticANIObject *ani, int id1, int id2); }; } // End of namespace Fullpipe diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index f36006c25c..1729c5acbf 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -251,6 +251,8 @@ namespace Fullpipe { #define QU_INTR_GETUPMAN 5136 #define QU_INTR_STARTINTRO 5133 #define QU_KOZAW_WALK 505 +#define QU_MOM_JUMPBK 671 +#define QU_MOM_JUMPFW 670 #define QU_PNK_CLICK 550 #define QU_SC3_ENTERLIFT 2779 #define QU_SC3_EXITLIFT 2808 @@ -367,6 +369,7 @@ namespace Fullpipe { #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 #define ST_MAN6_BALL 2688 +#define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 #define ST_OTM_BOX_LEFT 429 #define ST_OTM_GLS_LEFT 421 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 95786759e2..74f7c87458 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -320,7 +320,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _behaviorManager->initBehavior(scene, sceneVar); scene->initObjectCursors("SC_6"); setSceneMusicParameters(sceneVar); - sub_415300(); + scene06_initMumsy(); insertMessageHandler(sceneHandler06, 2, 2); _updateCursorCallback = scene06_updateCursor; break; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 1ec6eddc1b..cddb260025 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -37,6 +37,13 @@ namespace Fullpipe { +void scene06_initMumsy() { + g_vars->scene06_mumsyJumpFw = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPFW); + g_vars->scene06_mumsyJumpBk = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPBK); + g_vars->scene06_mumsyJumpFwPercent = g_vars->scene06_mumsyJumpFw->_percent; + g_vars->scene06_mumsyJumpBkPercent = g_vars->scene06_mumsyJumpBk->_percent; +} + void sceneHandler06_setExits(Scene *sc) { warning("STUB: sceneHandler06_setExits()"); } -- cgit v1.2.3 From 9ecdb4c1fce7efb6a7cfa673b33d6be12f8b5752 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 22:18:49 +0200 Subject: FULLPIPE: Enable scene06 --- engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes.h | 5 +++++ engines/fullpipe/scenes/scene06.cpp | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 74f7c87458..2aa852bbac 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -312,7 +312,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = defaultUpdateCursor; break; -#if 0 case SC_6: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_6"); scene->preloadMovements(sceneVar); @@ -325,6 +324,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = scene06_updateCursor; break; +#if 0 case SC_7: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_7"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 73ebb41682..e8a240dcd1 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -54,6 +54,11 @@ int sceneHandler04(ExCommand *cmd); void scene05_initScene(Scene *sc); int sceneHandler05(ExCommand *cmd); +void scene06_initScene(Scene *sc); +void scene06_initMumsy(); +int sceneHandler06(ExCommand *cmd); +int scene06_updateCursor(); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index cddb260025..bd1b20572a 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -44,6 +44,12 @@ void scene06_initMumsy() { g_vars->scene06_mumsyJumpBkPercent = g_vars->scene06_mumsyJumpBk->_percent; } +int scene06_updateCursor() { + warning("STUB: scene06_updateCursor()"); + + return 0; +} + void sceneHandler06_setExits(Scene *sc) { warning("STUB: sceneHandler06_setExits()"); } -- cgit v1.2.3 From 2c8476377149fa716b892d0e49b16656abe9769c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 16 Dec 2013 22:27:41 +0200 Subject: FULLPIPE: Implement scene06_updateCursor() --- engines/fullpipe/scenes/scene06.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index bd1b20572a..76f61ff894 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -45,9 +45,27 @@ void scene06_initMumsy() { } int scene06_updateCursor() { - warning("STUB: scene06_updateCursor()"); + g_fullpipe->updateCursorCommon(); - return 0; + if (g_vars->scene06_var07) { + if (g_vars->scene06_var08) { + g_fullpipe->_cursorId = PIC_CSR_ARCADE2_D; + + return PIC_CSR_ARCADE2_D; + } + if (g_fullpipe->_aniMan == (StaticANIObject *)g_fullpipe->_objectAtCursor) { + if (g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL && g_fullpipe->_cursorId == PIC_CSR_DEFAULT) { + g_fullpipe->_cursorId = PIC_CSR_ITN; + + return PIC_CSR_ITN; + } + } else if (g_fullpipe->_objectAtCursor && (StaticANIObject *)g_fullpipe->_objectAtCursor == g_vars->scene06_var09 + && g_fullpipe->_cursorId == PIC_CSR_DEFAULT) { + g_fullpipe->_cursorId = PIC_CSR_ITN; + } + } + + return g_fullpipe->_cursorId; } void sceneHandler06_setExits(Scene *sc) { -- cgit v1.2.3 From bdd9931357bc7623c17d0fa606b2c854be771b64 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 10:08:20 +0200 Subject: FULLPIPE: Implement sceneHandler06_enableDrops() --- engines/fullpipe/constants.h | 3 +++ engines/fullpipe/scenes/scene06.cpp | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 1729c5acbf..3d9b0bad53 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -253,6 +253,7 @@ namespace Fullpipe { #define QU_KOZAW_WALK 505 #define QU_MOM_JUMPBK 671 #define QU_MOM_JUMPFW 670 +#define QU_MOM_STANDUP 2899 #define QU_PNK_CLICK 550 #define QU_SC3_ENTERLIFT 2779 #define QU_SC3_EXITLIFT 2808 @@ -261,6 +262,7 @@ namespace Fullpipe { #define QU_SC4_MANTOBOTTLE 2850 #define QU_SC5_MANBUMP 1167 #define QU_SC5_MANFLY 1168 +#define QU_SC6_DROPS 2898 #define QU_SC6_ENTERLIFT 1054 #define QU_SC6_EXITLIFT 1055 #define SC_1 301 @@ -369,6 +371,7 @@ namespace Fullpipe { #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 #define ST_MAN6_BALL 2688 +#define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 #define ST_OTM_BOX_LEFT 429 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 76f61ff894..a8ce227ca0 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -77,7 +77,20 @@ void sceneHandler06_winArcade() { } void sceneHandler06_enableDrops() { - warning("STUB: sceneHandler06_enableDrops()"); + chainQueue(QU_SC6_DROPS, 0); + + g_vars->scene06_mumsy->changeStatics2(ST_MOM_SITS); + g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)); + + chainQueue(QU_MOM_STANDUP, 1); + + g_vars->scene06_var07 = 1; + g_vars->scene06_var12 = 0; + g_vars->scene06_mumsyPos = 0; + g_vars->scene06_var13 = 0; + g_vars->scene06_var16 = 0; + + sceneHandler06_setExits(g_fullpipe->_currentScene); } void sceneHandler06_sub01() { -- cgit v1.2.3 From ce586cf836deb63b08db667d8faba72fb50e2fad Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 10:14:00 +0200 Subject: FULLPIPE: More code to scene06 --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene06.cpp | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 3d9b0bad53..159b296ca4 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -236,6 +236,7 @@ namespace Fullpipe { #define PIC_SC4_LRTRUBA 616 #define PIC_SC4_MASK 585 #define PIC_SC4_PLANK 5183 +#define PIC_SC6_LADDER 1104 #define PIC_SCD_SEL 734 #define QU_BALL_WALKL 4920 #define QU_BALL_WALKR 4919 @@ -265,6 +266,7 @@ namespace Fullpipe { #define QU_SC6_DROPS 2898 #define QU_SC6_ENTERLIFT 1054 #define QU_SC6_EXITLIFT 1055 +#define QU_SC6_SHOWHANDLE 1689 #define SC_1 301 #define SC_10 653 #define SC_11 654 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index a8ce227ca0..ecccd7844d 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -102,7 +102,8 @@ void sceneHandler06_spinHandle() { } void sceneHandler06_uPipeClick() { - warning("STUB: sceneHandler06_uPipeClick()"); + if (getGameLoaderInteractionController()->_flag24) + handleObjectInteraction(g_fullpipe->_aniMan2, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC6_LADDER, 0), 0); } void sceneHandler06_buttonPush() { @@ -114,7 +115,7 @@ void sceneHandler06_showNextBall() { } void sceneHandler06_installHandle() { - warning("STUB: sceneHandler06_installHandle()"); + chainQueue(QU_SC6_SHOWHANDLE, 0); } void sceneHandler06_takeBall() { -- cgit v1.2.3 From 3fb03efbe33fff3b83e0facc67e96e9253987fe5 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 10:23:24 +0200 Subject: FULLPIPE: Implement sceneHandler06_buttonPush() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene06.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 159b296ca4..6bd80a3d4b 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -258,6 +258,7 @@ namespace Fullpipe { #define QU_PNK_CLICK 550 #define QU_SC3_ENTERLIFT 2779 #define QU_SC3_EXITLIFT 2808 +#define QU_SC6_FALLHANDLE 2995 #define QU_SC4_GOCLOCK 595 #define QU_SC4_MANFROMBOTTLE 2851 #define QU_SC4_MANTOBOTTLE 2850 @@ -335,6 +336,7 @@ namespace Fullpipe { #define ST_EGTR_SLIM 336 #define ST_HDL_BROKEN 3342 #define ST_HDL_DOWN 625 +#define ST_HDL_PLUGGED 2397 #define ST_HDL_UP 624 #define ST_HND_EMPTY 603 #define ST_IN1MAN_SLEEP 5112 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index ecccd7844d..73f38e4cf6 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -107,7 +107,13 @@ void sceneHandler06_uPipeClick() { } void sceneHandler06_buttonPush() { - warning("STUB: sceneHandler06_buttonPush()"); + g_vars->scene06_invHandle = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1); + + if (g_vars->scene06_invHandle) + if (g_vars->scene06_invHandle->_flags & 4) + if (g_vars->scene06_invHandle->_statics) + if (g_vars->scene06_invHandle->_statics->_staticsId == ST_HDL_PLUGGED) + chainQueue(QU_SC6_FALLHANDLE, 1); } void sceneHandler06_showNextBall() { -- cgit v1.2.3 From ba0faf81238f3a60dab53c0294777ee6474efc6e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 12:15:51 +0200 Subject: FULLPIPE: Implement sceneHandler06_showNextBall() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes.h | 2 +- engines/fullpipe/scenes/scene06.cpp | 20 +++++++++++++++----- 4 files changed, 18 insertions(+), 7 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 6bd80a3d4b..ccaea13e4a 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -268,6 +268,7 @@ namespace Fullpipe { #define QU_SC6_ENTERLIFT 1054 #define QU_SC6_EXITLIFT 1055 #define QU_SC6_SHOWHANDLE 1689 +#define QU_SC6_SHOWNEXTBALL 2689 #define SC_1 301 #define SC_10 653 #define SC_11 654 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 2aa852bbac..38c5b8ce33 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -124,7 +124,7 @@ Vars::Vars() { scene06_var09 = 0; scene06_var10 = 0; scene06_var11 = 0; - scene06_var12 = 0; + scene06_numBallsGiven = 0; scene06_var13 = 0; scene06_var14 = 0; scene06_var15 = 1; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index e8a240dcd1..28fc2b7801 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -162,7 +162,7 @@ public: int scene06_var10; StaticANIObject *scene06_var11; Common::Array scene06_balls; - int scene06_var12; + int scene06_numBallsGiven; int scene06_var13; int scene06_var14; int scene06_var15; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 73f38e4cf6..4e44b2c737 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -85,7 +85,7 @@ void sceneHandler06_enableDrops() { chainQueue(QU_MOM_STANDUP, 1); g_vars->scene06_var07 = 1; - g_vars->scene06_var12 = 0; + g_vars->scene06_numBallsGiven = 0; g_vars->scene06_mumsyPos = 0; g_vars->scene06_var13 = 0; g_vars->scene06_var16 = 0; @@ -117,7 +117,17 @@ void sceneHandler06_buttonPush() { } void sceneHandler06_showNextBall() { - warning("STUB: sceneHandler06_showNextBall()"); + if (g_vars->scene06_balls.size()) { + g_vars->scene06_var09 = new StaticANIObject(g_vars->scene06_balls.front()); + g_vars->scene06_balls.remove_at(0); + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1); + + mq->replaceKeyCode(-1, g_vars->scene06_var09->_okeyCode); + mq->chain(0); + + ++g_vars->scene06_numBallsGiven; + } } void sceneHandler06_installHandle() { @@ -181,7 +191,7 @@ void scene06_initScene(Scene *sc) { g_vars->scene06_var10 = 0; g_vars->scene06_var11 = 0; g_vars->scene06_balls.clear(); - g_vars->scene06_var12 = 0; + g_vars->scene06_numBallsGiven = 0; g_vars->scene06_var13 = 0; g_vars->scene06_var14 = 0; g_vars->scene06_var15 = 1; @@ -332,7 +342,7 @@ int sceneHandler06(ExCommand *ex) { } if (g_vars->scene06_var09 == st) { - if (g_vars->scene06_var12 == 1) + if (g_vars->scene06_numBallsGiven == 1) sceneHandler06_takeBall(); ex->_messageKind = 0; @@ -430,7 +440,7 @@ int sceneHandler06(ExCommand *ex) { && !g_vars->scene06_var09 && !g_vars->scene06_var10 && !g_vars->scene06_var11 - && g_vars->scene06_var12 >= 15 + && g_vars->scene06_numBallsGiven >= 15 && !g_vars->scene06_ballDrop->_movement && !g_vars->scene06_mumsy->_movement && !g_vars->scene06_var16) -- cgit v1.2.3 From 8bb1666f9f97009a1dbcdb026b25c5bb03fe52ea Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 13:49:36 +0200 Subject: FULLPIPE: Implement sceneHandler06_spinHandle() --- engines/fullpipe/init.cpp | 2 +- engines/fullpipe/objectnames.h | 8 ++++---- engines/fullpipe/scenes/scene06.cpp | 11 ++++++++++- 3 files changed, 15 insertions(+), 6 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp index 0b74648140..34d8335fc2 100644 --- a/engines/fullpipe/init.cpp +++ b/engines/fullpipe/init.cpp @@ -45,7 +45,7 @@ void FullpipeEngine::initObjectStates() { setSwallowedEggsState(); setObjectState(sO_WeirdWacko, getObjectEnumState(sO_WeirdWacko, sO_InGlasses)); - setObjectState(sO_TumyTrampie, getObjectEnumState(sO_TumyTrampie, sO_Drinking)); + setObjectState(sO_TummyTrampie, getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)); setObjectState(sO_StairsUp_8, getObjectEnumState(sO_StairsUp_8, sO_NotBroken)); setObjectState(sO_HareTheNooksiter, getObjectEnumState(sO_HareTheNooksiter, sO_WithHandle)); setObjectState(sO_Elephantine, getObjectEnumState(sO_Elephantine, sO_WithBoot)); diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index 5e67f09688..2cea77cf2a 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -30,7 +30,7 @@ namespace Fullpipe { #define sO_Grandma "\xc1\xe0\xe1\xf3\xeb\xff" // "Бабуля" #define sO_Jar_4 "\xc1\xe0\xed\xea\xe0_4" // "Банка_4" #define sO_Pool "\xc1\xe0\xf1\xf1\xe5\xe9\xed" // "Бассейн" -#define sO_TumyTrampie "\xc1\xe0\xf2\xf3\xf2\xe0" // "Батута" +#define sO_TummyTrampie "\xc1\xe0\xf2\xf3\xf2\xe0" // "Батута" #define sO_WithoutBoot "\xc1\xe5\xe7 \xe1\xee\xf2\xe8\xed\xea\xe0" // "Без ботинка" #define sO_WithoutJug "\xc1\xe5\xe7 \xe3\xee\xf0\xf8\xea\xee\xe2" // "Без горшков" #define sO_WithoutCarpet "\xc1\xe5\xe7 \xea\xee\xe2\xf0\xe8\xea\xe0" // "Без коврика" @@ -82,7 +82,7 @@ namespace Fullpipe { #define sO_Dude "\xc4\xff\xe4\xff" // "Дядя" #define sO_GuvTheDrawer "\xc4\xff\xe4\xff-\xff\xf9\xe8\xea" // "Дядя-ящик" #define sO_DudeSwinged "\xc4\xff\xe4\xff_\xea\xe0\xf2\xe0\xeb\xf1\xff" // "Дядя_катался" -#define sO_Eats "\xc5\xf1\xf2" // "Ест" +#define sO_IsEating "\xc5\xf1\xf2" // "Ест" #define sO_Present "\xc5\xf1\xf2\xfc" // "Есть" #define sO_CloseThing1 "\xc7\xe0\xea\xf0\xfb\xe2\xe0\xe5\xec\xee\xe5 1" // "Закрываемое 1" #define sO_CloseThing2 "\xc7\xe0\xea\xf0\xfb\xe2\xe0\xe5\xec\xee\xe5 2" // "Закрываемое 2" @@ -168,7 +168,7 @@ namespace Fullpipe { #define sO_Empty "\xcf\xf3\xf1\xf2" // "Пуст" #define sO_EmptyShe "\xcf\xf3\xf1\xf2\xe0\xff" // "Пустая" #define sO_WayToPipe "\xcf\xf3\xf2\xfc \xea \xf2\xf0\xf3\xe1\xe5" // "Путь к трубе" -#define sO_Drinking "\xcf\xfc\xe5\xf2" // "Пьет" +#define sO_IsDrinking "\xcf\xfc\xe5\xf2" // "Пьет" #define sO_BrokenInPieces "\xd0\xe0\xe7\xe1\xe8\xf2\xe0" // "Разбита" #define sO_Unblocked "\xd0\xe0\xe7\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xe0\xed" // "Разблокирован" #define sO_Unfolded "\xd0\xe0\xe7\xe2\xe5\xf0\xed\xf3\xf2" // "Развернут" @@ -226,7 +226,7 @@ namespace Fullpipe { #define sO_FallenOnce "\xd3\xef\xe0\xeb \xf0\xe0\xe7" // "Упал раз" #define sO_FallenBrush "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0" // "Упала щетка" #define sO_NotBroken "\xd6\xe5\xeb\xe0" // "Цела" -#define sO_ScratchingBelly "\xd7\xe5\xf8\xe5\xf2 \xef\xf3\xe7\xee" // "Чешет пузо" +#define sO_IsScratchingBelly "\xd7\xe5\xf8\xe5\xf2 \xef\xf3\xe7\xee" // "Чешет пузо" #define sO_Level0 "\xdd\xf2\xe0\xe6 0" // "Этаж 0" #define sO_Level1 "\xdd\xf2\xe0\xe6 1" // "Этаж 1" #define sO_Level2 "\xdd\xf2\xe0\xe6 2" // "Этаж 2" diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 4e44b2c737..a2b9f2771e 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -98,7 +98,16 @@ void sceneHandler06_sub01() { } void sceneHandler06_spinHandle() { - warning("STUB: sceneHandler06_spinHandle()"); + int tummy = g_fullpipe->getObjectState(sO_TummyTrampie); + + if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) + g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)); + else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) + g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)); + else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) + g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)); + else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) + g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)); } void sceneHandler06_uPipeClick() { -- cgit v1.2.3 From e57745ee9520f89a9b946ad205b3b322d14ef1df Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 13:58:04 +0200 Subject: FULLPIPE: Implement sceneHandler06_takeBall() --- engines/fullpipe/scenes/scene06.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index a2b9f2771e..07532588e6 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -143,8 +143,29 @@ void sceneHandler06_installHandle() { chainQueue(QU_SC6_SHOWHANDLE, 0); } +void sceneHandler06_sub08() { + warning("STUB: sceneHandler06_sub08()"); +} + void sceneHandler06_takeBall() { - warning("STUB: sceneHandler06_takeBall()"); + if (g_vars->scene06_var09 && !g_vars->scene06_var09->_movement && g_vars->scene06_var09->_statics->_staticsId == ST_NBL_NORM) { + if (abs(1158 - g_fullpipe->_aniMan->_ox) > 1 + || abs(452 - g_fullpipe->_aniMan->_oy) > 1 + || g_fullpipe->_aniMan->_movement + || g_fullpipe->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) { + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fullpipe->_aniMan, 1158, 452, 1, (0x4000 | ST_MAN_RIGHT)); + + if (mq) { + ExCommand *ex = new ExCommand(0, 17, MSG_SC6_TAKEBALL, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + mq->addExCommandToEnd(ex); + + postExCommand(g_fullpipe->_aniMan->_id, 2, 1158, 452, 0, -1); + } + } else { + sceneHandler06_sub08(); + } + } } void sceneHandler06_sub02() { @@ -175,10 +196,6 @@ void sceneHandler06_sub07() { warning("STUB: sceneHandler06_sub07()"); } -void sceneHandler06_sub08() { - warning("STUB: sceneHandler06_sub08()"); -} - void sceneHandler06_sub09() { warning("STUB: sceneHandler06_sub09()"); } -- cgit v1.2.3 From 35758d05d4fdfbe04c26419b347c261be6e2b444 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 21:49:03 +0200 Subject: FULLPIPE: Implement sceneHandler06_throwBall() --- engines/fullpipe/constants.h | 9 +++++---- engines/fullpipe/scenes/scene06.cpp | 31 ++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index ccaea13e4a..fd4f835ec4 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -138,15 +138,15 @@ namespace Fullpipe { #define MV_BLK_OPEN 910 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 +#define MV_BDG_OPEN 1379 +#define MV_BTN_CLICK 599 +#define MV_CLK_GO 589 +#define MV_HND_POINT 602 #define MV_KZW_GOR 564 #define MV_KZW_JUMP 558 #define MV_KZW_JUMPROTATE 561 #define MV_KZW_TOHOLERV 537 #define MV_KZW_WALKPLANK 500 -#define MV_BDG_OPEN 1379 -#define MV_BTN_CLICK 599 -#define MV_CLK_GO 589 -#define MV_HND_POINT 602 #define MV_KZW_JUMPHIT 2857 #define MV_KZW_JUMPOUT 586 #define MV_KZW_RAISEHEAD 577 @@ -171,6 +171,7 @@ namespace Fullpipe { #define MV_MAN_TOLADDER2 2841 #define MV_MAN_TURN_LU 486 #define MV_MAN_TURN_SUD 1089 +#define MV_MAN6_THROWBALL 2692 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 #define MV_OTM_BOXHANDLEDOWN 626 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 07532588e6..65494f4bf2 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -172,8 +172,33 @@ void sceneHandler06_sub02() { warning("STUB: sceneHandler06_sub02()"); } +void sceneHandler06_sub07() { + warning("STUB: sceneHandler06_sub07()"); +} + +void sceneHandler06_throwCallback(int *arg) { + if (g_vars->scene06_var08) { + int dist = (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) + * (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) + + (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX) + * (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX); + + *arg = sqrt(dist) * 0.1; + + if (*arg > 8) + *arg = 8; + } else { + *arg = *arg + 1; + if (*arg == 12) + sceneHandler06_sub07(); + } +} + void sceneHandler06_throwBall() { - warning("STUB: sceneHandler06_throwBall()"); + g_fullpipe->_aniMan->_callback2 = sceneHandler06_throwCallback; + g_fullpipe->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1); + + g_vars->scene06_var08 = 1; } void sceneHandler06_sub03() { @@ -192,10 +217,6 @@ void sceneHandler06_sub06() { warning("STUB: sceneHandler06_sub06()"); } -void sceneHandler06_sub07() { - warning("STUB: sceneHandler06_sub07()"); -} - void sceneHandler06_sub09() { warning("STUB: sceneHandler06_sub09()"); } -- cgit v1.2.3 From 17cb840bc2a405c5b93f046f389481f72d878fdd Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 22:47:56 +0200 Subject: FULLPIPE: More code to scene06 --- engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes.h | 4 ++-- engines/fullpipe/scenes/scene06.cpp | 39 ++++++++++++++++++++++++++++--------- 3 files changed, 33 insertions(+), 12 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 38c5b8ce33..b4a8625ef9 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -121,7 +121,7 @@ Vars::Vars() { scene06_ballDrop = 0; scene06_var07 = 0; scene06_var08 = 0; - scene06_var09 = 0; + scene06_currentBall = 0; scene06_var10 = 0; scene06_var11 = 0; scene06_numBallsGiven = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 28fc2b7801..15f5e7ac92 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -158,8 +158,8 @@ public: StaticANIObject *scene06_ballDrop; int scene06_var07; int scene06_var08; - StaticANIObject *scene06_var09; - int scene06_var10; + StaticANIObject *scene06_currentBall; + StaticANIObject *scene06_var10; StaticANIObject *scene06_var11; Common::Array scene06_balls; int scene06_numBallsGiven; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 65494f4bf2..8b9db0f446 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -59,7 +59,7 @@ int scene06_updateCursor() { return PIC_CSR_ITN; } - } else if (g_fullpipe->_objectAtCursor && (StaticANIObject *)g_fullpipe->_objectAtCursor == g_vars->scene06_var09 + } else if (g_fullpipe->_objectAtCursor && (StaticANIObject *)g_fullpipe->_objectAtCursor == g_vars->scene06_currentBall && g_fullpipe->_cursorId == PIC_CSR_DEFAULT) { g_fullpipe->_cursorId = PIC_CSR_ITN; } @@ -127,12 +127,12 @@ void sceneHandler06_buttonPush() { void sceneHandler06_showNextBall() { if (g_vars->scene06_balls.size()) { - g_vars->scene06_var09 = new StaticANIObject(g_vars->scene06_balls.front()); + g_vars->scene06_currentBall = new StaticANIObject(g_vars->scene06_balls.front()); g_vars->scene06_balls.remove_at(0); MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1); - mq->replaceKeyCode(-1, g_vars->scene06_var09->_okeyCode); + mq->replaceKeyCode(-1, g_vars->scene06_currentBall->_okeyCode); mq->chain(0); ++g_vars->scene06_numBallsGiven; @@ -148,7 +148,7 @@ void sceneHandler06_sub08() { } void sceneHandler06_takeBall() { - if (g_vars->scene06_var09 && !g_vars->scene06_var09->_movement && g_vars->scene06_var09->_statics->_staticsId == ST_NBL_NORM) { + if (g_vars->scene06_currentBall && !g_vars->scene06_currentBall->_movement && g_vars->scene06_currentBall->_statics->_staticsId == ST_NBL_NORM) { if (abs(1158 - g_fullpipe->_aniMan->_ox) > 1 || abs(452 - g_fullpipe->_aniMan->_oy) > 1 || g_fullpipe->_aniMan->_movement @@ -169,11 +169,32 @@ void sceneHandler06_takeBall() { } void sceneHandler06_sub02() { - warning("STUB: sceneHandler06_sub02()"); + if (g_vars->scene06_var10) { + g_vars->scene06_var17 = 4 * g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 16; + g_vars->scene06_var18 = 5 * (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 4); + + if (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex < 4) { + g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(11); + + g_vars->scene06_var08 = 0; + + return; + } + + g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(9); + } + + g_vars->scene06_var08 = 0; } void sceneHandler06_sub07() { - warning("STUB: sceneHandler06_sub07()"); + if (g_vars->scene06_var10) { + g_vars->scene06_var11 = g_vars->scene06_var10; + g_vars->scene06_var10 = 0; + g_vars->scene06_var11->show1(g_fullpipe->_aniMan->_ox - 60, g_fullpipe->_aniMan->_oy - 60, -1, 0); + + g_vars->scene06_var11->_priority = 27; + } } void sceneHandler06_throwCallback(int *arg) { @@ -234,7 +255,7 @@ void scene06_initScene(Scene *sc) { g_vars->scene06_ballDrop = sc->getStaticANIObject1ById(ANI_BALLDROP, -1); g_vars->scene06_var07 = 0; g_vars->scene06_var08 = 0; - g_vars->scene06_var09 = 0; + g_vars->scene06_currentBall = 0; g_vars->scene06_var10 = 0; g_vars->scene06_var11 = 0; g_vars->scene06_balls.clear(); @@ -388,7 +409,7 @@ int sceneHandler06(ExCommand *ex) { return 0; } - if (g_vars->scene06_var09 == st) { + if (g_vars->scene06_currentBall == st) { if (g_vars->scene06_numBallsGiven == 1) sceneHandler06_takeBall(); @@ -484,7 +505,7 @@ int sceneHandler06(ExCommand *ex) { sceneHandler06_sub04(g_vars->scene06_var17); } if (g_vars->scene06_var07 - && !g_vars->scene06_var09 + && !g_vars->scene06_currentBall && !g_vars->scene06_var10 && !g_vars->scene06_var11 && g_vars->scene06_numBallsGiven >= 15 -- cgit v1.2.3 From b4ce81baf9057b2158ef41104d61d1647ab0ee80 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 17 Dec 2013 23:32:30 +0200 Subject: FULLPIPE: Implement sceneHandler06_sub04() --- engines/fullpipe/messages.cpp | 19 +++++++++++++++++++ engines/fullpipe/messages.h | 1 + engines/fullpipe/scenes/scene06.cpp | 27 +++++++++++++++++++-------- 3 files changed, 39 insertions(+), 8 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index e8fcf75fb6..8ea94ff1eb 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -810,6 +810,25 @@ bool chainQueue(int queueId, int flags) { return true; } +bool chainObjQueue(StaticANIObject *obj, int queueId, int flags) { + MessageQueue *mq = g_fullpipe->_currentScene->getMessageQueueById(queueId); + + if (!mq) + return false; + + MessageQueue *nmq = new MessageQueue(mq, 0, 0); + + nmq->_flags |= flags; + + if (!nmq->chain(obj)) { + delete nmq; + + return false; + } + + return true; +} + void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f14) { ExCommand *ex = new ExCommand(parentId, 17, 64, 0, 0, 0, 1, 0, 0, 0); diff --git a/engines/fullpipe/messages.h b/engines/fullpipe/messages.h index ca61dad007..44245bcf19 100644 --- a/engines/fullpipe/messages.h +++ b/engines/fullpipe/messages.h @@ -178,6 +178,7 @@ void updateGlobalMessageQueue(int id, int objid); void clearGlobalMessageQueueList1(); bool chainQueue(int queueId, int flags); +bool chainObjQueue(StaticANIObject *obj, int queueId, int flags); void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f16); } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 8b9db0f446..62360e62b8 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -226,22 +226,33 @@ void sceneHandler06_sub03() { warning("STUB: sceneHandler06_sub03()"); } -void sceneHandler06_sub04(int par) { - warning("STUB: sceneHandler06_sub04()"); -} - void sceneHandler06_sub05() { warning("STUB: sceneHandler06_sub05()"); } -void sceneHandler06_sub06() { - warning("STUB: sceneHandler06_sub06()"); -} - void sceneHandler06_sub09() { warning("STUB: sceneHandler06_sub09()"); } +void sceneHandler06_sub04(int par) { + int pixel; + + if (g_vars->scene06_var04 <= 475) { + if (g_vars->scene06_mumsy->getPixelAtPos(g_vars->scene06_var03, g_vars->scene06_var04, &pixel)) { + if (pixel) { + chainObjQueue(g_vars->scene06_mumsy, QU_MOM_JUMPBK, 0); + sceneHandler06_sub09(); + } + } + } else { + sceneHandler06_sub05(); + } +} + +void sceneHandler06_sub06() { + warning("STUB: sceneHandler06_sub06()"); +} + void sceneHandler06_sub10() { warning("STUB: sceneHandler06_sub10()"); } -- cgit v1.2.3 From 9f1dee1115d450a252fd30e14423e54110e49bde Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 10:16:19 +0200 Subject: FULLPIPE: Fix compiler warnings --- engines/fullpipe/motion.cpp | 18 +++++++++--------- engines/fullpipe/scenes/scene06.cpp | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 16ac82be9e..2dd025855d 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -507,8 +507,8 @@ double MovGraph::calcDistance(Common::Point *point, MovGraphLink *link, int fuzz return -1.0; } } else { - point->x = n1x + (dist2x * distm / link->_distance); - point->y = n1y + (dist2y * distm / link->_distance); + point->x = (int)(n1x + (dist2x * distm / link->_distance)); + point->y = (int)(n1y + (dist2y * distm / link->_distance)); } return res; @@ -1166,7 +1166,7 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int double dst1 = sqrt((double)((ypos - nod->_y) * (ypos - nod->_y) + (xpos - nod->_x) * (xpos - nod->_x))); int dst = linkInfoDest.link->_movGraphNode2->_distance - nod->_distance; - movInfo1.distance2 = nod->_distance + (dst1 * (double)dst / linkInfoDest.link->_distance); + movInfo1.distance2 = (int)(nod->_distance + (dst1 * (double)dst / linkInfoDest.link->_distance)); calcDistance(&movInfo1.pt2, linkInfoDest.link, 1); @@ -1798,15 +1798,15 @@ bool MovGraphReact::pointInRegion(int x, int y) { double xinters; Common::Point p, p1, p2; - p.x = (double)x; - p.y = (double)y; + p.x = x; + p.y = y; - p1.x = (double)_points[0]->x; - p1.y = (double)_points[0]->y; + p1.x = _points[0]->x; + p1.y = _points[0]->y; for (int i = 1; i <= _pointCount; i++) { - p2.x = (double)_points[i % _pointCount]->x; - p2.y = (double)_points[i % _pointCount]->y; + p2.x = _points[i % _pointCount]->x; + p2.y = _points[i % _pointCount]->y; if (p.y > MIN(p1.y, p2.y)) { if (p.y <= MAX(p1.y, p2.y)) { diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 62360e62b8..9dc4708b3e 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -204,7 +204,7 @@ void sceneHandler06_throwCallback(int *arg) { + (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX) * (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX); - *arg = sqrt(dist) * 0.1; + *arg = (int)(sqrt((double)dist) * 0.1); if (*arg > 8) *arg = 8; -- cgit v1.2.3 From fa94808e31dbcb21175a63e896c1aff90f61caec Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 15:27:04 +0200 Subject: FULLPIPE: Implement sceneHandler06_sub05() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene06.cpp | 25 +++++++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index fd4f835ec4..d449c01ff5 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -268,6 +268,7 @@ namespace Fullpipe { #define QU_SC6_DROPS 2898 #define QU_SC6_ENTERLIFT 1054 #define QU_SC6_EXITLIFT 1055 +#define QU_SC6_FALLBALL 2690 #define QU_SC6_SHOWHANDLE 1689 #define QU_SC6_SHOWNEXTBALL 2689 #define SC_1 301 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 9dc4708b3e..3b72030e15 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -226,8 +226,26 @@ void sceneHandler06_sub03() { warning("STUB: sceneHandler06_sub03()"); } +void sceneHandler06_sub10() { + warning("STUB: sceneHandler06_sub10()"); +} + void sceneHandler06_sub05() { - warning("STUB: sceneHandler06_sub05()"); + g_vars->scene06_var04 = 475; + + g_vars->scene06_var11->setOXY(g_vars->scene06_var03, g_vars->scene06_var04); + + MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1); + + mq->replaceKeyCode(-1, g_vars->scene06_var11->_okeyCode); + mq->chain(0); + + g_vars->scene06_balls.push_back(g_vars->scene06_var11); + + g_vars->scene06_var11 = 0; + + sceneHandler06_sub10(); + sceneHandler06_sub03(); } void sceneHandler06_sub09() { @@ -253,11 +271,6 @@ void sceneHandler06_sub06() { warning("STUB: sceneHandler06_sub06()"); } -void sceneHandler06_sub10() { - warning("STUB: sceneHandler06_sub10()"); -} - - void scene06_initScene(Scene *sc) { g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); g_vars->scene06_var06 = 0; -- cgit v1.2.3 From 4bc2f258a4b5b320a3176071bc2948b987ff00f9 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 15:41:05 +0200 Subject: FULLPIPE: Implement sceneHandler06_sub03() --- engines/fullpipe/constants.h | 3 +++ engines/fullpipe/scenes/scene06.cpp | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index d449c01ff5..01ab47afdc 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -35,6 +35,7 @@ namespace Fullpipe { #define ANI_DOMINO_3 2732 #define ANI_DADAYASHIK 306 #define ANI_EGGEATER 334 +#define ANI_EGGIE 4929 #define ANI_HAND 601 #define ANI_HANDLE 622 #define ANI_IN1MAN 5110 @@ -241,6 +242,8 @@ namespace Fullpipe { #define PIC_SCD_SEL 734 #define QU_BALL_WALKL 4920 #define QU_BALL_WALKR 4919 +#define QU_EGG6_GOL 4936 +#define QU_EGG6_GOR 4935 #define QU_EGTR_MD2_SHOW 4698 #define QU_EGTR_MD1_SHOW 4697 #define QU_EGTR_SLIMSHOW 4883 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 3b72030e15..f1a6e77b52 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -223,7 +223,18 @@ void sceneHandler06_throwBall() { } void sceneHandler06_sub03() { - warning("STUB: sceneHandler06_sub03()"); + if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_fullpipe->_rnd->getRandomNumber(9)) { + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1); + if (!ani || !(ani->_flags & 4)) { + if (g_vars->scene06_var15) + chainQueue(QU_EGG6_GOR, 0); + else + chainQueue(QU_EGG6_GOL, 0); + + g_vars->scene06_var14 = 0; + g_vars->scene06_var15 = (g_vars->scene06_var15 == 0); + } + } } void sceneHandler06_sub10() { -- cgit v1.2.3 From 4fb8e6e66e1c4c0af3cf226d59dc00f2ea44ed1e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 15:51:24 +0200 Subject: FULLPIPE: Implement sceneHandler06_sub08() and sceneHandler06_sub10() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/fullpipe.h | 1 + engines/fullpipe/input.cpp | 5 +++++ engines/fullpipe/scenes/scene06.cpp | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 38 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 01ab47afdc..b1f005d718 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -172,6 +172,7 @@ namespace Fullpipe { #define MV_MAN_TOLADDER2 2841 #define MV_MAN_TURN_LU 486 #define MV_MAN_TURN_SUD 1089 +#define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 @@ -269,6 +270,7 @@ namespace Fullpipe { #define QU_SC5_MANBUMP 1167 #define QU_SC5_MANFLY 1168 #define QU_SC6_DROPS 2898 +#define QU_SC6_DROPS3 2955 #define QU_SC6_ENTERLIFT 1054 #define QU_SC6_EXITLIFT 1055 #define QU_SC6_FALLBALL 2690 diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index b326c45004..aa42fd01cc 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -255,6 +255,7 @@ public: void processArcade(ExCommand *ex); void winArcade(); void setArcadeOverlay(int picId); + int drawArcadeOverlay(int adjust); void getAllInventory(); diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index d5431dd473..e2c638ed46 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -311,5 +311,10 @@ void FullpipeEngine::setArcadeOverlay(int picId) { _arcadeOverlayMidY = abs(point2.y - point.y) / 2; } +int FullpipeEngine::drawArcadeOverlay(int adjust) { + warning("STUB: drawArcadeOverlay()"); + + return 1; +} } // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index f1a6e77b52..7b765373b2 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -143,8 +143,33 @@ void sceneHandler06_installHandle() { chainQueue(QU_SC6_SHOWHANDLE, 0); } +int sceneHandler06_updateScreenCallback() { + int res; + + res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_var07); + if (!res ) + g_fullpipe->_updateScreenCallback = 0; + + return res; +} + void sceneHandler06_sub08() { - warning("STUB: sceneHandler06_sub08()"); + if (g_vars->scene06_currentBall) { + g_vars->scene06_currentBall->hide(); + + g_fullpipe->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1); + + g_vars->scene06_var10 = g_vars->scene06_currentBall; + g_vars->scene06_currentBall = 0; + + if (getCurrSceneSc2MotionController()->_isEnabled) + g_fullpipe->_updateScreenCallback = sceneHandler06_updateScreenCallback; + + getCurrSceneSc2MotionController()->clearEnabled(); + getGameLoaderInteractionController()->disableFlag24(); + + g_vars->scene06_ballDrop->queueMessageQueue(0); + } } void sceneHandler06_takeBall() { @@ -238,7 +263,10 @@ void sceneHandler06_sub03() { } void sceneHandler06_sub10() { - warning("STUB: sceneHandler06_sub10()"); + if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5 ) + g_vars->scene06_ballDrop->hide(); + else + chainQueue(QU_SC6_DROPS3, 0); } void sceneHandler06_sub05() { -- cgit v1.2.3 From 29773ef1c055ce898c89abcc0415b23d8e10e849 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 15:54:02 +0200 Subject: FULLPIPE: Implement FullpipeEngine::drawArcadeOverlay() --- engines/fullpipe/input.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index e2c638ed46..60b6f621ea 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -312,7 +312,30 @@ void FullpipeEngine::setArcadeOverlay(int picId) { } int FullpipeEngine::drawArcadeOverlay(int adjust) { - warning("STUB: drawArcadeOverlay()"); + _arcadeOverlayHelper->drawAt(_sceneRect.left + _arcadeOverlayX, _sceneRect.top + _arcadeOverlayY); + _arcadeOverlay->drawAt(_sceneRect.left + _arcadeOverlayX + _arcadeOverlayMidX, _sceneRect.top + _arcadeOverlayY + _arcadeOverlayMidY); + + if (adjust) { + if (_arcadeOverlayX > 745) { + _arcadeOverlayX -= 15; + + if (_arcadeOverlayX < 745) + _arcadeOverlayX = 745; + } + + return 1; + } + + if (_arcadeOverlayX >= 800) { + return 0; + } else { + _arcadeOverlayX += 15; + + if (_arcadeOverlayX <= 800) + return 1; + + _arcadeOverlayX = 800; + } return 1; } -- cgit v1.2.3 From db7b6b3352817990a7a25a6e253ea165074d47ec Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 18:38:08 +0200 Subject: FULLPIPE: Implement sceneHandler06_mumsyBallTake() --- engines/fullpipe/constants.h | 12 +++++ engines/fullpipe/init.cpp | 2 +- engines/fullpipe/objectnames.h | 4 +- engines/fullpipe/scenes.h | 2 +- engines/fullpipe/scenes/scene04.cpp | 2 +- engines/fullpipe/scenes/scene06.cpp | 101 +++++++++++++++++++++++++++++++++--- 6 files changed, 111 insertions(+), 12 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b1f005d718..d1e1820c27 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -176,6 +176,16 @@ namespace Fullpipe { #define MV_MAN6_THROWBALL 2692 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 +#define MV_MOM_CYCLEBK 3012 +#define MV_MOM_JUMPBK 662 +#define MV_MOM_JUMPFW 661 +#define MV_MOM_STARTBK 3010 +#define MV_MOM_STOPBK 3013 +#define MV_MOM_TAKE1 2885 +#define MV_MOM_TAKE2 2886 +#define MV_MOM_TAKE3 2887 +#define MV_MOM_TAKE4 2888 +#define MV_MOM_TAKE5 2889 #define MV_OTM_BOXHANDLEDOWN 626 #define MV_OTM_BOXHANDLEUP 627 #define MV_OTM_HANDLEDOWN 620 @@ -259,7 +269,9 @@ namespace Fullpipe { #define QU_KOZAW_WALK 505 #define QU_MOM_JUMPBK 671 #define QU_MOM_JUMPFW 670 +#define QU_MOM_SITDOWN 685 #define QU_MOM_STANDUP 2899 +#define QU_MOM_TOLIFT 2902 #define QU_PNK_CLICK 550 #define QU_SC3_ENTERLIFT 2779 #define QU_SC3_EXITLIFT 2808 diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp index 34d8335fc2..beac854d5b 100644 --- a/engines/fullpipe/init.cpp +++ b/engines/fullpipe/init.cpp @@ -50,7 +50,7 @@ void FullpipeEngine::initObjectStates() { setObjectState(sO_HareTheNooksiter, getObjectEnumState(sO_HareTheNooksiter, sO_WithHandle)); setObjectState(sO_Elephantine, getObjectEnumState(sO_Elephantine, sO_WithBoot)); setObjectState(sO_Fly_12, 0); - setObjectState(sO_ClockAxis, getObjectEnumState(sO_ClockAxis, sO_NotAvailable)); + setObjectState(sO_ClockAxis, getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)); setObjectState(sO_ClockHandle, getObjectEnumState(sO_ClockHandle, sO_In_7)); setObjectState(sO_BigMumsy, getObjectEnumState(sO_BigMumsy, sO_IsSleeping)); setObjectState(sO_CoinSlot_1, getObjectEnumState(sO_CoinSlot_1, sO_Empty)); diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index 2cea77cf2a..b61a5c6f62 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -135,7 +135,7 @@ namespace Fullpipe { #define sO_NotGrown "\xcd\xe5 \xe2\xfb\xf0\xee\xf1" // "Не вырос" #define sO_DidNotCrackEgg "\xcd\xe5 \xea\xee\xeb\xee\xeb \xff\xe9\xf6\xee" // "Не колол яйцо" #define sO_NotFallen "\xcd\xe5 \xef\xe0\xe4\xe0\xeb" // "Не падал" -#define sO_NotAvailable "\xcd\xe5\xe4\xee\xf1\xf2\xf3\xef\xed\xe0" // "Недоступна" +#define sO_IsNotAvailable "\xcd\xe5\xe4\xee\xf1\xf2\xf3\xef\xed\xe0" // "Недоступна" #define sO_CannotTake "\xcd\xe5\xeb\xfc\xe7\xff \xe2\xe7\xff\xf2\xfc" // "Нельзя взять" #define sO_No "\xcd\xe5\xf2" // "Нет" #define sO_LowerHatch_23 "\xcd\xe8\xe6\xed\xe8\xe9 \xeb\xfe\xea_23" // "Нижний люк_23" @@ -222,7 +222,7 @@ namespace Fullpipe { #define sO_NearPipe "\xd3 \xf2\xf0\xf3\xe1\xfb" // "У трубы" #define sO_Janitors "\xd3\xe1\xee\xf0\xf9\xe8\xea\xe8" // "Уборщики" #define sO_Janitress "\xd3\xe1\xee\xf0\xf9\xe8\xf6\xe0" // "Уборщица" -#define sO_Gone "\xd3\xe5\xf5\xe0\xeb\xe0" // "Уехала" +#define sO_IsGone "\xd3\xe5\xf5\xe0\xeb\xe0" // "Уехала" #define sO_FallenOnce "\xd3\xef\xe0\xeb \xf0\xe0\xe7" // "Упал раз" #define sO_FallenBrush "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0" // "Упала щетка" #define sO_NotBroken "\xd6\xe5\xeb\xe0" // "Цела" diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 15f5e7ac92..8f404d223c 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -152,7 +152,7 @@ public: int scene06_var02; int scene06_var03; int scene06_var04; - int scene06_var06; + StaticANIObject *scene06_var06; StaticANIObject *scene06_invHandle; StaticANIObject *scene06_liftButton; StaticANIObject *scene06_ballDrop; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 8415aee6fd..28b2d77d5b 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -182,7 +182,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_bigBallCounter = 0; g_vars->scene04_bigBallFromLeft = true; - if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_Gone)) + if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)) g_vars->scene04_mamasha->hide(); g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1); diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 7b765373b2..5a63b6c230 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -73,7 +73,6 @@ void sceneHandler06_setExits(Scene *sc) { } void sceneHandler06_winArcade() { - warning("STUB: sceneHandler06_winArcade()"); } void sceneHandler06_enableDrops() { @@ -93,8 +92,96 @@ void sceneHandler06_enableDrops() { sceneHandler06_setExits(g_fullpipe->_currentScene); } -void sceneHandler06_sub01() { - warning("STUB: sceneHandler06_sub01()"); +void sceneHandler06_mumsyBallTake() { + int momAni = 0; + + switch (g_vars->scene06_var13) { + case 1: + momAni = MV_MOM_TAKE1; + break; + case 2: + momAni = MV_MOM_TAKE2; + break; + case 3: + momAni = MV_MOM_TAKE3; + break; + case 4: + momAni = MV_MOM_TAKE4; + break; + case 5: + momAni = MV_MOM_TAKE5; + break; + } + + MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + + ExCommand *ex = new ExCommand(ANI_MAMASHA, 2, 50, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags = 2u; + mq->addExCommandToEnd(ex); + + if (g_vars->scene06_var13 >= 5) { + g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); + + if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) + g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); + + ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + + if (g_vars->scene06_mumsyPos + 3 >= 0) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_STARTBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2u; + mq->addExCommandToEnd(ex); + + for (int i = 0; i < g_vars->scene06_mumsyPos + 3; i++) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_CYCLEBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_STOPBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + ex = new ExCommand(0, 18, QU_MOM_TOLIFT, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3; + mq->addExCommandToEnd(ex); + } else { + if (momAni) { + ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + + if (g_vars->scene06_mumsyPos < 0) { + for (int i = 0; i > g_vars->scene06_mumsyPos; i--) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_JUMPFW, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + } else if (g_vars->scene06_mumsyPos > 0) { + for (int i = 0; i < g_vars->scene06_mumsyPos; i++) { + ex = new ExCommand(ANI_MAMASHA, 1, MV_MOM_JUMPBK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + mq->addExCommandToEnd(ex); + } + } + + ex = new ExCommand(0, 18, QU_MOM_SITDOWN, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 3u; + mq->addExCommandToEnd(ex); + } + + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + + g_vars->scene06_var13 = 0; + g_vars->scene06_var07 = 0; + + g_fullpipe->_aniMan2 = 0; } void sceneHandler06_spinHandle() { @@ -147,7 +234,7 @@ int sceneHandler06_updateScreenCallback() { int res; res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_var07); - if (!res ) + if (!res) g_fullpipe->_updateScreenCallback = 0; return res; @@ -263,7 +350,7 @@ void sceneHandler06_sub03() { } void sceneHandler06_sub10() { - if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5 ) + if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5) g_vars->scene06_ballDrop->hide(); else chainQueue(QU_SC6_DROPS3, 0); @@ -398,7 +485,7 @@ int sceneHandler06(ExCommand *ex) { if (g_vars->scene06_var13 < 5 || !g_vars->scene06_var07) return 0; - sceneHandler06_sub01(); + sceneHandler06_mumsyBallTake(); break; case MSG_SC6_JUMPFW: @@ -575,7 +662,7 @@ int sceneHandler06(ExCommand *ex) { && !g_vars->scene06_ballDrop->_movement && !g_vars->scene06_mumsy->_movement && !g_vars->scene06_var16) - sceneHandler06_sub01(); + sceneHandler06_mumsyBallTake(); g_fullpipe->_behaviorManager->updateBehaviors(); g_fullpipe->startSceneTrack(); -- cgit v1.2.3 From 675e6643f7c283f7d9c5320a49c15fd3a8893e4e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 18:38:30 +0200 Subject: FULLPIPE: Implement sceneHandler06_winArcade() --- engines/fullpipe/scenes/scene06.cpp | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 5a63b6c230..4f76714660 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -73,6 +73,50 @@ void sceneHandler06_setExits(Scene *sc) { } void sceneHandler06_winArcade() { + g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); + + if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) + g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); + + if (g_vars->scene06_var07) { + g_fullpipe->_aniMan->_callback2 = 0; + + g_fullpipe->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); + + if (g_vars->scene06_var06) { + g_vars->scene06_var06->_flags &= 0xFFFB; + + g_vars->scene06_balls.push_back(g_vars->scene06_var06); + + g_vars->scene06_var06 = 0; + } + + if (g_vars->scene06_var11) { + g_vars->scene06_var11->_flags &= 0xFFFB; + + g_vars->scene06_balls.push_back(g_vars->scene06_var11); + + g_vars->scene06_var11 = 0; + } + + if (g_vars->scene06_var10) { + g_vars->scene06_var10->_flags &= 0xFFFB; + + g_vars->scene06_balls.push_back(g_vars->scene06_var10); + + g_vars->scene06_var10 = 0; + } + + g_vars->scene06_var07 = 0; + g_vars->scene06_var08 = 0; + } + + g_vars->scene06_mumsy->_flags &= 0xFFFB; + + sceneHandler06_setExits(g_fullpipe->_currentScene); + + getCurrSceneSc2MotionController()->setEnabled(); + getGameLoaderInteractionController()->enableFlag24(); } void sceneHandler06_enableDrops() { -- cgit v1.2.3 From 6055acb63bfa1d1c6310ff14e4143a0d934546f7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 22:52:12 +0200 Subject: FULLPIPE: Implement sceneHandler06_sub09() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene06.cpp | 53 +++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 5 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index d1e1820c27..1a41538732 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -269,6 +269,7 @@ namespace Fullpipe { #define QU_KOZAW_WALK 505 #define QU_MOM_JUMPBK 671 #define QU_MOM_JUMPFW 670 +#define QU_MOM_PUTBALL 2903 #define QU_MOM_SITDOWN 685 #define QU_MOM_STANDUP 2899 #define QU_MOM_TOLIFT 2902 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 4f76714660..7f49df385e 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -419,7 +419,54 @@ void sceneHandler06_sub05() { } void sceneHandler06_sub09() { - warning("STUB: sceneHandler06_sub09()"); + if (g_vars->scene06_var11) { + g_vars->scene06_var11->hide(); + + g_vars->scene06_balls.push_back(g_vars->scene06_var11); + + g_vars->scene06_var11 = 0; + + g_vars->scene06_var13++; + + if (g_vars->scene06_mumsy->_movement) { + Common::Point point; + + if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPFW) { + if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 5) { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0); + + point.x = -point.x; + point.y = -point.y; + } else { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1); + + g_vars->scene06_mumsyPos++; + } + } else if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPBK) { + if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 4) { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0); + + point.x = -point.x; + point.y = -point.y; + } else { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1); + + g_vars->scene06_mumsyPos--; + } + } + + g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS); + g_vars->scene06_mumsy->setOXY(point.x + g_vars->scene06_mumsy->_ox, + point.y + g_vars->scene06_mumsy->_oy); + } else { + g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS); + } + + chainQueue(QU_MOM_PUTBALL, 1); + g_vars->scene06_var16 = 1; + + sceneHandler06_sub10(); + } } void sceneHandler06_sub04(int par) { @@ -437,10 +484,6 @@ void sceneHandler06_sub04(int par) { } } -void sceneHandler06_sub06() { - warning("STUB: sceneHandler06_sub06()"); -} - void scene06_initScene(Scene *sc) { g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); g_vars->scene06_var06 = 0; -- cgit v1.2.3 From 0b187a7937d612bfc764e95689c28299c7f1d138 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 23:23:32 +0200 Subject: FULLPIPE: Implement sceneHandler06_setExits() --- engines/fullpipe/motion.cpp | 4 ++++ engines/fullpipe/motion.h | 2 ++ engines/fullpipe/scenes/scene06.cpp | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 2dd025855d..116d58aafe 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -42,6 +42,10 @@ bool MotionController::load(MfcArchive &file) { return true; } +void MotionController::enableLinks(const char *linkName, bool enable) { + warning("STUB: MotionController::enableLinks()"); +} + bool MctlCompound::load(MfcArchive &file) { debug(5, "MctlCompound::load()"); diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index e5b592876e..96c0a4fada 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -59,6 +59,8 @@ public: virtual int method44() { return 0; } virtual int method48() { return -1; } virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; } + + void enableLinks(const char *linkName, bool enable); }; class MovGraphReact : public CObject { diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 7f49df385e..e23b34d81e 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -69,7 +69,10 @@ int scene06_updateCursor() { } void sceneHandler06_setExits(Scene *sc) { - warning("STUB: sceneHandler06_setExits()"); + MotionController *mc = getSc2MctlCompoundBySceneId(sc->_sceneId); + + mc->enableLinks(sO_CloseThing, (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone))); + mc->enableLinks(sO_CloseThing2, (g_vars->scene06_var07 != 0)); } void sceneHandler06_winArcade() { -- cgit v1.2.3 From f85d40b2a34243f13a8c14bf95576ccd919d448b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 18 Dec 2013 23:53:43 +0200 Subject: FULLPIPE: Some renames in scene06 --- engines/fullpipe/scenes.cpp | 6 +-- engines/fullpipe/scenes.h | 6 +-- engines/fullpipe/scenes/scene06.cpp | 75 +++++++++++++++++++------------------ 3 files changed, 45 insertions(+), 42 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index b4a8625ef9..f9861ecb64 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -115,12 +115,12 @@ Vars::Vars() { scene06_var03 = 0; scene06_var04 = 0; scene06_mumsy = 0; - scene06_var06 = 0; + scene06_someBall = 0; scene06_invHandle = 0; scene06_liftButton = 0; scene06_ballDrop = 0; - scene06_var07 = 0; - scene06_var08 = 0; + scene06_arcadeEnabled = false; + scene06_aimingBall = false; scene06_currentBall = 0; scene06_var10 = 0; scene06_var11 = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 8f404d223c..83702c794c 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -152,12 +152,12 @@ public: int scene06_var02; int scene06_var03; int scene06_var04; - StaticANIObject *scene06_var06; + StaticANIObject *scene06_someBall; StaticANIObject *scene06_invHandle; StaticANIObject *scene06_liftButton; StaticANIObject *scene06_ballDrop; - int scene06_var07; - int scene06_var08; + bool scene06_arcadeEnabled; + bool scene06_aimingBall; StaticANIObject *scene06_currentBall; StaticANIObject *scene06_var10; StaticANIObject *scene06_var11; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index e23b34d81e..28f2ddb7b2 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -47,8 +47,8 @@ void scene06_initMumsy() { int scene06_updateCursor() { g_fullpipe->updateCursorCommon(); - if (g_vars->scene06_var07) { - if (g_vars->scene06_var08) { + if (g_vars->scene06_arcadeEnabled) { + if (g_vars->scene06_aimingBall) { g_fullpipe->_cursorId = PIC_CSR_ARCADE2_D; return PIC_CSR_ARCADE2_D; @@ -72,7 +72,7 @@ void sceneHandler06_setExits(Scene *sc) { MotionController *mc = getSc2MctlCompoundBySceneId(sc->_sceneId); mc->enableLinks(sO_CloseThing, (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone))); - mc->enableLinks(sO_CloseThing2, (g_vars->scene06_var07 != 0)); + mc->enableLinks(sO_CloseThing2, g_vars->scene06_arcadeEnabled); } void sceneHandler06_winArcade() { @@ -81,17 +81,17 @@ void sceneHandler06_winArcade() { if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); - if (g_vars->scene06_var07) { + if (g_vars->scene06_arcadeEnabled) { g_fullpipe->_aniMan->_callback2 = 0; g_fullpipe->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); - if (g_vars->scene06_var06) { - g_vars->scene06_var06->_flags &= 0xFFFB; + if (g_vars->scene06_someBall) { + g_vars->scene06_someBall->_flags &= 0xFFFB; - g_vars->scene06_balls.push_back(g_vars->scene06_var06); + g_vars->scene06_balls.push_back(g_vars->scene06_someBall); - g_vars->scene06_var06 = 0; + g_vars->scene06_someBall = 0; } if (g_vars->scene06_var11) { @@ -110,8 +110,8 @@ void sceneHandler06_winArcade() { g_vars->scene06_var10 = 0; } - g_vars->scene06_var07 = 0; - g_vars->scene06_var08 = 0; + g_vars->scene06_arcadeEnabled = false; + g_vars->scene06_aimingBall = false; } g_vars->scene06_mumsy->_flags &= 0xFFFB; @@ -130,7 +130,7 @@ void sceneHandler06_enableDrops() { chainQueue(QU_MOM_STANDUP, 1); - g_vars->scene06_var07 = 1; + g_vars->scene06_arcadeEnabled = true; g_vars->scene06_numBallsGiven = 0; g_vars->scene06_mumsyPos = 0; g_vars->scene06_var13 = 0; @@ -226,7 +226,7 @@ void sceneHandler06_mumsyBallTake() { mq->chain(0); g_vars->scene06_var13 = 0; - g_vars->scene06_var07 = 0; + g_vars->scene06_arcadeEnabled = false; g_fullpipe->_aniMan2 = 0; } @@ -280,7 +280,8 @@ void sceneHandler06_installHandle() { int sceneHandler06_updateScreenCallback() { int res; - res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_var07); + res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_arcadeEnabled); + if (!res) g_fullpipe->_updateScreenCallback = 0; @@ -327,7 +328,7 @@ void sceneHandler06_takeBall() { } } -void sceneHandler06_sub02() { +void sceneHandler06_aiming() { if (g_vars->scene06_var10) { g_vars->scene06_var17 = 4 * g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 16; g_vars->scene06_var18 = 5 * (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 4); @@ -335,7 +336,7 @@ void sceneHandler06_sub02() { if (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex < 4) { g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(11); - g_vars->scene06_var08 = 0; + g_vars->scene06_aimingBall = false; return; } @@ -343,7 +344,7 @@ void sceneHandler06_sub02() { g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(9); } - g_vars->scene06_var08 = 0; + g_vars->scene06_aimingBall = false; } void sceneHandler06_sub07() { @@ -357,7 +358,7 @@ void sceneHandler06_sub07() { } void sceneHandler06_throwCallback(int *arg) { - if (g_vars->scene06_var08) { + if (g_vars->scene06_aimingBall) { int dist = (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) * (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) + (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX) @@ -378,12 +379,13 @@ void sceneHandler06_throwBall() { g_fullpipe->_aniMan->_callback2 = sceneHandler06_throwCallback; g_fullpipe->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1); - g_vars->scene06_var08 = 1; + g_vars->scene06_aimingBall = true; } -void sceneHandler06_sub03() { +void sceneHandler06_eggieWalk() { if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_fullpipe->_rnd->getRandomNumber(9)) { StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1); + if (!ani || !(ani->_flags & 4)) { if (g_vars->scene06_var15) chainQueue(QU_EGG6_GOR, 0); @@ -396,7 +398,7 @@ void sceneHandler06_sub03() { } } -void sceneHandler06_sub10() { +void sceneHandler06_dropBall() { if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5) g_vars->scene06_ballDrop->hide(); else @@ -417,8 +419,8 @@ void sceneHandler06_sub05() { g_vars->scene06_var11 = 0; - sceneHandler06_sub10(); - sceneHandler06_sub03(); + sceneHandler06_dropBall(); + sceneHandler06_eggieWalk(); } void sceneHandler06_sub09() { @@ -468,7 +470,7 @@ void sceneHandler06_sub09() { chainQueue(QU_MOM_PUTBALL, 1); g_vars->scene06_var16 = 1; - sceneHandler06_sub10(); + sceneHandler06_dropBall(); } } @@ -489,12 +491,12 @@ void sceneHandler06_sub04(int par) { void scene06_initScene(Scene *sc) { g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); - g_vars->scene06_var06 = 0; + g_vars->scene06_someBall = 0; g_vars->scene06_invHandle = sc->getStaticANIObject1ById(ANI_INV_HANDLE, -1); g_vars->scene06_liftButton = sc->getStaticANIObject1ById(ANI_BUTTON_6, -1); g_vars->scene06_ballDrop = sc->getStaticANIObject1ById(ANI_BALLDROP, -1); - g_vars->scene06_var07 = 0; - g_vars->scene06_var08 = 0; + g_vars->scene06_arcadeEnabled = false; + g_vars->scene06_aimingBall = false; g_vars->scene06_currentBall = 0; g_vars->scene06_var10 = 0; g_vars->scene06_var11 = 0; @@ -572,7 +574,7 @@ int sceneHandler06(ExCommand *ex) { case MSG_SC6_TESTNUMBALLS: g_vars->scene06_var16 = 0; - if (g_vars->scene06_var13 < 5 || !g_vars->scene06_var07) + if (g_vars->scene06_var13 < 5 || !g_vars->scene06_arcadeEnabled) return 0; sceneHandler06_mumsyBallTake(); @@ -627,12 +629,12 @@ int sceneHandler06(ExCommand *ex) { break; case 30: - if (g_vars->scene06_var08) { - sceneHandler06_sub02(); + if (g_vars->scene06_aimingBall) { + sceneHandler06_aiming(); break; } - if (!g_vars->scene06_var07) { + if (!g_vars->scene06_arcadeEnabled) { // Do nothing break; } @@ -643,7 +645,7 @@ int sceneHandler06(ExCommand *ex) { StaticANIObject *st = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); if (st) { - if (!g_vars->scene06_var07 && st->_id == ANI_LIFTBUTTON) { + if (!g_vars->scene06_arcadeEnabled && st->_id == ANI_LIFTBUTTON) { g_fullpipe->lift_sub1(st); ex->_messageKind = 0; return 0; @@ -690,7 +692,7 @@ int sceneHandler06(ExCommand *ex) { g_vars->scene06_var01 = ox; g_vars->scene06_var02 = oy; - if (g_vars->scene06_var07 && oy <= 470 && ox >= 1088) { + if (g_vars->scene06_arcadeEnabled && oy <= 470 && ox >= 1088) { if (ox < g_fullpipe->_sceneRect.left + 600) { g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 700; ox = g_vars->scene06_var01; @@ -710,7 +712,7 @@ int sceneHandler06(ExCommand *ex) { res = 1; } - if (g_vars->scene06_var07) { + if (g_vars->scene06_arcadeEnabled) { if (g_vars->scene06_mumsyPos > -3) g_vars->scene06_mumsyJumpBk->_percent = g_vars->scene06_mumsyJumpBkPercent; else @@ -721,10 +723,11 @@ int sceneHandler06(ExCommand *ex) { else g_vars->scene06_mumsyJumpFw->_percent = 0; - if (g_vars->scene06_var08) { + if (g_vars->scene06_aimingBall) { g_vars->scene06_var14++; + if (g_vars->scene06_var14 >= 600) - sceneHandler06_sub03(); + sceneHandler06_eggieWalk(); } } else { g_vars->scene06_mumsyJumpFw->_percent = 0; @@ -744,7 +747,7 @@ int sceneHandler06(ExCommand *ex) { sceneHandler06_sub04(g_vars->scene06_var17); } - if (g_vars->scene06_var07 + if (g_vars->scene06_arcadeEnabled && !g_vars->scene06_currentBall && !g_vars->scene06_var10 && !g_vars->scene06_var11 -- cgit v1.2.3 From f2f867a13195018337f073d369ea11433620a12a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 00:14:18 +0200 Subject: FULLPIPE: Give meaningful names to vars in scene06 --- engines/fullpipe/scenes.cpp | 24 +++---- engines/fullpipe/scenes.h | 24 +++---- engines/fullpipe/scenes/scene06.cpp | 128 ++++++++++++++++++------------------ 3 files changed, 88 insertions(+), 88 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index f9861ecb64..08eed7210b 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -110,10 +110,10 @@ Vars::Vars() { scene05_handleFlipper = 0; scene05_floatersTicker = 0; - scene06_var01 = 0; - scene06_var02 = 0; - scene06_var03 = 0; - scene06_var04 = 0; + scene06_manX = 0; + scene06_manY = 0; + scene06_ballX = 0; + scene06_ballY = 0; scene06_mumsy = 0; scene06_someBall = 0; scene06_invHandle = 0; @@ -122,15 +122,15 @@ Vars::Vars() { scene06_arcadeEnabled = false; scene06_aimingBall = false; scene06_currentBall = 0; - scene06_var10 = 0; - scene06_var11 = 0; + scene06_ballInHands = 0; + scene06_flyingBall = 0; scene06_numBallsGiven = 0; - scene06_var13 = 0; - scene06_var14 = 0; - scene06_var15 = 1; - scene06_var16 = 0; - scene06_var17 = 0; - scene06_var18 = 0; + scene06_mumsyNumBalls = 0; + scene06_eggieTimeout = 0; + scene06_eggieDirection = true; + scene06_mumsyGotBall = 0; + scene06_ballDeltaX = 0; + scene06_ballDeltaY = 0; scene06_sceneClickX = 0; scene06_sceneClickY = 0; scene06_mumsyPos = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 83702c794c..6664d823be 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -148,10 +148,10 @@ public: int scene05_floatersTicker; StaticANIObject *scene06_mumsy; - int scene06_var01; - int scene06_var02; - int scene06_var03; - int scene06_var04; + int scene06_manX; + int scene06_manY; + int scene06_ballX; + int scene06_ballY; StaticANIObject *scene06_someBall; StaticANIObject *scene06_invHandle; StaticANIObject *scene06_liftButton; @@ -159,16 +159,16 @@ public: bool scene06_arcadeEnabled; bool scene06_aimingBall; StaticANIObject *scene06_currentBall; - StaticANIObject *scene06_var10; - StaticANIObject *scene06_var11; + StaticANIObject *scene06_ballInHands; + StaticANIObject *scene06_flyingBall; Common::Array scene06_balls; int scene06_numBallsGiven; - int scene06_var13; - int scene06_var14; - int scene06_var15; - int scene06_var16; - int scene06_var17; - int scene06_var18; + int scene06_mumsyNumBalls; + int scene06_eggieTimeout; + int scene06_eggieDirection; + int scene06_mumsyGotBall; + int scene06_ballDeltaX; + int scene06_ballDeltaY; int scene06_sceneClickX; int scene06_sceneClickY; int scene06_mumsyPos; diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 28f2ddb7b2..f2f5e309fc 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -94,20 +94,20 @@ void sceneHandler06_winArcade() { g_vars->scene06_someBall = 0; } - if (g_vars->scene06_var11) { - g_vars->scene06_var11->_flags &= 0xFFFB; + if (g_vars->scene06_flyingBall) { + g_vars->scene06_flyingBall->_flags &= 0xFFFB; - g_vars->scene06_balls.push_back(g_vars->scene06_var11); + g_vars->scene06_balls.push_back(g_vars->scene06_flyingBall); - g_vars->scene06_var11 = 0; + g_vars->scene06_flyingBall = 0; } - if (g_vars->scene06_var10) { - g_vars->scene06_var10->_flags &= 0xFFFB; + if (g_vars->scene06_ballInHands) { + g_vars->scene06_ballInHands->_flags &= 0xFFFB; - g_vars->scene06_balls.push_back(g_vars->scene06_var10); + g_vars->scene06_balls.push_back(g_vars->scene06_ballInHands); - g_vars->scene06_var10 = 0; + g_vars->scene06_ballInHands = 0; } g_vars->scene06_arcadeEnabled = false; @@ -133,8 +133,8 @@ void sceneHandler06_enableDrops() { g_vars->scene06_arcadeEnabled = true; g_vars->scene06_numBallsGiven = 0; g_vars->scene06_mumsyPos = 0; - g_vars->scene06_var13 = 0; - g_vars->scene06_var16 = 0; + g_vars->scene06_mumsyNumBalls = 0; + g_vars->scene06_mumsyGotBall = false; sceneHandler06_setExits(g_fullpipe->_currentScene); } @@ -142,7 +142,7 @@ void sceneHandler06_enableDrops() { void sceneHandler06_mumsyBallTake() { int momAni = 0; - switch (g_vars->scene06_var13) { + switch (g_vars->scene06_mumsyNumBalls) { case 1: momAni = MV_MOM_TAKE1; break; @@ -167,7 +167,7 @@ void sceneHandler06_mumsyBallTake() { ex->_excFlags = 2u; mq->addExCommandToEnd(ex); - if (g_vars->scene06_var13 >= 5) { + if (g_vars->scene06_mumsyNumBalls >= 5) { g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) @@ -225,7 +225,7 @@ void sceneHandler06_mumsyBallTake() { mq->setFlags(mq->getFlags() | 1); mq->chain(0); - g_vars->scene06_var13 = 0; + g_vars->scene06_mumsyNumBalls = 0; g_vars->scene06_arcadeEnabled = false; g_fullpipe->_aniMan2 = 0; @@ -294,7 +294,7 @@ void sceneHandler06_sub08() { g_fullpipe->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1); - g_vars->scene06_var10 = g_vars->scene06_currentBall; + g_vars->scene06_ballInHands = g_vars->scene06_currentBall; g_vars->scene06_currentBall = 0; if (getCurrSceneSc2MotionController()->_isEnabled) @@ -329,9 +329,9 @@ void sceneHandler06_takeBall() { } void sceneHandler06_aiming() { - if (g_vars->scene06_var10) { - g_vars->scene06_var17 = 4 * g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 16; - g_vars->scene06_var18 = 5 * (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 4); + if (g_vars->scene06_ballInHands) { + g_vars->scene06_ballDeltaX = 4 * g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 16; + g_vars->scene06_ballDeltaY = 5 * (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 4); if (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex < 4) { g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(11); @@ -348,12 +348,12 @@ void sceneHandler06_aiming() { } void sceneHandler06_sub07() { - if (g_vars->scene06_var10) { - g_vars->scene06_var11 = g_vars->scene06_var10; - g_vars->scene06_var10 = 0; - g_vars->scene06_var11->show1(g_fullpipe->_aniMan->_ox - 60, g_fullpipe->_aniMan->_oy - 60, -1, 0); + if (g_vars->scene06_ballInHands) { + g_vars->scene06_flyingBall = g_vars->scene06_ballInHands; + g_vars->scene06_ballInHands = 0; + g_vars->scene06_flyingBall->show1(g_fullpipe->_aniMan->_ox - 60, g_fullpipe->_aniMan->_oy - 60, -1, 0); - g_vars->scene06_var11->_priority = 27; + g_vars->scene06_flyingBall->_priority = 27; } } @@ -387,51 +387,51 @@ void sceneHandler06_eggieWalk() { StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1); if (!ani || !(ani->_flags & 4)) { - if (g_vars->scene06_var15) + if (g_vars->scene06_eggieDirection) chainQueue(QU_EGG6_GOR, 0); else chainQueue(QU_EGG6_GOL, 0); - g_vars->scene06_var14 = 0; - g_vars->scene06_var15 = (g_vars->scene06_var15 == 0); + g_vars->scene06_eggieTimeout = 0; + g_vars->scene06_eggieDirection = !g_vars->scene06_eggieDirection; } } } void sceneHandler06_dropBall() { - if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_var13 >= 5) + if (g_vars->scene06_numBallsGiven >= 15 || g_vars->scene06_mumsyNumBalls >= 5) g_vars->scene06_ballDrop->hide(); else chainQueue(QU_SC6_DROPS3, 0); } void sceneHandler06_sub05() { - g_vars->scene06_var04 = 475; + g_vars->scene06_ballY = 475; - g_vars->scene06_var11->setOXY(g_vars->scene06_var03, g_vars->scene06_var04); + g_vars->scene06_flyingBall->setOXY(g_vars->scene06_ballX, g_vars->scene06_ballY); MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1); - mq->replaceKeyCode(-1, g_vars->scene06_var11->_okeyCode); + mq->replaceKeyCode(-1, g_vars->scene06_flyingBall->_okeyCode); mq->chain(0); - g_vars->scene06_balls.push_back(g_vars->scene06_var11); + g_vars->scene06_balls.push_back(g_vars->scene06_flyingBall); - g_vars->scene06_var11 = 0; + g_vars->scene06_flyingBall = 0; sceneHandler06_dropBall(); sceneHandler06_eggieWalk(); } void sceneHandler06_sub09() { - if (g_vars->scene06_var11) { - g_vars->scene06_var11->hide(); + if (g_vars->scene06_flyingBall) { + g_vars->scene06_flyingBall->hide(); - g_vars->scene06_balls.push_back(g_vars->scene06_var11); + g_vars->scene06_balls.push_back(g_vars->scene06_flyingBall); - g_vars->scene06_var11 = 0; + g_vars->scene06_flyingBall = 0; - g_vars->scene06_var13++; + g_vars->scene06_mumsyNumBalls++; if (g_vars->scene06_mumsy->_movement) { Common::Point point; @@ -468,7 +468,7 @@ void sceneHandler06_sub09() { } chainQueue(QU_MOM_PUTBALL, 1); - g_vars->scene06_var16 = 1; + g_vars->scene06_mumsyGotBall = true; sceneHandler06_dropBall(); } @@ -477,8 +477,8 @@ void sceneHandler06_sub09() { void sceneHandler06_sub04(int par) { int pixel; - if (g_vars->scene06_var04 <= 475) { - if (g_vars->scene06_mumsy->getPixelAtPos(g_vars->scene06_var03, g_vars->scene06_var04, &pixel)) { + if (g_vars->scene06_ballY <= 475) { + if (g_vars->scene06_mumsy->getPixelAtPos(g_vars->scene06_ballX, g_vars->scene06_ballY, &pixel)) { if (pixel) { chainObjQueue(g_vars->scene06_mumsy, QU_MOM_JUMPBK, 0); sceneHandler06_sub09(); @@ -498,13 +498,13 @@ void scene06_initScene(Scene *sc) { g_vars->scene06_arcadeEnabled = false; g_vars->scene06_aimingBall = false; g_vars->scene06_currentBall = 0; - g_vars->scene06_var10 = 0; - g_vars->scene06_var11 = 0; + g_vars->scene06_ballInHands = 0; + g_vars->scene06_flyingBall = 0; g_vars->scene06_balls.clear(); g_vars->scene06_numBallsGiven = 0; - g_vars->scene06_var13 = 0; - g_vars->scene06_var14 = 0; - g_vars->scene06_var15 = 1; + g_vars->scene06_mumsyNumBalls = 0; + g_vars->scene06_eggieTimeout = 0; + g_vars->scene06_eggieDirection = true; StaticANIObject *ball = sc->getStaticANIObject1ById(ANI_NEWBALL, -1); @@ -572,9 +572,9 @@ int sceneHandler06(ExCommand *ex) { break; case MSG_SC6_TESTNUMBALLS: - g_vars->scene06_var16 = 0; + g_vars->scene06_mumsyGotBall = false; - if (g_vars->scene06_var13 < 5 || !g_vars->scene06_arcadeEnabled) + if (g_vars->scene06_mumsyNumBalls < 5 || !g_vars->scene06_arcadeEnabled) return 0; sceneHandler06_mumsyBallTake(); @@ -656,7 +656,7 @@ int sceneHandler06(ExCommand *ex) { sceneHandler06_takeBall(); ex->_messageKind = 0; - } else if (g_vars->scene06_var10 && g_fullpipe->_aniMan == st && !g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL) { + } else if (g_vars->scene06_ballInHands && g_fullpipe->_aniMan == st && !g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL) { g_vars->scene06_sceneClickX = ex->_sceneClickX; g_vars->scene06_sceneClickY = ex->_sceneClickY; @@ -689,13 +689,13 @@ int sceneHandler06(ExCommand *ex) { int ox = g_fullpipe->_aniMan2->_ox; int oy = g_fullpipe->_aniMan2->_oy; - g_vars->scene06_var01 = ox; - g_vars->scene06_var02 = oy; + g_vars->scene06_manX = ox; + g_vars->scene06_manY = oy; if (g_vars->scene06_arcadeEnabled && oy <= 470 && ox >= 1088) { if (ox < g_fullpipe->_sceneRect.left + 600) { g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 700; - ox = g_vars->scene06_var01; + ox = g_vars->scene06_manX; } if (ox > g_fullpipe->_sceneRect.right - 50) @@ -703,7 +703,7 @@ int sceneHandler06(ExCommand *ex) { } else { if (ox < g_fullpipe->_sceneRect.left + 200) { g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 300; - ox = g_vars->scene06_var01; + ox = g_vars->scene06_manX; } if (ox > g_fullpipe->_sceneRect.right - 200) @@ -724,9 +724,9 @@ int sceneHandler06(ExCommand *ex) { g_vars->scene06_mumsyJumpFw->_percent = 0; if (g_vars->scene06_aimingBall) { - g_vars->scene06_var14++; + g_vars->scene06_eggieTimeout++; - if (g_vars->scene06_var14 >= 600) + if (g_vars->scene06_eggieTimeout >= 600) sceneHandler06_eggieWalk(); } } else { @@ -734,27 +734,27 @@ int sceneHandler06(ExCommand *ex) { g_vars->scene06_mumsyJumpBk->_percent = 0; } - if (g_vars->scene06_var11) { - g_vars->scene06_var03 = g_vars->scene06_var11->_ox - g_vars->scene06_var17; - g_vars->scene06_var04 = g_vars->scene06_var11->_oy - g_vars->scene06_var18; + if (g_vars->scene06_flyingBall) { + g_vars->scene06_ballX = g_vars->scene06_flyingBall->_ox - g_vars->scene06_ballDeltaX; + g_vars->scene06_ballY = g_vars->scene06_flyingBall->_oy - g_vars->scene06_ballDeltaY; - g_vars->scene06_var11->setOXY(g_vars->scene06_var03, g_vars->scene06_var04); + g_vars->scene06_flyingBall->setOXY(g_vars->scene06_ballX, g_vars->scene06_ballY); - if (g_vars->scene06_var17 >= 2) - g_vars->scene06_var17 -= 2; + if (g_vars->scene06_ballDeltaX >= 2) + g_vars->scene06_ballDeltaX -= 2; - g_vars->scene06_var18 -= 5; + g_vars->scene06_ballDeltaY -= 5; - sceneHandler06_sub04(g_vars->scene06_var17); + sceneHandler06_sub04(g_vars->scene06_ballDeltaX); } if (g_vars->scene06_arcadeEnabled && !g_vars->scene06_currentBall - && !g_vars->scene06_var10 - && !g_vars->scene06_var11 + && !g_vars->scene06_ballInHands + && !g_vars->scene06_flyingBall && g_vars->scene06_numBallsGiven >= 15 && !g_vars->scene06_ballDrop->_movement && !g_vars->scene06_mumsy->_movement - && !g_vars->scene06_var16) + && !g_vars->scene06_mumsyGotBall) sceneHandler06_mumsyBallTake(); g_fullpipe->_behaviorManager->updateBehaviors(); g_fullpipe->startSceneTrack(); -- cgit v1.2.3 From 3ebcd3fcf738d1d8f6625e0fde9b1ce317eb0717 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 00:34:51 +0200 Subject: FULLPIPE: Last renamings in scene06 --- engines/fullpipe/scenes/scene06.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index f2f5e309fc..5bbd280fdd 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -288,7 +288,7 @@ int sceneHandler06_updateScreenCallback() { return res; } -void sceneHandler06_sub08() { +void sceneHandler06_startAiming() { if (g_vars->scene06_currentBall) { g_vars->scene06_currentBall->hide(); @@ -323,7 +323,7 @@ void sceneHandler06_takeBall() { postExCommand(g_fullpipe->_aniMan->_id, 2, 1158, 452, 0, -1); } } else { - sceneHandler06_sub08(); + sceneHandler06_startAiming(); } } } @@ -347,7 +347,7 @@ void sceneHandler06_aiming() { g_vars->scene06_aimingBall = false; } -void sceneHandler06_sub07() { +void sceneHandler06_ballStartFly() { if (g_vars->scene06_ballInHands) { g_vars->scene06_flyingBall = g_vars->scene06_ballInHands; g_vars->scene06_ballInHands = 0; @@ -371,7 +371,7 @@ void sceneHandler06_throwCallback(int *arg) { } else { *arg = *arg + 1; if (*arg == 12) - sceneHandler06_sub07(); + sceneHandler06_ballStartFly(); } } @@ -405,7 +405,7 @@ void sceneHandler06_dropBall() { chainQueue(QU_SC6_DROPS3, 0); } -void sceneHandler06_sub05() { +void sceneHandler06_fallBall() { g_vars->scene06_ballY = 475; g_vars->scene06_flyingBall->setOXY(g_vars->scene06_ballX, g_vars->scene06_ballY); @@ -423,7 +423,7 @@ void sceneHandler06_sub05() { sceneHandler06_eggieWalk(); } -void sceneHandler06_sub09() { +void sceneHandler06_catchBall() { if (g_vars->scene06_flyingBall) { g_vars->scene06_flyingBall->hide(); @@ -474,18 +474,19 @@ void sceneHandler06_sub09() { } } -void sceneHandler06_sub04(int par) { +void sceneHandler06_checkBallTarget(int par) { int pixel; if (g_vars->scene06_ballY <= 475) { if (g_vars->scene06_mumsy->getPixelAtPos(g_vars->scene06_ballX, g_vars->scene06_ballY, &pixel)) { if (pixel) { chainObjQueue(g_vars->scene06_mumsy, QU_MOM_JUMPBK, 0); - sceneHandler06_sub09(); + + sceneHandler06_catchBall(); } } } else { - sceneHandler06_sub05(); + sceneHandler06_fallBall(); } } @@ -745,7 +746,7 @@ int sceneHandler06(ExCommand *ex) { g_vars->scene06_ballDeltaY -= 5; - sceneHandler06_sub04(g_vars->scene06_ballDeltaX); + sceneHandler06_checkBallTarget(g_vars->scene06_ballDeltaX); } if (g_vars->scene06_arcadeEnabled && !g_vars->scene06_currentBall -- cgit v1.2.3 From 761e45bd64e6a4f2b2b8b0794242150e4a4820b0 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 00:43:19 +0200 Subject: FULLPIPE: Implement MovGraph::method2C() --- engines/fullpipe/motion.cpp | 9 ++++----- engines/fullpipe/motion.h | 8 ++++---- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 116d58aafe..44cf550bf1 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -440,10 +440,9 @@ int MovGraph::method28() { return 0; } -int MovGraph::method2C() { - warning("STUB: MovGraph::method2C()"); - - return 0; +int MovGraph::method2C(StaticANIObject *obj, int x, int y) { + obj->setOXY(x, y); + return method3C(obj, 1); } MessageQueue *MovGraph::method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { @@ -458,7 +457,7 @@ int MovGraph::changeCallback() { return 0; } -int MovGraph::method3C() { +int MovGraph::method3C(StaticANIObject *ani, int flag) { warning("STUB: MovGraph::method3C()"); return 0; diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index 96c0a4fada..ee4ad02f8d 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -50,11 +50,11 @@ public: virtual int removeObject(StaticANIObject *obj) { return 0; } virtual void freeItems() {} virtual int method28() { return 0; } - virtual int method2C() { return 0; } + virtual int method2C(StaticANIObject *obj, int x, int y) { return 0; } virtual int method30() { return 0; } virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; } virtual int changeCallback() { return 0; } - virtual int method3C() { return 0; } + virtual int method3C(StaticANIObject *ani, int flag) { return 0; } virtual int method40() { return 0; } virtual int method44() { return 0; } virtual int method48() { return -1; } @@ -317,10 +317,10 @@ public: virtual int removeObject(StaticANIObject *obj); virtual void freeItems(); virtual int method28(); - virtual int method2C(); + virtual int method2C(StaticANIObject *obj, int x, int y); virtual MessageQueue *method34(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId); virtual int changeCallback(); - virtual int method3C(); + virtual int method3C(StaticANIObject *ani, int flag); virtual int method44(); virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId); virtual int method50(); -- cgit v1.2.3 From 10763d0608eaa521a0885553231987c30eb266c6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 17:49:27 +0200 Subject: FULLPIPE: Implement scene07_initScene() --- engines/fullpipe/constants.h | 5 ++++ engines/fullpipe/module.mk | 1 + engines/fullpipe/scenes.cpp | 4 +++ engines/fullpipe/scenes.h | 4 +++ engines/fullpipe/scenes/scene07.cpp | 55 +++++++++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+) create mode 100644 engines/fullpipe/scenes/scene07.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 1a41538732..433866fbe4 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -32,6 +32,7 @@ namespace Fullpipe { #define ANI_BUTTON 598 #define ANI_BUTTON_6 2988 #define ANI_CLOCK 588 +#define ANI_CORNERSITTER 71 #define ANI_DOMINO_3 2732 #define ANI_DADAYASHIK 306 #define ANI_EGGEATER 334 @@ -55,6 +56,7 @@ namespace Fullpipe { #define ANI_NEWBALL 1073 #define ANI_OTMOROZ 419 #define ANI_PLANK 501 +#define ANI_PLUSMINUS 2938 #define ANI_SC2_BOX 1020 #define ANI_SC4_BOOT 1035 #define ANI_SC4_COIN 690 @@ -351,6 +353,7 @@ namespace Fullpipe { #define ST_BLK_CLOSED 912 #define ST_BLK_OPEN 913 #define ST_CLK_CLOSED 590 +#define ST_CST_HANDLELESS 794 #define ST_DYAS_LIES 318 #define ST_EGTR_MID1 2863 #define ST_EGTR_MID2 2869 @@ -402,6 +405,8 @@ namespace Fullpipe { #define ST_OTM_BOX_LEFT 429 #define ST_OTM_GLS_LEFT 421 #define ST_OTM_VNT_LEFT 434 +#define ST_PMS_MINUS 2942 +#define ST_PMS_PLUS 2941 #define ST_PNK_WEIGHTLEFT 503 #define ST_PNK_WEIGHTRIGHT 504 #define ST_SPR_UP 544 diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index efb3d65786..7c09811c18 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -30,6 +30,7 @@ MODULE_OBJS = \ scenes/scene04.o \ scenes/scene05.o \ scenes/scene06.o \ + scenes/scene07.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 08eed7210b..83f4d6be10 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -139,6 +139,10 @@ Vars::Vars() { scene06_mumsyJumpBkPercent = 0; scene06_mumsyJumpFwPercent = 0; + scene07_lukeAnim = 0; + scene07_lukePercent = 0; + scene07_plusMinus = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 6664d823be..3751ed9a32 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -177,6 +177,10 @@ public: int scene06_mumsyJumpBkPercent; int scene06_mumsyJumpFwPercent; + BehaviorEntryInfo *scene07_lukeAnim; + int scene07_lukePercent; + StaticANIObject *scene07_plusMinus; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp new file mode 100644 index 0000000000..037a201249 --- /dev/null +++ b/engines/fullpipe/scenes/scene07.cpp @@ -0,0 +1,55 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objects.h" +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/scenes.h" +#include "fullpipe/scene.h" +#include "fullpipe/statics.h" + +namespace Fullpipe { + +void scene07_initScene(Scene *sc) { + g_vars->scene07_lukeAnim = 0; + g_vars->scene07_lukePercent = 0; + g_vars->scene07_plusMinus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1); + + if (g_fullpipe->getObjectState(sO_Guard_1) == g_fullpipe->getObjectEnumState(sO_Guard_1, sO_Off)) + g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_MINUS); + else + g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_PLUS); + + if (g_fullpipe->getObjectState(sO_HareTheNooksiter) == g_fullpipe->getObjectEnumState(sO_HareTheNooksiter, sO_WithoutHandle)) { + Scene *oldsc = g_fullpipe->_currentScene; + + g_fullpipe->_currentScene = sc; + + sc->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->changeStatics2(ST_CST_HANDLELESS); + + g_fullpipe->_currentScene = oldsc; + } +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From db5156793e7f66dada1e244ff9cf87144a054071 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:10:07 +0200 Subject: FULLPIPE: Implement sceneHandler07() --- engines/fullpipe/constants.h | 6 +++ engines/fullpipe/scenes/scene07.cpp | 78 +++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 433866fbe4..f7e6f84805 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -127,6 +127,12 @@ namespace Fullpipe { #define MSG_SC6_TAKEBALL 682 #define MSG_SC6_TESTNUMBALLS 2904 #define MSG_SC6_UTRUBACLICK 1105 +#define MSG_SC7_CLOSELUKE 822 +#define MSG_SC7_HIDEBOX 817 +#define MSG_SC7_HIDELUKE 821 +#define MSG_SC7_OPENLUKE 823 +#define MSG_SC7_PULL 2943 +#define MSG_SC7_SHOWBOX 816 #define MSG_GOTOLADDER 618 #define MSG_SHAKEBOTTLE 584 #define MSG_SHOOTKOZAW 557 diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index 037a201249..a5c83d1c67 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -28,6 +28,8 @@ #include "fullpipe/scenes.h" #include "fullpipe/scene.h" #include "fullpipe/statics.h" +#include "fullpipe/messages.h" +#include "fullpipe/behavior.h" namespace Fullpipe { @@ -52,4 +54,80 @@ void scene07_initScene(Scene *sc) { } } +void sceneHandler07_openLuke() { + warning("STUB: sceneHandler07_openLuke()"); +} + +void sceneHandler07_closeLuke() { + warning("STUB: sceneHandler07_closeLuke()"); +} + +void sceneHandler07_hideLuke() { + warning("STUB: sceneHandler07_hideLuke()"); +} + +void sceneHandler07_showBox() { + warning("STUB: sceneHandler07_showBox()"); +} + +void sceneHandler07_hideBox() { + warning("STUB: sceneHandler07_hideBox()"); +} + +int sceneHandler07(ExCommand *ex) { + if (ex->_messageKind != 17) + return 0; + + switch(ex->_messageNum) { + case MSG_SC7_OPENLUKE: + sceneHandler07_openLuke(); + break; + + case MSG_SC7_PULL: + if (g_vars->scene07_plusMinus->_statics->_staticsId == ST_PMS_MINUS) + g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_PLUS); + else + g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_MINUS); + + break; + + case MSG_SC7_CLOSELUKE: + sceneHandler07_closeLuke(); + break; + + case MSG_SC7_HIDELUKE: + sceneHandler07_hideLuke(); + break; + + case MSG_SC7_SHOWBOX: + sceneHandler07_showBox(); + break; + + case MSG_SC7_HIDEBOX: + sceneHandler07_hideBox(); + break; + + case 33: + { + int res = 0; + + if (g_fullpipe->_aniMan2) { + if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + + if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + + res = 1; + } + + g_fullpipe->_behaviorManager->updateBehaviors(); + + return res; + } + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From 5884090696441001eb3acca5e0ddeff39e410026 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:18:05 +0200 Subject: FULLPIPE: Implement sceneHandler07_closeLuke() --- engines/fullpipe/constants.h | 5 +++++ engines/fullpipe/scenes/scene07.cpp | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index f7e6f84805..bf843efc03 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -39,6 +39,7 @@ namespace Fullpipe { #define ANI_EGGIE 4929 #define ANI_HAND 601 #define ANI_HANDLE 622 +#define ANI_HOOLIGAN 808 #define ANI_IN1MAN 5110 #define ANI_INV_COIN 875 #define ANI_INV_EGGAPL 1564 @@ -50,6 +51,7 @@ namespace Fullpipe { #define ANI_INV_MAP 5321 #define ANI_KOZAWKA 495 #define ANI_LIFTBUTTON 2751 +#define ANI_LUKE 803 #define ANI_MAMASHA 656 #define ANI_MAMASHA_4 660 #define ANI_MAN 322 @@ -261,6 +263,7 @@ namespace Fullpipe { #define PIC_SCD_SEL 734 #define QU_BALL_WALKL 4920 #define QU_BALL_WALKR 4919 +#define QU_CST_CLOSELUKE 820 #define QU_EGG6_GOL 4936 #define QU_EGG6_GOR 4935 #define QU_EGTR_MD2_SHOW 4698 @@ -364,6 +367,7 @@ namespace Fullpipe { #define ST_EGTR_MID1 2863 #define ST_EGTR_MID2 2869 #define ST_EGTR_SLIM 336 +#define ST_HGN_LUKE 810 #define ST_HDL_BROKEN 3342 #define ST_HDL_DOWN 625 #define ST_HDL_PLUGGED 2397 @@ -394,6 +398,7 @@ namespace Fullpipe { #define ST_LBN_8P 2775 #define ST_LBN_9N 2777 #define ST_LBN_9P 2778 +#define ST_LUK_CLOSED 805 #define ST_MAN_GOLADDER 450 #define ST_MAN_GOLADDER2 2843 #define ST_MAN_EMPTY 476 diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index a5c83d1c67..f324ff1cff 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -59,7 +59,21 @@ void sceneHandler07_openLuke() { } void sceneHandler07_closeLuke() { - warning("STUB: sceneHandler07_closeLuke()"); + g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->changeStatics2(ST_LUK_CLOSED); + + if (!g_vars->scene07_lukeAnim) { + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); + + g_vars->scene07_lukeAnim = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); + } + + g_vars->scene07_lukePercent = g_vars->scene07_lukeAnim->_percent; + g_vars->scene07_lukeAnim->_percent = 0; + + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); + + ani->changeStatics2(ST_HGN_LUKE); + ani->show1(-1, -1, -1, 0); } void sceneHandler07_hideLuke() { -- cgit v1.2.3 From 4193742c7cec54efc7b89b3f88b026553860caf8 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:23:14 +0200 Subject: FULLPIPE: Implement scene07_hide/showBox() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene07.cpp | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index bf843efc03..b1df092ea6 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -62,6 +62,7 @@ namespace Fullpipe { #define ANI_SC2_BOX 1020 #define ANI_SC4_BOOT 1035 #define ANI_SC4_COIN 690 +#define ANI_SC7_BOX 791 #define ANI_SPEAKER_4 3275 #define ANI_SPRING 542 #define MSG_CLICKBOTTLE 569 @@ -203,6 +204,7 @@ namespace Fullpipe { #define MV_PNK_WEIGHTLEFT 541 #define MV_PNK_WEIGHTRIGHT 502 #define MV_SC4_COIN_default 1029 +#define MV_SC7_BOX_default 792 #define MV_SPK4_PLAY 3276 #define MV_SPR_LOWER 543 #define PIC_CMN_EVAL 3468 diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index f324ff1cff..a9267179a6 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -81,11 +81,14 @@ void sceneHandler07_hideLuke() { } void sceneHandler07_showBox() { - warning("STUB: sceneHandler07_showBox()"); + StaticANIObject *box = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1); + + box->show1(492, 474, MV_SC7_BOX_default, 0); + box->_priority = 25; } void sceneHandler07_hideBox() { - warning("STUB: sceneHandler07_hideBox()"); + g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1)->hide(); } int sceneHandler07(ExCommand *ex) { -- cgit v1.2.3 From 97cd39bb95321573bb233c10b379c5305410c30e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:38:49 +0200 Subject: FULLPIPE: Implement sceneHandler07_hideLuke() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene07.cpp | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b1df092ea6..b8f0fa9b82 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -148,6 +148,7 @@ namespace Fullpipe { #define MSG_UPDATEBOTTLE 613 #define MV_BLK_CLOSE 911 #define MV_BLK_OPEN 910 +#define MV_CST_CLOSELUKE 807 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 #define MV_BDG_OPEN 1379 @@ -369,6 +370,7 @@ namespace Fullpipe { #define ST_EGTR_MID1 2863 #define ST_EGTR_MID2 2869 #define ST_EGTR_SLIM 336 +#define ST_HGN_LOOK 811 #define ST_HGN_LUKE 810 #define ST_HDL_BROKEN 3342 #define ST_HDL_DOWN 625 diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index a9267179a6..c0b8b75c93 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -77,7 +77,18 @@ void sceneHandler07_closeLuke() { } void sceneHandler07_hideLuke() { - warning("STUB: sceneHandler07_hideLuke()"); + g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->hide(); + + Movement *mov = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->_movement; + + if (mov) { + if (mov->_id == MV_CST_CLOSELUKE) { + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); + + ani->changeStatics2(ST_HGN_LOOK); + ani->_flags &= 0xFFFB; + } + } } void sceneHandler07_showBox() { -- cgit v1.2.3 From 8862be264b4ed6b0d67cc969f2a88d076872f226 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:42:35 +0200 Subject: FULLPIPE: Implement sceneHandler07_openLuke() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene07.cpp | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b8f0fa9b82..fdf0874861 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -403,6 +403,7 @@ namespace Fullpipe { #define ST_LBN_9N 2777 #define ST_LBN_9P 2778 #define ST_LUK_CLOSED 805 +#define ST_LUK_OPEN 806 #define ST_MAN_GOLADDER 450 #define ST_MAN_GOLADDER2 2843 #define ST_MAN_EMPTY 476 diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index c0b8b75c93..60d6a9b3df 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -55,7 +55,20 @@ void scene07_initScene(Scene *sc) { } void sceneHandler07_openLuke() { - warning("STUB: sceneHandler07_openLuke()"); + StaticANIObject *luke = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1); + + luke->changeStatics2(ST_LUK_OPEN); + luke->show1(-1, -1, -1, 0); + + if (g_vars->scene07_lukeAnim) { + g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent; + } else { + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); + + g_vars->scene07_lukeAnim = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); + + g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent; + } } void sceneHandler07_closeLuke() { -- cgit v1.2.3 From d8c3d472006d89936b5324652cc9e63dfce401a6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 18:45:11 +0200 Subject: FULLPIPE: Enable scene07 --- engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 83f4d6be10..5c61088805 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -328,7 +328,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = scene06_updateCursor; break; -#if 0 case SC_7: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_7"); scene->preloadMovements(sceneVar); @@ -340,6 +339,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = defaultUpdateCursor; break; +#if 0 case SC_8: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_8"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 3751ed9a32..0070d1041f 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -59,6 +59,9 @@ void scene06_initMumsy(); int sceneHandler06(ExCommand *cmd); int scene06_updateCursor(); +void scene07_initScene(Scene *sc); +int sceneHandler07(ExCommand *cmd); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); -- cgit v1.2.3 From 3832f91187f7b8c2d7d0bb8fe8ad82aefbce1990 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 19:09:28 +0200 Subject: FULLPIPE: Initial code for init_scene08() --- engines/fullpipe/objectnames.h | 2 +- engines/fullpipe/scenes/scene08.cpp | 99 +++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 engines/fullpipe/scenes/scene08.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index b61a5c6f62..81385a5d3f 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -169,7 +169,7 @@ namespace Fullpipe { #define sO_EmptyShe "\xcf\xf3\xf1\xf2\xe0\xff" // "Пустая" #define sO_WayToPipe "\xcf\xf3\xf2\xfc \xea \xf2\xf0\xf3\xe1\xe5" // "Путь к трубе" #define sO_IsDrinking "\xcf\xfc\xe5\xf2" // "Пьет" -#define sO_BrokenInPieces "\xd0\xe0\xe7\xe1\xe8\xf2\xe0" // "Разбита" +#define sO_Broken "\xd0\xe0\xe7\xe1\xe8\xf2\xe0" // "Разбита" #define sO_Unblocked "\xd0\xe0\xe7\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xe0\xed" // "Разблокирован" #define sO_Unfolded "\xd0\xe0\xe7\xe2\xe5\xf0\xed\xf3\xf2" // "Развернут" #define sO_Jawcrucnher "\xd0\xee\xf2\xee\xf5\xf0\xf3\xf1" // "Ротохрус" diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp new file mode 100644 index 0000000000..82dbd7d925 --- /dev/null +++ b/engines/fullpipe/scenes/scene08.cpp @@ -0,0 +1,99 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objects.h" +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/scenes.h" +#include "fullpipe/scene.h" + +namespace Fullpipe { + +void scene08_initScene(Scene *sc) { + g_vars->scene08_var06 = 0; + g_vars->scene08_var01 = 0; + g_vars->scene08_var02 = 0; + g_vars->scene08_var03 = 0; + g_vars->scene08_batuta = sc->getStaticANIObject1ById(ANI_BATUTA, -1); + g_vars->scene08_vmyats = sc->getStaticANIObject1ById(ANI_VMYATS, -1); + g_vars->scene08_clock = sc->getStaticANIObject1ById(ANI_CLOCK_8, -1); + g_vars->scene08_var04 = -37; + g_vars->scene08_var05 = -1; + + Scene *oldsc = g_fullpipe->_currentScene; + g_fullpipe->_currentScene = sc; + + int batuta = g_fullpipe->getObjectState(sO_TummyTrampie); + MovGraphLink *lock = getSc2MctlCompoundBySceneId(sc->_sceneId)->getLinkByName(sO_CloseThing); + + if (lock) + lock->_flags &= 0xDFFFFFFF; + + if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) { + g_vars->scene08_batuta->changeStatics2(ST_BTT_SPOON); + } else if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) { + g_vars->scene08_batuta->changeStatics2(g_vars->scene08_batuta, ST_BTT_NOSPOON); + + g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); + g_vars->scene08_clock->_movement->setDynamicPhaseIndex(3); + } else if (batuta== g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) { + g_vars->scene08_batuta->changeStatics2(ST_BTT_CHESHET); + + g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); + g_vars->scene08_clock->_movement->setDynamicPhaseIndex(8); + } else if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) { + g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS); + + g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); + g_vars->scene08_clock->_movement->setDynamicPhaseIndex(2); + + if (lock) + lock->_flags |= 0x20000000; + + g_vars->scene08_var05 = 71; + } + + g_vars->scene08_clock->_callback2 = 0; + + if (g_fullpipe->getObjectState(sO_StairsUp_8) == g_fullpipe->getObjectEnumState(sO_StairsUp_8, sO_Broken)) { + g_vars->scene08_var07 = 0; + + sc->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; + + g_vars->scene08_var04 = -39; + } else { + g_vars->scene08_var07 = 1; + } + + sc->getPictureObjectById(PIC_SC8_ARCADENOW, 0)->_flags &= 0xFFFB; + + g_fullpipe->_currentScene = oldsc; + + g_fullpipe->_floaters->init(getGameLoaderGameVar()->getSubVarByName("SC_8")); + g_fullpipe->_floaters->genFlies(sc, 100, 100, 0, 0); + + setArcadeOverlay(PIC_CSR_ARCADE3); +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From bf59b074d287a9c38ea64148c2bd5f4a4e6e29b4 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 23:00:23 +0200 Subject: FULLPIPE: Make scene08_initScene() compilable --- engines/fullpipe/constants.h | 10 ++++++++++ engines/fullpipe/module.mk | 1 + engines/fullpipe/motion.cpp | 6 ++++++ engines/fullpipe/motion.h | 2 ++ engines/fullpipe/scenes.cpp | 11 +++++++++++ engines/fullpipe/scenes.h | 11 +++++++++++ engines/fullpipe/scenes/scene08.cpp | 10 +++++++--- 7 files changed, 48 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index fdf0874861..1e145855b9 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -26,12 +26,14 @@ namespace Fullpipe { #define ANI_BALLDROP 2685 +#define ANI_BATUTA 737 #define ANI_BIGBALL 4923 #define ANI_BIGLUK 909 #define ANI_BOOT_1 4231 #define ANI_BUTTON 598 #define ANI_BUTTON_6 2988 #define ANI_CLOCK 588 +#define ANI_CLOCK_8 2989 #define ANI_CORNERSITTER 71 #define ANI_DOMINO_3 2732 #define ANI_DADAYASHIK 306 @@ -65,6 +67,7 @@ namespace Fullpipe { #define ANI_SC7_BOX 791 #define ANI_SPEAKER_4 3275 #define ANI_SPRING 542 +#define ANI_VMYATS 764 #define MSG_CLICKBOTTLE 569 #define MSG_CLICKBUTTON 609 #define MSG_CLICKPLANK 549 @@ -148,6 +151,7 @@ namespace Fullpipe { #define MSG_UPDATEBOTTLE 613 #define MV_BLK_CLOSE 911 #define MV_BLK_OPEN 910 +#define MV_CLK8_GO 2990 #define MV_CST_CLOSELUKE 807 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 @@ -263,6 +267,8 @@ namespace Fullpipe { #define PIC_SC4_MASK 585 #define PIC_SC4_PLANK 5183 #define PIC_SC6_LADDER 1104 +#define PIC_SC8_ARCADENOW 1043 +#define PIC_SC8_LADDER 754 #define PIC_SCD_SEL 734 #define QU_BALL_WALKL 4920 #define QU_BALL_WALKR 4919 @@ -364,6 +370,10 @@ namespace Fullpipe { #define SND_INTR_019 5220 #define ST_BLK_CLOSED 912 #define ST_BLK_OPEN 913 +#define ST_BTT_CHESHET 746 +#define ST_BTT_NOSPOON 739 +#define ST_BTT_SLEEPS 748 +#define ST_BTT_SPOON 741 #define ST_CLK_CLOSED 590 #define ST_CST_HANDLELESS 794 #define ST_DYAS_LIES 318 diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 7c09811c18..d3af88d242 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -31,6 +31,7 @@ MODULE_OBJS = \ scenes/scene05.o \ scenes/scene06.o \ scenes/scene07.o \ + scenes/scene08.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 44cf550bf1..3d8d6625b4 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -46,6 +46,12 @@ void MotionController::enableLinks(const char *linkName, bool enable) { warning("STUB: MotionController::enableLinks()"); } +MovGraphLink *MotionController::getLinkByName(const char *name) { + warning("STUB: MotionController::getLinkByName()"); + + return 0; +} + bool MctlCompound::load(MfcArchive &file) { debug(5, "MctlCompound::load()"); diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index ee4ad02f8d..029b25bb19 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -28,6 +28,7 @@ namespace Fullpipe { class Statics; class Movement; class MctlConnectionPoint; +class MovGraphLink; int startWalkTo(int objId, int objKey, int x, int y, int a5); int doSomeAnimation(int objId, int objKey, int a3); @@ -61,6 +62,7 @@ public: virtual MessageQueue *doWalkTo(StaticANIObject *subj, int xpos, int ypos, int fuzzyMatch, int staticsId) { return 0; } void enableLinks(const char *linkName, bool enable); + MovGraphLink *getLinkByName(const char *name); }; class MovGraphReact : public CObject { diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 5c61088805..6e59ade06c 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -143,6 +143,17 @@ Vars::Vars() { scene07_lukePercent = 0; scene07_plusMinus = 0; + scene08_batuta = 0; + scene08_vmyats = 0; + scene08_clock = 0; + scene08_var01 = 0; + scene08_var02 = 0; + scene08_var03 = 0; + scene08_var04 = 0; + scene08_var05 = 0; + scene08_var06 = 0; + scene08_var07 = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 0070d1041f..11b0170d59 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -184,6 +184,17 @@ public: int scene07_lukePercent; StaticANIObject *scene07_plusMinus; + StaticANIObject *scene08_batuta; + StaticANIObject *scene08_vmyats; + StaticANIObject *scene08_clock; + int scene08_var01; + int scene08_var02; + int scene08_var03; + int scene08_var04; + int scene08_var05; + int scene08_var06; + int scene08_var07; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 82dbd7d925..9b71b543cb 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -27,6 +27,10 @@ #include "fullpipe/constants.h" #include "fullpipe/scenes.h" #include "fullpipe/scene.h" +#include "fullpipe/statics.h" +#include "fullpipe/floaters.h" +#include "fullpipe/motion.h" +#include "fullpipe/gameloader.h" namespace Fullpipe { @@ -53,7 +57,7 @@ void scene08_initScene(Scene *sc) { if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) { g_vars->scene08_batuta->changeStatics2(ST_BTT_SPOON); } else if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) { - g_vars->scene08_batuta->changeStatics2(g_vars->scene08_batuta, ST_BTT_NOSPOON); + g_vars->scene08_batuta->changeStatics2(ST_BTT_NOSPOON); g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); g_vars->scene08_clock->_movement->setDynamicPhaseIndex(3); @@ -90,10 +94,10 @@ void scene08_initScene(Scene *sc) { g_fullpipe->_currentScene = oldsc; - g_fullpipe->_floaters->init(getGameLoaderGameVar()->getSubVarByName("SC_8")); + g_fullpipe->_floaters->init(g_fullpipe->getGameLoaderGameVar()->getSubVarByName("SC_8")); g_fullpipe->_floaters->genFlies(sc, 100, 100, 0, 0); - setArcadeOverlay(PIC_CSR_ARCADE3); + g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE3); } } // End of namespace Fullpipe -- cgit v1.2.3 From f91f043b103099873ef2ff691c9bd2fc3f2863c8 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 23:30:52 +0200 Subject: FULLPIPE: Remove logically dead code. CID 1138359 --- engines/fullpipe/motion.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 3d8d6625b4..ab8815e5f9 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -318,9 +318,6 @@ MessageQueue *MctlLadder::method34(StaticANIObject *subj, int xpos, int ypos, in if (mq) { if (mq->chain(subj)) return mq; - - } else { - delete mq; } return 0; -- cgit v1.2.3 From 0ebca033559b27903278369b5d18ebc54560c431 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 23:34:26 +0200 Subject: FULLPIPE: Fix explicit null dereference. CID 1138360 --- engines/fullpipe/motion.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index ab8815e5f9..727cb4c40c 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -1566,9 +1566,13 @@ void MGM::updateAnimStatics(StaticANIObject *ani, int staticsId) { ani->queueMessageQueue(0); ani->_movement->gotoLastFrame(); ani->_statics = ani->_movement->_staticsObj2; + + int x = ani->_movement->_ox; + int y = ani->_movement->_oy; + ani->_movement = 0; - ani->setOXY(ani->_movement->_ox, ani->_movement->_oy); + ani->setOXY(x, y); } if (ani->_statics) { -- cgit v1.2.3 From b8fcaae6438ef06d13a3c16b21ea2a2cae49f162 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 23:43:07 +0200 Subject: FULLPIPE: Fix explicit null dereference. CID 1138361 --- engines/fullpipe/scenes/scene04.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 28b2d77d5b..c8712d2a78 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -982,6 +982,10 @@ void sceneHandler04_leaveScene() { } } + if (!ex) { + error("sceneHandler04_leaveScene(): Cannot find exit"); + } + ex->_y = g_vars->scene04_bottle->_oy - 304; mq->chain(0); -- cgit v1.2.3 From 5253021fbd067f3d27f00f37ad4f34649e24166e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 19 Dec 2013 23:44:48 +0200 Subject: FULLPIPE: Remove explicit null check. CID 1138364 --- engines/fullpipe/scenes/scene04.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index c8712d2a78..6c9e9c69ea 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -1115,7 +1115,7 @@ void sceneHandler04_leaveLadder(ExCommand *ex) { mc->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); - } else if (mq) { + } else { delete mq; } -- cgit v1.2.3 From 17ecccd4b6c7789483db12770494984fa697dbbb Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 20 Dec 2013 23:21:10 +0200 Subject: FULLPIPE: Implement scene10_initScene() --- engines/fullpipe/scenes/scene10.cpp | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 engines/fullpipe/scenes/scene10.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp new file mode 100644 index 0000000000..7080952c8f --- /dev/null +++ b/engines/fullpipe/scenes/scene10.cpp @@ -0,0 +1,54 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" + +#include "fullpipe/gameloader.h" +#include "fullpipe/scenes.h" +#include "fullpipe/statics.h" + +#include "fullpipe/behavior.h" + +namespace Fullpipe { + +void scene10_initScene(Scene *sc) { + g_vars->scene10_gum = sc->getStaticANIObject1ById(sc, ANI_GUM, -1); + g_vars->scene10_packet = sc->getStaticANIObject1ById(sc, ANI_PACHKA, -1); + g_vars->scene10_packet2 = sc->getStaticANIObject1ById(sc, ANI_PACHKA2, -1); + g_vars->scene10_inflater = sc->getStaticANIObject1ById(sc, ANI_NADUVATEL, -1); + g_vars->scene10_ladder = sc->getPictureObjectById(sc, PIC_SC10_LADDER, 0); + + g_fullpipe->lift_setButton(sO_Level1, ST_LBN_1N); + g_fullpipe->lift_sub5(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT); + + if (g_fullpipe->getObjectState(sO_Inflater) == g_fullpipe->getObjectEnumState(sO_Inflater, sO_WithGum)) { + g_vars->scene10_hasGum = 1; + } else { + g_vars->scene10_hasGum = 0; + g_vars->scene10_gum->hide(); + } +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From d20bf74f0a094d829b2b23ec74e56819508acbd2 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 20 Dec 2013 23:47:25 +0200 Subject: FULLPIPE: Implement sceneHandler10() --- engines/fullpipe/scenes/scene10.cpp | 93 +++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 7080952c8f..ffa127c461 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -51,4 +51,97 @@ void scene10_initScene(Scene *sc) { } } +int sceneHandler10(ExCommand *ex) { + if (ex->msg._messageKind != 17) + return 0; + + switch(ex->_messageNum) { + case MSG_LIFT_CLOSEDOOR: + lift_closedoorSeq(); + break; + + case MSG_LIFT_EXITLIFT: + lift_exitSeq(ex); + break; + + case MSG_LIFT_STARTEXITQUEUE: + lift_startExitQueue(); + break; + + case MSG_LIFT_CLICKBUTTON: + lift_animation3(); + break; + + case MSG_SC10_LADDERTOBACK: + g_vars->scene10_ladder->_priority = 49; + break; + + case MSG_SC10_LADDERTOFORE: + g_vars->scene10_ladder->_priority = 0; + break; + + case MSG_LIFT_GO: + lift_goAnimation(); + break; + + case MSG_SC10_CLICKGUM: + sceneHandler10_clickGum(); + + ex->_messageKind = 0; + break; + + case MSG_SC10_HIDEGUM: + sceneHandler10_hideGum(); + break; + + case MSG_SC10_SHOWGUM: + sceneHandler10_showGum(); + break; + + case 64: + lift_sub05(ex); + break; + + case 29: + if (g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) { + handleObjectInteraction(g_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_keyCode); + ex->_messageKind = 0; + + return 0; + } + + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + + if (ani && ani->_id == ANI_LIFTBUTTON) { + lift_sub1(ani); + ex->_messageKind = 0; + + return 0; + } + break; + + case 33: + { + int res = 0; + + if (g_fullpipe->_aniMan2) { + if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + + if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + + res = 1; + } + + g_fullpipe->_behaviorManager->updateBehaviors(); + g_fullpipe->startSceneTrack(); + + return res; + } + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From e5462f415f08636b3091f5db282b4cf872ba9d75 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 20 Dec 2013 11:29:23 +0200 Subject: FULLPIPE: Implement sceneHandler08() --- engines/fullpipe/constants.h | 11 ++ engines/fullpipe/scenes.cpp | 1 + engines/fullpipe/scenes.h | 1 + engines/fullpipe/scenes/scene08.cpp | 201 ++++++++++++++++++++++++++++++++++++ 4 files changed, 214 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 1e145855b9..984e024a26 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -139,11 +139,18 @@ namespace Fullpipe { #define MSG_SC7_OPENLUKE 823 #define MSG_SC7_PULL 2943 #define MSG_SC7_SHOWBOX 816 +#define MSG_SC8_ARCADENOW 1044 +#define MSG_SC8_ENTERUP 3037 +#define MSG_SC8_GETHIMUP 789 +#define MSG_SC8_HIDELADDER_D 1107 +#define MSG_SC8_RESUMEFLIGHT 784 +#define MSG_SC8_STANDUP 2976 #define MSG_GOTOLADDER 618 #define MSG_SHAKEBOTTLE 584 #define MSG_SHOOTKOZAW 557 #define MSG_SHOWCOIN 1033 #define MSG_SPINHANDLE 2398 +#define MSG_STARTARCADE 781 #define MSG_STARTHAND 612 #define MSG_TAKEBOTTLE 614 #define MSG_TAKEKOZAW 611 @@ -170,6 +177,7 @@ namespace Fullpipe { #define MV_KZW_STANDUP 563 #define MV_KZW_TURN 562 #define MV_MAN_FROMLADDER 493 +#define MV_MAN_FROMLADDERUP 1522 #define MV_MAN_GOD 481 #define MV_MAN_GOLADDER 451 #define MV_MAN_GOLADDER2 2844 @@ -185,6 +193,7 @@ namespace Fullpipe { #define MV_MAN_STOPLADDER 454 #define MV_MAN_STOPLADDER2 2845 #define MV_MAN_TOLADDER 448 +#define MV_MAN_TOLADDERD 1524 #define MV_MAN_TOLADDER2 2841 #define MV_MAN_TURN_LU 486 #define MV_MAN_TURN_SUD 1089 @@ -365,6 +374,7 @@ namespace Fullpipe { #define SND_4_012 3127 #define SND_4_033 4990 #define SND_5_026 5316 +#define SND_8_014 3624 #define SND_CMN_031 3516 #define SND_CMN_070 5199 #define SND_INTR_019 5220 @@ -436,6 +446,7 @@ namespace Fullpipe { #define ST_PNK_WEIGHTLEFT 503 #define ST_PNK_WEIGHTRIGHT 504 #define ST_SPR_UP 544 +#define ST_VMT_MIN 766 #define TrubaDown 697 #define TrubaLeft 474 #define TrubaRight 696 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 6e59ade06c..a701b5b206 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -153,6 +153,7 @@ Vars::Vars() { scene08_var05 = 0; scene08_var06 = 0; scene08_var07 = 0; + scene08_var08 = 0; selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 11b0170d59..f671ed9799 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -194,6 +194,7 @@ public: int scene08_var05; int scene08_var06; int scene08_var07; + int scene08_var08; PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 9b71b543cb..c8a64a2410 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -31,6 +31,7 @@ #include "fullpipe/floaters.h" #include "fullpipe/motion.h" #include "fullpipe/gameloader.h" +#include "fullpipe/behavior.h" namespace Fullpipe { @@ -100,4 +101,204 @@ void scene08_initScene(Scene *sc) { g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE3); } +void sceneHandler08_winArcade() { + warning("STUB: sceneHandler08_winArcade()"); +} + +void sceneHandler08_enterUp() { + warning("STUB: sceneHandler08_enterUp()"); +} + +void sceneHandler08_hideLadder() { + warning("STUB: sceneHandler08_hideLadder()"); +} + +void sceneHandler08_arcadeNow() { + warning("STUB: sceneHandler08_arcadeNow()"); +} + +void sceneHandler08_resumeFlight() { + warning("STUB: sceneHandler08_resumeFlight()"); +} + +void sceneHandler08_startArcade() { + warning("STUB: sceneHandler08_startArcade()"); +} + +void sceneHandler08_airMoves() { + warning("STUB: sceneHandler08_airMoves()"); +} + +void sceneHandler08_jumpLogic(ExCommand *cmd) { + warning("STUB: sceneHandler08_jumpLogic(cmd)"); +} + +void sceneHandler08_calcFlight() { + warning("STUB: sceneHandler08_calcFlight()"); +} + +void sceneHandler08_checkEndArcade() { + warning("STUB: sceneHandler08_checkEndArcade()"); +} + +void sceneHandler08_badLuck() { + warning("STUB: sceneHandler08_badLuck()"); +} + +void sceneHandler08_calcOffset() { + warning("STUB: sceneHandler08_calcOffset()"); +} + +void sceneHandler08_finishArcade() { + warning("STUB: sceneHandler08_finishArcade()"); +} + +void sceneHandler08_jumpOff() { + warning("STUB: sceneHandler08_jumpOff()"); +} + +void sceneHandler08_pushCallback(int *par) { + warning("STUB: sceneHandler08_pushCallback()"); +} + +void sceneHandler08_sitDown() { + warning("STUB: sceneHandler08_sitDown()"); +} + +void sceneHandler08_standUp() { + warning("STUB: sceneHandler08_standUp()"); +} + +void sceneHandler08_updateScreenCallback() { + warning("STUB: sceneHandler08_updateScreenCallback()"); +} + +int sceneHandler08(ExCommand *cmd) { + if (cmd->_messageKind != 17) + return 0; + + switch (cmd->_messageNum) { + case MSG_CMN_WINARCADE: + sceneHandler08_winArcade(); + break; + + case MSG_SC8_ENTERUP: + sceneHandler08_enterUp(); + break; + + case MSG_SC8_HIDELADDER_D: + sceneHandler08_hideLadder(); + break; + + case MSG_SC8_STANDUP: + g_vars->scene08_var08 = -10; + g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN); + g_vars->scene08_vmyats->setOXY(382, 703); + g_vars->scene08_vmyats->_priority = 29; + g_vars->scene08_vmyats->_callback2 = sceneHandler08_pushCallback; + g_vars->scene08_var01 = 1; + break; + + case MSG_SC8_ARCADENOW: + sceneHandler08_arcadeNow(); + break; + + case MSG_SC8_RESUMEFLIGHT: + sceneHandler08_resumeFlight(); + break; + + case MSG_SC8_GETHIMUP: + g_vars->scene08_var08 = 0; + g_vars->scene08_var02 = 1; + break; + + case MSG_STARTARCADE: + sceneHandler08_startArcade(); + break; + + case 29: + if (g_vars->scene08_var06) { + if (g_vars->scene08_var01) { + sceneHandler08_airMoves(); + break; + } + if (g_vars->scene08_var03) { + sceneHandler08_jumpLogic(cmd); + break; + } + } + break; + + case 33: + { + int res = 0; + + if (g_fullpipe->_aniMan2) { + if (g_vars->scene08_var06) { + int scHeight = g_fullpipe->_sceneRect.bottom - g_fullpipe->_sceneRect.top; + + if (g_fullpipe->_aniMan2->_oy < g_fullpipe->_sceneRect.top + 200) { + g_fullpipe->_sceneRect.top = g_fullpipe->_aniMan2->_oy - 200; + + if (g_fullpipe->_sceneRect.top < 0) + g_fullpipe->_sceneRect.top = 0; + + g_fullpipe->_sceneRect.bottom = scHeight + g_fullpipe->_sceneRect.top; + } + + if (g_fullpipe->_aniMan2->_oy > g_fullpipe->_sceneRect.bottom - 350) { + g_fullpipe->_sceneRect.bottom = g_fullpipe->_aniMan2->_oy + 350; + g_fullpipe->_sceneRect.top = g_fullpipe->_aniMan2->_oy + 350 - scHeight; + } + } else { + if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + + if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + + res = 1; + } + } + + g_fullpipe->_floaters->update(); + + if (g_vars->scene08_var06) { + if (g_vars->scene08_var01) + sceneHandler08_calcFlight(); + } else { + Movement *mov = g_fullpipe->_aniMan->_movement; + + if (mov) { + if (mov->_id == MV_MAN_TOLADDERD && mov->_currDynamicPhaseIndex == 8) + g_fullpipe->_aniMan->_priority = 2; + + if (mov && mov->_id == MV_MAN_FROMLADDERUP && mov->_currDynamicPhaseIndex == 13) + g_fullpipe->_aniMan->_priority = 20; + } + + g_fullpipe->_behaviorManager->updateBehaviors(); + g_fullpipe->startSceneTrack(); + } + + if (g_vars->scene08_var02) + sceneHandler08_checkEndArcade(); + + if (g_vars->scene08_var05 > 0) { + g_vars->scene08_var05--; + + if (!g_vars->scene08_var05) { + g_fullpipe->playSound(SND_8_014, 0); + + g_vars->scene08_var05 = 71; + } + } + + return res; + } + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From 9816794f8c08d6a9f4f49fba0e05d20dc0b8746b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 20 Dec 2013 11:35:42 +0200 Subject: FULLPIPE: Plug scene08 in --- engines/fullpipe/scenes.cpp | 4 ++-- engines/fullpipe/scenes.h | 5 +++++ engines/fullpipe/scenes/scene08.cpp | 12 ++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index a701b5b206..50142dd918 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -351,7 +351,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = defaultUpdateCursor; break; -#if 0 case SC_8: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_8"); scene->preloadMovements(sceneVar); @@ -359,11 +358,12 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _behaviorManager->initBehavior(scene, sceneVar); scene->initObjectCursors("SC_8"); setSceneMusicParameters(sceneVar); - sub_416890(); + scene08_setupMusic(); addMessageHandler(sceneHandler08, 2); _updateCursorCallback = scene08_updateCursor; break; +#if 0 case SC_9: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_9"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index f671ed9799..24fd1fce4c 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -62,6 +62,11 @@ int scene06_updateCursor(); void scene07_initScene(Scene *sc); int sceneHandler07(ExCommand *cmd); +void scene08_initScene(Scene *sc); +void scene08_setupMusic(); +int sceneHandler08(ExCommand *cmd); +int scene08_updateCursor(); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index c8a64a2410..e9bc1e6467 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -101,6 +101,18 @@ void scene08_initScene(Scene *sc) { g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE3); } +void scene08_setupMusic() { + warning("STUB: scene08_setupMusic()"); +} + +int scene08_updateCursor() { + warning("STUB: scene08_updateCursor()"); + + g_fullpipe->updateCursorCommon(); + + return g_fullpipe->_cursorId; +} + void sceneHandler08_winArcade() { warning("STUB: sceneHandler08_winArcade()"); } -- cgit v1.2.3 From 90532c78a29bd3fd4a097dec852b67fd3234c227 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 20 Dec 2013 16:08:02 +0200 Subject: FULLPIPE: g_fullpipe -> g_fp for brevity --- engines/fullpipe/behavior.cpp | 10 +- engines/fullpipe/fullpipe.cpp | 4 +- engines/fullpipe/fullpipe.h | 2 +- engines/fullpipe/gameloader.cpp | 54 ++++---- engines/fullpipe/gfx.cpp | 64 ++++----- engines/fullpipe/input.cpp | 12 +- engines/fullpipe/interaction.cpp | 18 +-- engines/fullpipe/inventory.cpp | 18 +-- engines/fullpipe/lift.cpp | 2 +- engines/fullpipe/messagehandlers.cpp | 240 ++++++++++++++++----------------- engines/fullpipe/messages.cpp | 84 ++++++------ engines/fullpipe/modal.cpp | 40 +++--- engines/fullpipe/motion.cpp | 14 +- engines/fullpipe/ngiarchive.cpp | 4 +- engines/fullpipe/scene.cpp | 100 +++++++------- engines/fullpipe/scenes.cpp | 4 +- engines/fullpipe/scenes/scene01.cpp | 22 +-- engines/fullpipe/scenes/scene02.cpp | 52 +++---- engines/fullpipe/scenes/scene03.cpp | 70 +++++----- engines/fullpipe/scenes/scene04.cpp | 240 ++++++++++++++++----------------- engines/fullpipe/scenes/scene05.cpp | 98 +++++++------- engines/fullpipe/scenes/scene06.cpp | 206 ++++++++++++++-------------- engines/fullpipe/scenes/scene07.cpp | 46 +++---- engines/fullpipe/scenes/scene08.cpp | 70 +++++----- engines/fullpipe/scenes/sceneDbg.cpp | 26 ++-- engines/fullpipe/scenes/sceneIntro.cpp | 14 +- engines/fullpipe/sound.cpp | 2 +- engines/fullpipe/stateloader.cpp | 16 +-- engines/fullpipe/statics.cpp | 44 +++--- engines/fullpipe/utils.cpp | 14 +- 30 files changed, 795 insertions(+), 795 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp index bcf5f0d7bb..abea906d9b 100644 --- a/engines/fullpipe/behavior.cpp +++ b/engines/fullpipe/behavior.cpp @@ -132,7 +132,7 @@ void BehaviorManager::updateBehavior(BehaviorInfo *behaviorInfo, BehaviorEntry * mq->sendNextCommand(); bhi->_flags &= 0xFFFFFFFD; - } else if (behaviorInfo->_counter >= bhi->_delay && bhi->_percent && g_fullpipe->_rnd->getRandomNumber(32767) <= entry->_items[i]->_percent) { + } else if (behaviorInfo->_counter >= bhi->_delay && bhi->_percent && g_fp->_rnd->getRandomNumber(32767) <= entry->_items[i]->_percent) { MessageQueue *mq = new MessageQueue(bhi->_messageQueue, 0, 1); mq->sendNextCommand(); @@ -149,7 +149,7 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, int delay, B MessageQueue *mq = 0; if (bhe->_flags & 1) { - uint rnd = g_fullpipe->_rnd->getRandomNumber(32767); + uint rnd = g_fp->_rnd->getRandomNumber(32767); uint runPercent = 0; for (int i = 0; i < bhe->_itemsCount; i++) { if (!(bhe->_items[i]->_flags & 1) && bhe->_items[i]->_percent) { @@ -164,7 +164,7 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, int delay, B for (int i = 0; i < bhe->_itemsCount; i++) { if (!(bhe->_items[i]->_flags & 1) && delay >= bhe->_items[i]->_delay) { if (bhe->_items[i]->_percent) { - if (g_fullpipe->_rnd->getRandomNumber(32767) <= bhe->_items[i]->_percent) { + if (g_fp->_rnd->getRandomNumber(32767) <= bhe->_items[i]->_percent) { mq = new MessageQueue(bhe->_items[i]->_messageQueue, 0, 1); break; } @@ -252,11 +252,11 @@ void BehaviorInfo::initObjectBehavior(GameVar *var, Scene *sc, StaticANIObject * if (strcmp(var->_value.stringValue, "ROOT")) break; - GameVar *v1 = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName()); + GameVar *v1 = g_fp->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName()); if (v1 == var) return; - sc = g_fullpipe->accessScene(ani->_sceneId); + sc = g_fp->accessScene(ani->_sceneId); clear(); var = v1; _itemsCount = var->getSubVarsCount(); diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp index 674f67fe55..d02ce4796b 100644 --- a/engines/fullpipe/fullpipe.cpp +++ b/engines/fullpipe/fullpipe.cpp @@ -40,7 +40,7 @@ namespace Fullpipe { -FullpipeEngine *g_fullpipe = 0; +FullpipeEngine *g_fp = 0; Vars *g_vars = 0; FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) { @@ -157,7 +157,7 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc) _isSaveAllowed = true; - g_fullpipe = this; + g_fp = this; g_vars = new Vars; } diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index aa42fd01cc..f4ac84b454 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -279,7 +279,7 @@ public: }; -extern FullpipeEngine *g_fullpipe; +extern FullpipeEngine *g_fp; extern Vars *g_vars; } // End of namespace Fullpipe diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp index 0b667124ef..57c1b23f66 100644 --- a/engines/fullpipe/gameloader.cpp +++ b/engines/fullpipe/gameloader.cpp @@ -32,19 +32,19 @@ namespace Fullpipe { Inventory2 *getGameLoaderInventory() { - return &g_fullpipe->_gameLoader->_inventory; + return &g_fp->_gameLoader->_inventory; } MctlCompound *getSc2MctlCompoundBySceneId(int16 sceneId) { - for (uint i = 0; i < g_fullpipe->_gameLoader->_sc2array.size(); i++) - if (g_fullpipe->_gameLoader->_sc2array[i]._sceneId == sceneId) - return (MctlCompound *)g_fullpipe->_gameLoader->_sc2array[i]._motionController; + for (uint i = 0; i < g_fp->_gameLoader->_sc2array.size(); i++) + if (g_fp->_gameLoader->_sc2array[i]._sceneId == sceneId) + return (MctlCompound *)g_fp->_gameLoader->_sc2array[i]._motionController; return 0; } InteractionController *getGameLoaderInteractionController() { - return g_fullpipe->_gameLoader->_interactionController; + return g_fp->_gameLoader->_interactionController; } GameLoader::GameLoader() { @@ -68,10 +68,10 @@ GameLoader::GameLoader() { _preloadEntranceId = 0; _updateCounter = 0; - g_fullpipe->_msgX = 0; - g_fullpipe->_msgY = 0; - g_fullpipe->_msgObjectId2 = 0; - g_fullpipe->_msgId = 0; + g_fp->_msgX = 0; + g_fp->_msgY = 0; + g_fp->_msgObjectId2 = 0; + g_fp->_msgId = 0; } GameLoader::~GameLoader() { @@ -91,10 +91,10 @@ bool GameLoader::load(MfcArchive &file) { _gameProject->load(file); - g_fullpipe->_gameProject = _gameProject; + g_fp->_gameProject = _gameProject; - if (g_fullpipe->_gameProjectVersion < 12) { - error("Old gameProjectVersion: %d", g_fullpipe->_gameProjectVersion); + if (g_fp->_gameProjectVersion < 12) { + error("Old gameProjectVersion: %d", g_fp->_gameProjectVersion); } _gameName = file.readPascalString(); @@ -167,7 +167,7 @@ bool GameLoader::gotoScene(int sceneId, int entranceId) { return false; if (_sc2array[sc2idx]._entranceDataCount < 1) { - g_fullpipe->_currentScene = st->_scene; + g_fp->_currentScene = st->_scene; return true; } @@ -186,20 +186,20 @@ bool GameLoader::gotoScene(int sceneId, int entranceId) { if (sg || (sg = _gameVar->getSubVarByName("OBJSTATES")->addSubVarAsInt("SAVEGAME", 0)) != 0) sg->setSubVarAsInt("Entrance", entranceId); - if (!g_fullpipe->sceneSwitcher(_sc2array[sc2idx]._entranceData[entranceIdx])) + if (!g_fp->sceneSwitcher(_sc2array[sc2idx]._entranceData[entranceIdx])) return false; - g_fullpipe->_msgObjectId2 = 0; - g_fullpipe->_msgY = -1; - g_fullpipe->_msgX = -1; + g_fp->_msgObjectId2 = 0; + g_fp->_msgY = -1; + g_fp->_msgX = -1; - g_fullpipe->_currentScene = st->_scene; + g_fp->_currentScene = st->_scene; - MessageQueue *mq1 = g_fullpipe->_currentScene->getMessageQueueById(_sc2array[sc2idx]._entranceData[entranceIdx]->_messageQueueId); + MessageQueue *mq1 = g_fp->_currentScene->getMessageQueueById(_sc2array[sc2idx]._entranceData[entranceIdx]->_messageQueueId); if (mq1) { MessageQueue *mq = new MessageQueue(mq1, 0, 0); - StaticANIObject *stobj = g_fullpipe->_currentScene->getStaticANIObject1ById(_field_FA, -1); + StaticANIObject *stobj = g_fp->_currentScene->getStaticANIObject1ById(_field_FA, -1); if (stobj) { stobj->_flags &= 0x100; @@ -220,7 +220,7 @@ bool GameLoader::gotoScene(int sceneId, int entranceId) { return false; } } else { - StaticANIObject *stobj = g_fullpipe->_currentScene->getStaticANIObject1ById(_field_FA, -1); + StaticANIObject *stobj = g_fp->_currentScene->getStaticANIObject1ById(_field_FA, -1); if (stobj) stobj->_flags &= 0xfeff; } @@ -262,8 +262,8 @@ bool GameLoader::preloadScene(int sceneId, int entranceId) { return false; } - if (g_fullpipe->_currentScene && g_fullpipe->_currentScene->_sceneId == sceneId) - g_fullpipe->_currentScene = 0; + if (g_fp->_currentScene && g_fp->_currentScene->_sceneId == sceneId) + g_fp->_currentScene = 0; saveScenePicAniInfos(sceneId); clearGlobalMessageQueueList1(); @@ -358,7 +358,7 @@ void GameLoader::applyPicAniInfos(Scene *sc, PicAniInfo **picAniInfo, int picAni if (!(picAniInfo[i]->type & 1)) continue; - Scene *scNew = g_fullpipe->accessScene(picAniInfo[i]->sceneId); + Scene *scNew = g_fp->accessScene(picAniInfo[i]->sceneId); if (!scNew) continue; @@ -386,8 +386,8 @@ void GameLoader::saveScenePicAniInfos(int sceneId) { } void GameLoader::updateSystems(int counterdiff) { - if (g_fullpipe->_currentScene) { - g_fullpipe->_currentScene->update(counterdiff); + if (g_fp->_currentScene) { + g_fp->_currentScene->update(counterdiff); _exCommand._messageKind = 17; _updateCounter++; @@ -511,7 +511,7 @@ InputController *FullpipeEngine::getGameLoaderInputController() { } MotionController *getCurrSceneSc2MotionController() { - return getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); + return getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId); } } // End of namespace Fullpipe diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index d54f7591b4..9aa4f219a6 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -100,11 +100,11 @@ bool Background::load(MfcArchive &file) { addPictureObject(pct); } - assert(g_fullpipe->_gameProjectVersion >= 4); + assert(g_fp->_gameProjectVersion >= 4); _bigPictureArray1Count = file.readUint32LE(); - assert(g_fullpipe->_gameProjectVersion >= 5); + assert(g_fp->_gameProjectVersion >= 5); _bigPictureArray2Count = file.readUint32LE(); @@ -313,7 +313,7 @@ bool GameObject::load(MfcArchive &file) { _oy = file.readUint32LE(); _priority = file.readUint16LE(); - if (g_fullpipe->_gameProjectVersion >= 11) { + if (g_fp->_gameProjectVersion >= 11) { _field_8 = file.readUint32LE(); } @@ -494,7 +494,7 @@ bool Picture::load(MfcArchive &file) { _y = file.readUint32LE(); _field_44 = file.readUint16LE(); - assert(g_fullpipe->_gameProjectVersion >= 2); + assert(g_fp->_gameProjectVersion >= 2); _width = file.readUint32LE(); _height = file.readUint32LE(); @@ -508,7 +508,7 @@ bool Picture::load(MfcArchive &file) { setAOIDs(); } - assert (g_fullpipe->_gameProjectVersion >= 12); + assert (g_fp->_gameProjectVersion >= 12); _alpha = file.readUint32LE() & 0xff; @@ -527,8 +527,8 @@ bool Picture::load(MfcArchive &file) { } void Picture::setAOIDs() { - int w = (g_fullpipe->_pictureScale + _width - 1) / g_fullpipe->_pictureScale; - int h = (g_fullpipe->_pictureScale + _height - 1) / g_fullpipe->_pictureScale; + int w = (g_fp->_pictureScale + _width - 1) / g_fp->_pictureScale; + int h = (g_fp->_pictureScale + _height - 1) / g_fp->_pictureScale; _memoryObject2->_rows = (byte **)malloc(w * sizeof(int *)); @@ -618,7 +618,7 @@ void Picture::draw(int x, int y, int style, int angle) { if (!pal) { //warning("Picture:draw: using global palette"); - pal = g_fullpipe->_globalPalette; + pal = g_fp->_globalPalette; } Common::Point point; @@ -650,7 +650,7 @@ void Picture::drawRotated(int x, int y, int angle) { } void Picture::displayPicture() { - if (!g_fullpipe->_gameContinue) + if (!g_fp->_gameContinue) return; getData(); @@ -659,22 +659,22 @@ void Picture::displayPicture() { if (!_dataSize) return; - g_fullpipe->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); - g_fullpipe->_system->copyRectToScreen(g_fullpipe->_backgroundSurface.getBasePtr(0, 0), g_fullpipe->_backgroundSurface.pitch, 0, 0, 800, 600); + g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(0, 0), g_fp->_backgroundSurface.pitch, 0, 0, 800, 600); draw(0, 0, 0, 0); - g_fullpipe->updateEvents(); - g_fullpipe->_system->delayMillis(10); - g_fullpipe->_system->updateScreen(); + g_fp->updateEvents(); + g_fp->_system->delayMillis(10); + g_fp->_system->updateScreen(); - while (g_fullpipe->_gameContinue) { - g_fullpipe->updateEvents(); - g_fullpipe->_system->delayMillis(10); - g_fullpipe->_system->updateScreen(); + while (g_fp->_gameContinue) { + g_fp->updateEvents(); + g_fp->_system->delayMillis(10); + g_fp->_system->updateScreen(); - if (g_fullpipe->_keyState == ' ') { - g_fullpipe->_keyState = Common::KEYCODE_INVALID; + if (g_fp->_keyState == ' ') { + g_fp->_keyState = Common::KEYCODE_INVALID; break; } } @@ -722,7 +722,7 @@ bool Picture::isPixelHitAtPos(int x, int y) { } int Picture::getPixelAtPos(int x, int y) { - return getPixelAtPosEx(x / g_fullpipe->_pictureScale, y / g_fullpipe->_pictureScale); + return getPixelAtPosEx(x / g_fp->_pictureScale, y / g_fp->_pictureScale); return false; } @@ -731,8 +731,8 @@ int Picture::getPixelAtPosEx(int x, int y) { if (x < 0 || y < 0) return 0; - if (x < (g_fullpipe->_pictureScale + _width - 1) / g_fullpipe->_pictureScale && - y < (g_fullpipe->_pictureScale + _height - 1) / g_fullpipe->_pictureScale && + if (x < (g_fp->_pictureScale + _width - 1) / g_fp->_pictureScale && + y < (g_fp->_pictureScale + _height - 1) / g_fp->_pictureScale && _memoryObject2 != 0 && _memoryObject2->_rows != 0) return _memoryObject2->_rows[x][2 * y]; @@ -785,8 +785,8 @@ bool Bitmap::isPixelAtHitPosRB(int x, int y) { void Bitmap::putDib(int x, int y, int32 *palette) { debug(7, "Bitmap::putDib(%d, %d)", x, y); - _x = x - g_fullpipe->_sceneRect.left; - _y = y - g_fullpipe->_sceneRect.top; + _x = x - g_fp->_sceneRect.left; + _y = y - g_fp->_sceneRect.top; if (_type == MKTAG('R', 'B', '\0', '\0')) putDibRB(palette); @@ -879,7 +879,7 @@ bool Bitmap::putDibRB(int32 *palette, int pX, int pY) { if (y <= endy) { if (pX == -1) { int bgcolor = palette[(pixel >> 8) & 0xff]; - curDestPtr = (uint16 *)g_fullpipe->_backgroundSurface.getBasePtr(start1, y); + curDestPtr = (uint16 *)g_fp->_backgroundSurface.getBasePtr(start1, y); colorFill(curDestPtr, fillLen, bgcolor); } else { if (y == pY && pX >= start1 && pX < start1 + fillLen) @@ -910,7 +910,7 @@ bool Bitmap::putDibRB(int32 *palette, int pX, int pY) { if (y <= endy) { if (pX == -1) { - curDestPtr = (uint16 *)g_fullpipe->_backgroundSurface.getBasePtr(start1, y); + curDestPtr = (uint16 *)g_fp->_backgroundSurface.getBasePtr(start1, y); paletteFill(curDestPtr, (byte *)srcPtr2, fillLen, (int32 *)palette); } else { if (y == pY && pX >= start1 && pX < start1 + fillLen) @@ -922,7 +922,7 @@ bool Bitmap::putDibRB(int32 *palette, int pX, int pY) { } if (pX == -1) - g_fullpipe->_system->copyRectToScreen(g_fullpipe->_backgroundSurface.getBasePtr(startx, starty), g_fullpipe->_backgroundSurface.pitch, startx, starty, endx + 1 - startx, endy + 1 - starty); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(startx, starty), g_fp->_backgroundSurface.pitch, startx, starty, endx + 1 - startx, endy + 1 - starty); return false; } @@ -973,17 +973,17 @@ void Bitmap::putDibCB(int32 *palette) { if (_flags & 0x1000000) { for (int y = starty; y < endy; srcPtr -= pitch, y++) { - curDestPtr = (uint16 *)g_fullpipe->_backgroundSurface.getBasePtr(startx, y); + curDestPtr = (uint16 *)g_fp->_backgroundSurface.getBasePtr(startx, y); copierKeyColor(curDestPtr, srcPtr, endx - startx + 1, _flags & 0xff, (int32 *)palette, cb05_format); } } else { for (int y = starty; y <= endy; srcPtr -= pitch, y++) { - curDestPtr = (uint16 *)g_fullpipe->_backgroundSurface.getBasePtr(startx, y); + curDestPtr = (uint16 *)g_fp->_backgroundSurface.getBasePtr(startx, y); copier(curDestPtr, srcPtr, endx - startx + 1, (int32 *)palette, cb05_format); } } - g_fullpipe->_system->copyRectToScreen(g_fullpipe->_backgroundSurface.getBasePtr(startx, starty), g_fullpipe->_backgroundSurface.pitch, startx, starty, endx + 1 - startx, endy + 1 - starty); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(startx, starty), g_fp->_backgroundSurface.pitch, startx, starty, endx + 1 - startx, endy + 1 - starty); } void Bitmap::colorFill(uint16 *dest, int len, int32 color) { @@ -1194,7 +1194,7 @@ bool Shadows::load(MfcArchive &file) { } void Shadows::init() { - Scene *scene = g_fullpipe->accessScene(_sceneId); + Scene *scene = g_fp->accessScene(_sceneId); StaticANIObject *st; Movement *mov; diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index 60b6f621ea..5294c4b4ea 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -34,7 +34,7 @@ namespace Fullpipe { InputController::InputController() { - g_fullpipe->_inputController = this; + g_fp->_inputController = this; _flag = 0; _cursorHandle = 0; @@ -55,16 +55,16 @@ InputController::InputController() { InputController::~InputController() { removeMessageHandler(126, -1); - g_fullpipe->_inputController = 0; + g_fp->_inputController = 0; } void InputController::setInputDisabled(bool state) { _flag = state; - g_fullpipe->_inputDisabled = state; + g_fp->_inputDisabled = state; } void setInputDisabled(bool state) { - g_fullpipe->_inputController->setInputDisabled(state); + g_fp->_inputController->setInputDisabled(state); } void InputController::addCursor(CursorInfo *cursor) { @@ -93,8 +93,8 @@ void InputController::drawCursor(int x, int y) { if (_cursorIndex == -1) return; - _cursorBounds.left = g_fullpipe->_sceneRect.left + x - _cursorsArray[_cursorIndex]->hotspotX; - _cursorBounds.top = g_fullpipe->_sceneRect.top + y - _cursorsArray[_cursorIndex]->hotspotY; + _cursorBounds.left = g_fp->_sceneRect.left + x - _cursorsArray[_cursorIndex]->hotspotX; + _cursorBounds.top = g_fp->_sceneRect.top + y - _cursorsArray[_cursorIndex]->hotspotY; _cursorBounds.right = _cursorBounds.left + _cursorsArray[_cursorIndex]->width; _cursorBounds.bottom = _cursorBounds.top + _cursorsArray[_cursorIndex]->height; diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp index cd9aad5b22..9d92638328 100644 --- a/engines/fullpipe/interaction.cpp +++ b/engines/fullpipe/interaction.cpp @@ -36,8 +36,8 @@ int handleObjectInteraction(StaticANIObject *subject, GameObject *object, int in bool canInteractAny(GameObject *obj1, GameObject *obj2, int invId) { int sceneId = 0; - if (g_fullpipe->_currentScene) - sceneId = g_fullpipe->_currentScene->_sceneId; + if (g_fp->_currentScene) + sceneId = g_fp->_currentScene->_sceneId; InteractionController *intC = getGameLoaderInteractionController(); for (ObList::iterator i = intC->_interactions.begin(); i != intC->_interactions.end(); ++i) { @@ -137,7 +137,7 @@ bool InteractionController::handleInteraction(StaticANIObject *subj, GameObject obj->setPicAniInfo(&aniInfo); if (abs(xpos - subj->_ox) > 1 || abs(ypos - subj->_oy) > 1) { - mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->doWalkTo(subj, xpos, ypos, 1, cinter->_staticsId2); + mq = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->doWalkTo(subj, xpos, ypos, 1, cinter->_staticsId2); if (mq) { dur = mq->calcDuration(subj); delete mq; @@ -305,7 +305,7 @@ LABEL_38: if (abs(xpos - subj->_ox) > 1 || abs(ypos - subj->_oy) > 1 || (inter->_staticsId2 != 0 && (subj->_statics == 0 || subj->_statics->_staticsId != inter->_staticsId2))) { - mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->method34(subj, xpos, ypos, 1, inter->_staticsId2); + mq = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->method34(subj, xpos, ypos, 1, inter->_staticsId2); if (!mq) return false; @@ -444,7 +444,7 @@ bool Interaction::load(MfcArchive &file) { } bool Interaction::canInteract(GameObject *obj1, GameObject *obj2, int invId) { - if (_sceneId > 0 && g_fullpipe->_currentScene && g_fullpipe->_currentScene->_sceneId != _sceneId) + if (_sceneId > 0 && g_fp->_currentScene && g_fp->_currentScene->_sceneId != _sceneId) return false; if (_flags & 0x20000) @@ -476,20 +476,20 @@ bool Interaction::canInteract(GameObject *obj1, GameObject *obj2, int invId) { if (_objectState1) { if (_flags & 0x10) { - if ((g_fullpipe->getObjectState(obj1->getName()) & _objectState1) == 0) + if ((g_fp->getObjectState(obj1->getName()) & _objectState1) == 0) return false; } else { - if (g_fullpipe->getObjectState(obj1->getName()) != _objectState1) + if (g_fp->getObjectState(obj1->getName()) != _objectState1) return false; } } if (_objectState2) { if (_flags & 0x10) { - if ((g_fullpipe->getObjectState(obj2->getName()) & _objectState2) == 0) + if ((g_fp->getObjectState(obj2->getName()) & _objectState2) == 0) return false; } else { - if (g_fullpipe->getObjectState(obj2->getName()) != _objectState2) + if (g_fp->getObjectState(obj2->getName()) != _objectState2) return false; } } diff --git a/engines/fullpipe/inventory.cpp b/engines/fullpipe/inventory.cpp index 18ef3c4d97..3e22f8526d 100644 --- a/engines/fullpipe/inventory.cpp +++ b/engines/fullpipe/inventory.cpp @@ -161,7 +161,7 @@ int Inventory2::getItemFlags(int itemId) { } void Inventory2::rebuildItemRects() { - _scene = g_fullpipe->accessScene(_sceneId); + _scene = g_fp->accessScene(_sceneId); if (!_scene) return; @@ -226,11 +226,11 @@ void Inventory2::draw() { if (!_scene) return; - int oldScLeft = g_fullpipe->_sceneRect.left; - int oldScTop = g_fullpipe->_sceneRect.top; + int oldScLeft = g_fp->_sceneRect.left; + int oldScTop = g_fp->_sceneRect.top; - g_fullpipe->_sceneRect.top = -_topOffset; - g_fullpipe->_sceneRect.left = 0; + g_fp->_sceneRect.top = -_topOffset; + g_fp->_sceneRect.left = 0; _picture->draw(-1, -1, 0, 0); @@ -290,8 +290,8 @@ LABEL_25: reset: - g_fullpipe->_sceneRect.top = oldScTop; - g_fullpipe->_sceneRect.left = oldScLeft; + g_fp->_sceneRect.top = oldScTop; + g_fp->_sceneRect.left = oldScLeft; } @@ -365,7 +365,7 @@ int Inventory2::selectItem(int itemId) { int idx = getInventoryPoolItemIndexById(itemId); Picture *pic = _scene->getPictureObjectById(_itemsPool[idx]->pictureObjectId1, 0)->_picture; - g_fullpipe->getGameLoaderInputController()->setCursorItemPicture(pic); + g_fp->getGameLoaderInputController()->setCursorItemPicture(pic); } return _selectedId; @@ -382,7 +382,7 @@ bool Inventory2::unselectItem(bool flag) { _inventoryIcons[i]->isSelected = false; } - g_fullpipe->getGameLoaderInputController()->setCursorItemPicture(0); + g_fp->getGameLoaderInputController()->setCursorItemPicture(0); return true; } diff --git a/engines/fullpipe/lift.cpp b/engines/fullpipe/lift.cpp index 1d6d986977..ca23d8223a 100644 --- a/engines/fullpipe/lift.cpp +++ b/engines/fullpipe/lift.cpp @@ -67,7 +67,7 @@ int FullpipeEngine::lift_getButtonIdP(int objid) { } void FullpipeEngine::lift_setButton(const char *name, int state) { - GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_LiftButtons); if (var) var->setSubVarAsInt(name, state); diff --git a/engines/fullpipe/messagehandlers.cpp b/engines/fullpipe/messagehandlers.cpp index fc57109f07..a9872a5a23 100644 --- a/engines/fullpipe/messagehandlers.cpp +++ b/engines/fullpipe/messagehandlers.cpp @@ -55,7 +55,7 @@ int global_messageHandler1(ExCommand *cmd) { cmd->_messageNum = MV_MAN_STOPLADDER2; } - if (g_fullpipe->_inputDisabled) { + if (g_fp->_inputDisabled) { if (cmd->_messageKind == 17) { switch (cmd->_messageNum) { case 29: @@ -71,25 +71,25 @@ int global_messageHandler1(ExCommand *cmd) { } else if (cmd->_messageKind == 17) { switch (cmd->_messageNum) { case MSG_MANSHADOWSON: - g_fullpipe->_aniMan->_shadowsOn = 1; + g_fp->_aniMan->_shadowsOn = 1; break; case MSG_HMRKICK_STUCCO: global_messageHandler_KickStucco(); break; case MSG_MANSHADOWSOFF: - g_fullpipe->_aniMan->_shadowsOn = 0; + g_fp->_aniMan->_shadowsOn = 0; break; case MSG_DISABLESAVES: - g_fullpipe->disableSaves(cmd); + g_fp->disableSaves(cmd); break; case MSG_ENABLESAVES: - g_fullpipe->enableSaves(); + g_fp->enableSaves(); break; case MSG_HMRKICK_METAL: global_messageHandler_KickMetal(); break; case 29: // left mouse - if (g_fullpipe->_inventoryScene) { + if (g_fp->_inventoryScene) { if (getGameLoaderInventory()->handleLeftClick(cmd)) cmd->_messageKind = 0; } @@ -101,22 +101,22 @@ int global_messageHandler1(ExCommand *cmd) { } break; case 36: // keydown - g_fullpipe->defHandleKeyDown(cmd->_keyCode); + g_fp->defHandleKeyDown(cmd->_keyCode); switch (cmd->_keyCode) { case '\x1B': // ESC - if (g_fullpipe->_currentScene) { + if (g_fp->_currentScene) { getGameLoaderInventory()->unselectItem(0); - g_fullpipe->openMainMenu(); + g_fp->openMainMenu(); cmd->_messageKind = 0; } break; case 't': - g_fullpipe->stopAllSounds(); + g_fp->stopAllSounds(); cmd->_messageKind = 0; break; case 'u': - g_fullpipe->toggleMute(); + g_fp->toggleMute(); cmd->_messageKind = 0; break; case ' ': @@ -130,13 +130,13 @@ int global_messageHandler1(ExCommand *cmd) { } break; case '\t': - if (g_fullpipe->_flgCanOpenMap) - g_fullpipe->openMap(); + if (g_fp->_flgCanOpenMap) + g_fp->openMap(); cmd->_messageKind = 0; break; case 'p': - if (g_fullpipe->_flgCanOpenMap) - g_fullpipe->openHelp(); + if (g_fp->_flgCanOpenMap) + g_fp->openHelp(); cmd->_messageKind = 0; break; default: @@ -144,47 +144,47 @@ int global_messageHandler1(ExCommand *cmd) { } break; case 33: - if (!g_fullpipe->_inventoryScene) + if (!g_fp->_inventoryScene) break; int invItem; - if (g_fullpipe->_updateFlag && (invItem = g_fullpipe->_inventory->getHoveredItem(&g_fullpipe->_mouseScreenPos))) { - g_fullpipe->_cursorId = PIC_CSR_ITN; - if (!g_fullpipe->_currSelectedInventoryItemId && !g_fullpipe->_aniMan->_movement && - !(g_fullpipe->_aniMan->_flags & 0x100) && g_fullpipe->_aniMan->isIdle()) { - int st = g_fullpipe->_aniMan->_statics->_staticsId; + if (g_fp->_updateFlag && (invItem = g_fp->_inventory->getHoveredItem(&g_fp->_mouseScreenPos))) { + g_fp->_cursorId = PIC_CSR_ITN; + if (!g_fp->_currSelectedInventoryItemId && !g_fp->_aniMan->_movement && + !(g_fp->_aniMan->_flags & 0x100) && g_fp->_aniMan->isIdle()) { + int st = g_fp->_aniMan->_statics->_staticsId; ExCommand *newex = 0; if (st == ST_MAN_RIGHT) { - newex = new ExCommand(g_fullpipe->_aniMan->_id, 1, rMV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0); + newex = new ExCommand(g_fp->_aniMan->_id, 1, rMV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0); } else if (st == (0x4000 | ST_MAN_RIGHT)) { - newex = new ExCommand(g_fullpipe->_aniMan->_id, 1, MV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0); + newex = new ExCommand(g_fp->_aniMan->_id, 1, MV_MAN_LOOKUP, 0, 0, 0, 1, 0, 0, 0); } if (newex) { - newex->_keyCode = g_fullpipe->_aniMan->_okeyCode; + newex->_keyCode = g_fp->_aniMan->_okeyCode; newex->_excFlags |= 3; newex->postMessage(); } } - if (g_fullpipe->_currSelectedInventoryItemId != invItem) - g_fullpipe->playSound(SND_CMN_070, 0); + if (g_fp->_currSelectedInventoryItemId != invItem) + g_fp->playSound(SND_CMN_070, 0); - g_fullpipe->_currSelectedInventoryItemId = invItem; - g_fullpipe->setCursor(g_fullpipe->_cursorId); + g_fp->_currSelectedInventoryItemId = invItem; + g_fp->setCursor(g_fp->_cursorId); break; } - if (g_fullpipe->_updateCursorCallback) - g_fullpipe->_updateCursorCallback(); + if (g_fp->_updateCursorCallback) + g_fp->_updateCursorCallback(); - g_fullpipe->_currSelectedInventoryItemId = 0; - g_fullpipe->setCursor(g_fullpipe->_cursorId); + g_fp->_currSelectedInventoryItemId = 0; + g_fp->setCursor(g_fp->_cursorId); break; case 65: // open map - if (cmd->_field_2C == 11 && cmd->_field_14 == ANI_INV_MAP && g_fullpipe->_flgCanOpenMap) - g_fullpipe->openMap(); + if (cmd->_field_2C == 11 && cmd->_field_14 == ANI_INV_MAP && g_fp->_flgCanOpenMap) + g_fp->openMap(); break; default: break; @@ -228,13 +228,13 @@ int global_messageHandler2(ExCommand *cmd) { break; case 28: - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (ani) ani->_priority = cmd->_field_14; break; case 25: - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (ani) { if (cmd->_field_14) { ani->setFlags40(true); @@ -247,7 +247,7 @@ int global_messageHandler2(ExCommand *cmd) { break; case 26: - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (ani) { Movement *mov = ani->_movement; if (mov) @@ -258,7 +258,7 @@ int global_messageHandler2(ExCommand *cmd) { default: #if 0 // We never put anything into _defMsgArray - while (::iterator it = g_fullpipe->_defMsgArray.begin(); it != g_fullpipe->_defMsgArray.end(); ++it) + while (::iterator it = g_fp->_defMsgArray.begin(); it != g_fp->_defMsgArray.end(); ++it) if (((ExCommand *)*it)->_field_24 == _messageNum) { ((ExCommand *)*it)->firef34(v13); res = 1; @@ -267,11 +267,11 @@ int global_messageHandler2(ExCommand *cmd) { //debug_msg(_messageNum); - if (!g_fullpipe->_soundEnabled || cmd->_messageNum != 33 || g_fullpipe->_currSoundListCount <= 0) + if (!g_fp->_soundEnabled || cmd->_messageNum != 33 || g_fp->_currSoundListCount <= 0) return res; - for (int snd = 0; snd < g_fullpipe->_currSoundListCount; snd++) { - SoundList *s = g_fullpipe->_currSoundList1[snd]; + for (int snd = 0; snd < g_fp->_currSoundListCount; snd++) { + SoundList *s = g_fp->_currSoundList1[snd]; int ms = s->getCount(); for (int i = 0; i < ms; i++) { s->getSoundByIndex(i)->setPanAndVolumeByStaticAni(); @@ -292,7 +292,7 @@ int global_messageHandler3(ExCommand *cmd) { case 31: case 32: case 36: - if (g_fullpipe->_inputDisabled) + if (g_fp->_inputDisabled) cmd->_messageKind = 0; break; default: @@ -306,41 +306,41 @@ int global_messageHandler3(ExCommand *cmd) { case 17: switch (cmd->_messageNum) { case 61: - return g_fullpipe->_gameLoader->preloadScene(cmd->_parentId, cmd->_keyCode); + return g_fp->_gameLoader->preloadScene(cmd->_parentId, cmd->_keyCode); case 62: - return g_fullpipe->_gameLoader->gotoScene(cmd->_parentId, cmd->_keyCode); + return g_fp->_gameLoader->gotoScene(cmd->_parentId, cmd->_keyCode); case 64: - if (g_fullpipe->_currentScene && g_fullpipe->_msgObjectId2 - && (!(cmd->_keyCode & 4) || g_fullpipe->_msgObjectId2 != cmd->_field_14 || g_fullpipe->_msgId != cmd->_field_20)) { - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_msgObjectId2, g_fullpipe->_msgId); + if (g_fp->_currentScene && g_fp->_msgObjectId2 + && (!(cmd->_keyCode & 4) || g_fp->_msgObjectId2 != cmd->_field_14 || g_fp->_msgId != cmd->_field_20)) { + ani = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_msgObjectId2, g_fp->_msgId); if (ani) { ani->_flags &= 0xFF7F; ani->_flags &= 0xFEFF; ani->deleteFromGlobalMessageQueue(); } } - g_fullpipe->_msgX = 0; - g_fullpipe->_msgY = 0; - g_fullpipe->_msgObjectId2 = 0; - g_fullpipe->_msgId = 0; + g_fp->_msgX = 0; + g_fp->_msgY = 0; + g_fp->_msgObjectId2 = 0; + g_fp->_msgId = 0; if ((cmd->_keyCode & 1) || (cmd->_keyCode & 2)) { - g_fullpipe->_msgX = cmd->_x; - g_fullpipe->_msgY = cmd->_y; + g_fp->_msgX = cmd->_x; + g_fp->_msgY = cmd->_y; } if (cmd->_keyCode & 4) { - g_fullpipe->_msgObjectId2 = cmd->_field_14; - g_fullpipe->_msgId = cmd->_field_20; + g_fp->_msgObjectId2 = cmd->_field_14; + g_fp->_msgId = cmd->_field_20; } return result; case 29: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) return result; - if (g_fullpipe->_gameLoader->_interactionController->_flag24) { - ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY); - ani2 = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1); + if (g_fp->_gameLoader->_interactionController->_flag24) { + ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY); + ani2 = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_gameLoader->_field_FA, -1); if (ani) { - if (g_fullpipe->_msgObjectId2 == ani->_id && g_fullpipe->_msgId == ani->_okeyCode) { + if (g_fp->_msgObjectId2 == ani->_id && g_fp->_msgId == ani->_okeyCode) { cmd->_messageKind = 0; return result; } @@ -349,10 +349,10 @@ int global_messageHandler3(ExCommand *cmd) { return 1; } } else { - int id = g_fullpipe->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY); - PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(id, 0); + int id = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY); + PictureObject *pic = g_fp->_currentScene->getPictureObjectById(id, 0); if (pic) { - if (g_fullpipe->_msgObjectId2 == pic->_id && g_fullpipe->_msgId == pic->_okeyCode) { + if (g_fp->_msgObjectId2 == pic->_id && g_fp->_msgId == pic->_okeyCode) { cmd->_messageKind = 0; return result; } @@ -364,13 +364,13 @@ int global_messageHandler3(ExCommand *cmd) { } } } - if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_isEnabled && cmd->_keyCode <= 0) { - if (g_fullpipe->_msgX != cmd->_sceneClickX || g_fullpipe->_msgY != cmd->_sceneClickY) { - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1); + if (getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->_isEnabled && cmd->_keyCode <= 0) { + if (g_fp->_msgX != cmd->_sceneClickX || g_fp->_msgY != cmd->_sceneClickY) { + ani = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_gameLoader->_field_FA, -1); if (!ani || (ani->isIdle() && !(ani->_flags & 0x80) && !(ani->_flags & 0x100))) { - result = startWalkTo(g_fullpipe->_gameLoader->_field_FA, -1, cmd->_sceneClickX, cmd->_sceneClickY, 0); + result = startWalkTo(g_fp->_gameLoader->_field_FA, -1, cmd->_sceneClickX, cmd->_sceneClickY, 0); if (result) { - ExCommand *ex = new ExCommand(g_fullpipe->_gameLoader->_field_FA, 17, 64, 0, 0, 0, 1, 0, 0, 0); + ExCommand *ex = new ExCommand(g_fp->_gameLoader->_field_FA, 17, 64, 0, 0, 0, 1, 0, 0, 0); ex->_keyCode = 1; ex->_excFlags |= 3; @@ -388,7 +388,7 @@ int global_messageHandler3(ExCommand *cmd) { return result; } case 58: - g_fullpipe->setCursor(cmd->_keyCode); + g_fp->setCursor(cmd->_keyCode); return result; case 59: setInputDisabled(1); @@ -398,7 +398,7 @@ int global_messageHandler3(ExCommand *cmd) { return result; case 56: if (cmd->_field_2C) { - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (ani) { getGameLoaderInventory()->addItem2(ani); result = 1; @@ -412,13 +412,13 @@ int global_messageHandler3(ExCommand *cmd) { case 57: if (cmd->_field_2C) { if (!cmd->_field_20) { - getGameLoaderInventory()->removeItem2(g_fullpipe->_currentScene, cmd->_parentId, cmd->_x, cmd->_y, cmd->_field_14); + getGameLoaderInventory()->removeItem2(g_fp->_currentScene, cmd->_parentId, cmd->_x, cmd->_y, cmd->_field_14); getGameLoaderInventory()->rebuildItemRects(); return 1; } - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1); + ani = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_gameLoader->_field_FA, -1); if (ani) { - getGameLoaderInventory()->removeItem2(g_fullpipe->_currentScene, cmd->_parentId, ani->_ox + cmd->_x, ani->_oy + cmd->_y, ani->_priority + cmd->_field_14); + getGameLoaderInventory()->removeItem2(g_fp->_currentScene, cmd->_parentId, ani->_ox + cmd->_x, ani->_oy + cmd->_y, ani->_priority + cmd->_field_14); getGameLoaderInventory()->rebuildItemRects(); return 1; } @@ -428,13 +428,13 @@ int global_messageHandler3(ExCommand *cmd) { getGameLoaderInventory()->rebuildItemRects(); return 1; case 55: - if (g_fullpipe->_currentScene) { + if (g_fp->_currentScene) { GameObject *obj; if (cmd->_field_14) - obj = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_x, cmd->_y); + obj = g_fp->_currentScene->getStaticANIObject1ById(cmd->_x, cmd->_y); else - obj = g_fullpipe->_currentScene->getPictureObjectById(cmd->_x, cmd->_y); - handleObjectInteraction(g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode), obj, cmd->_field_20); + obj = g_fp->_currentScene->getPictureObjectById(cmd->_x, cmd->_y); + handleObjectInteraction(g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode), obj, cmd->_field_20); result = 1; } return result; @@ -448,7 +448,7 @@ int global_messageHandler3(ExCommand *cmd) { if (cmd->_objtype == kObjTypeObjstateCommand) { ObjstateCommand *c = (ObjstateCommand *)cmd; result = 1; - g_fullpipe->setObjectState(c->_objCommandName, c->_value); + g_fp->setObjectState(c->_objCommandName, c->_value); } return result; default: @@ -461,7 +461,7 @@ int global_messageHandler4(ExCommand *cmd) { switch (cmd->_messageKind) { case 18: { - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(cmd->_messageNum), cmd->_parId, 0); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(cmd->_messageNum), cmd->_parId, 0); if (cmd->_excFlags & 1) mq->_flag1 = 1; @@ -472,10 +472,10 @@ int global_messageHandler4(ExCommand *cmd) { break; } case 2: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -483,10 +483,10 @@ int global_messageHandler4(ExCommand *cmd) { break; case 1: { - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -502,10 +502,10 @@ int global_messageHandler4(ExCommand *cmd) { break; } case 8: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -513,10 +513,10 @@ int global_messageHandler4(ExCommand *cmd) { break; case 20: { - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -534,10 +534,10 @@ int global_messageHandler4(ExCommand *cmd) { break; } case 21: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -548,17 +548,17 @@ int global_messageHandler4(ExCommand *cmd) { // Nop in original break; case 3: - g_fullpipe->_currentScene->_y = cmd->_messageNum - cmd->_messageNum % g_fullpipe->_scrollSpeed; + g_fp->_currentScene->_y = cmd->_messageNum - cmd->_messageNum % g_fp->_scrollSpeed; break; case 4: - g_fullpipe->_currentScene->_x = cmd->_messageNum - cmd->_messageNum % g_fullpipe->_scrollSpeed; + g_fp->_currentScene->_x = cmd->_messageNum - cmd->_messageNum % g_fp->_scrollSpeed; break; case 19: { - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -573,10 +573,10 @@ int global_messageHandler4(ExCommand *cmd) { break; } case 22: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -585,10 +585,10 @@ int global_messageHandler4(ExCommand *cmd) { break; case 6: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -596,18 +596,18 @@ int global_messageHandler4(ExCommand *cmd) { break; case 27: - if (!g_fullpipe->_currentScene || g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode) == 0) { - ani = g_fullpipe->accessScene(cmd->_field_20)->getStaticANIObject1ById(cmd->_parentId, -1); + if (!g_fp->_currentScene || g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode) == 0) { + ani = g_fp->accessScene(cmd->_field_20)->getStaticANIObject1ById(cmd->_parentId, -1); if (ani) { ani = new StaticANIObject(ani); - g_fullpipe->_currentScene->addStaticANIObject(ani, 1); + g_fp->_currentScene->addStaticANIObject(ani, 1); } } // fall through case 5: - if (g_fullpipe->_currentScene) - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + if (g_fp->_currentScene) + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -619,10 +619,10 @@ int global_messageHandler4(ExCommand *cmd) { break; case 10: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -633,34 +633,34 @@ int global_messageHandler4(ExCommand *cmd) { break; case 7: { - if (!g_fullpipe->_currentScene->_picObjList.size()) + if (!g_fp->_currentScene->_picObjList.size()) break; - int offX = g_fullpipe->_scrollSpeed * (cmd->_x / g_fullpipe->_scrollSpeed); - int offY = g_fullpipe->_scrollSpeed * (cmd->_y / g_fullpipe->_scrollSpeed); + int offX = g_fp->_scrollSpeed * (cmd->_x / g_fp->_scrollSpeed); + int offY = g_fp->_scrollSpeed * (cmd->_y / g_fp->_scrollSpeed); if (cmd->_messageNum) { - g_fullpipe->_currentScene->_x = offX - g_fullpipe->_sceneRect.left; - g_fullpipe->_currentScene->_y = offY - g_fullpipe->_sceneRect.top; + g_fp->_currentScene->_x = offX - g_fp->_sceneRect.left; + g_fp->_currentScene->_y = offY - g_fp->_sceneRect.top; if (cmd->_field_24) { - g_fullpipe->_currentScene->_messageQueueId = cmd->_parId; + g_fp->_currentScene->_messageQueueId = cmd->_parId; } } else { - g_fullpipe->_sceneRect.moveTo(offX, offY); + g_fp->_sceneRect.moveTo(offX, offY); - g_fullpipe->_currentScene->_x = 0; - g_fullpipe->_currentScene->_y = 0; + g_fp->_currentScene->_x = 0; + g_fp->_currentScene->_y = 0; - g_fullpipe->_currentScene->updateScrolling2(); + g_fp->_currentScene->updateScrolling2(); } break; } case 34: - if (!g_fullpipe->_currentScene) + if (!g_fp->_currentScene) break; - ani = g_fullpipe->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); + ani = g_fp->_currentScene->getStaticANIObject1ById(cmd->_parentId, cmd->_keyCode); if (!ani) break; @@ -690,15 +690,15 @@ int MovGraph_messageHandler(ExCommand *cmd) { if (cmd->_messageNum != 33) return 0; - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(g_fullpipe->_gameLoader->_field_FA, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(g_fp->_gameLoader->_field_FA, -1); - if (!getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)) + if (!getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)) return 0; - if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_objtype != kObjTypeMovGraph || !ani) + if (getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->_objtype != kObjTypeMovGraph || !ani) return 0; - MovGraph *gr = (MovGraph *)getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); + MovGraph *gr = (MovGraph *)getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId); MovGraphLink *link = 0; double mindistance = 1.0e10; diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp index 8ea94ff1eb..8ca416bb9e 100644 --- a/engines/fullpipe/messages.cpp +++ b/engines/fullpipe/messages.cpp @@ -73,7 +73,7 @@ bool ExCommand::load(MfcArchive &file) { _field_3C = 0; - if (g_fullpipe->_gameProjectVersion >= 12) { + if (g_fp->_gameProjectVersion >= 12) { _excFlags = file.readUint32LE(); _parId = file.readUint32LE(); } @@ -83,12 +83,12 @@ bool ExCommand::load(MfcArchive &file) { bool ExCommand::handleMessage() { int cnt = 0; - for (MessageHandler *m = g_fullpipe->_messageHandlers; m; m = m->nextItem) + for (MessageHandler *m = g_fp->_messageHandlers; m; m = m->nextItem) cnt += m->callback(this); if (_messageKind == 17 || (_excFlags & 1)) { if (_parId) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(_parId); if (mq) mq->update(); } @@ -101,18 +101,18 @@ bool ExCommand::handleMessage() { } void ExCommand::sendMessage() { - g_fullpipe->_exCommandList.push_back(this); + g_fp->_exCommandList.push_back(this); processMessages(); } void ExCommand::postMessage() { - g_fullpipe->_exCommandList.push_back(this); + g_fp->_exCommandList.push_back(this); } void ExCommand::handle() { - if (g_fullpipe->_modalObject) { - g_fullpipe->_modalObject->handleMessage(this); + if (g_fp->_modalObject) { + g_fp->_modalObject->handleMessage(this); delete this; } else { @@ -205,7 +205,7 @@ MessageQueue::MessageQueue(int dataId) { _field_14 = 0; _parId = 0; _dataId = dataId; - _id = g_fullpipe->_globalMessageQueueList->compact(); + _id = g_fp->_globalMessageQueueList->compact(); _isFinished = 0; _flags = 0; _queueName = 0; @@ -231,11 +231,11 @@ MessageQueue::MessageQueue(MessageQueue *src, int parId, int field_38) { else _parId = src->_parId; - _id = g_fullpipe->_globalMessageQueueList->compact(); + _id = g_fp->_globalMessageQueueList->compact(); _dataId = src->_dataId; _flags = src->_flags; - g_fullpipe->_globalMessageQueueList->addMessageQueue(this); + g_fp->_globalMessageQueueList->addMessageQueue(this); _isFinished = 0; _flag1 = 0; @@ -255,7 +255,7 @@ MessageQueue::~MessageQueue() { delete _field_14; if (_flags & 2) { - g_fullpipe->_globalMessageQueueList->removeQueueById(_id); + g_fp->_globalMessageQueueList->removeQueueById(_id); } finish(); @@ -270,7 +270,7 @@ bool MessageQueue::load(MfcArchive &file) { int count = file.readUint16LE(); - assert(g_fullpipe->_gameProjectVersion >= 12); + assert(g_fp->_gameProjectVersion >= 12); _queueName = file.readPascalString(); @@ -291,7 +291,7 @@ bool MessageQueue::load(MfcArchive &file) { bool MessageQueue::chain(StaticANIObject *ani) { if (checkGlobalExCommandList1() && checkGlobalExCommandList2()) { if (!(getFlags() & 2)) { - g_fullpipe->_globalMessageQueueList->addMessageQueue(this); + g_fp->_globalMessageQueueList->addMessageQueue(this); _flags |= 2; } if (ani) { @@ -398,7 +398,7 @@ bool MessageQueue::checkGlobalExCommandList1() { if (ex->_messageKind != 1 && ex->_messageKind != 20 && ex->_messageKind != 5 && ex->_messageKind != 27) continue; - for (Common::List::iterator it = g_fullpipe->_exCommandList.begin(); it != g_fullpipe->_exCommandList.end(); it++) { + for (Common::List::iterator it = g_fp->_exCommandList.begin(); it != g_fp->_exCommandList.end(); it++) { ex1 = *it; if (ex1->_messageKind != 1 && ex1->_messageKind != 20 && ex1->_messageKind != 5 && ex1->_messageKind != 27) @@ -407,7 +407,7 @@ bool MessageQueue::checkGlobalExCommandList1() { if (ex1->_keyCode != ex->_keyCode && ex1->_keyCode != -1 && ex->_keyCode != -1) continue; - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex1->_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex1->_parId); if (mq) { if (mq->getFlags() & 1) @@ -427,7 +427,7 @@ bool MessageQueue::checkGlobalExCommandList2() { if (ex->_messageKind != 1 && ex->_messageKind != 20 && ex->_messageKind != 5 && ex->_messageKind != 27) continue; - for (Common::List::iterator it = g_fullpipe->_exCommandList.begin(); it != g_fullpipe->_exCommandList.end();) { + for (Common::List::iterator it = g_fp->_exCommandList.begin(); it != g_fp->_exCommandList.end();) { ex1 = *it; if (ex1->_messageKind != 1 && ex1->_messageKind != 20 && ex1->_messageKind != 5 && ex1->_messageKind != 27) { @@ -440,7 +440,7 @@ bool MessageQueue::checkGlobalExCommandList2() { continue; } - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex1->_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex1->_parId); if (mq) { if (mq->getFlags() & 1) @@ -449,7 +449,7 @@ bool MessageQueue::checkGlobalExCommandList2() { delete mq; } - it = g_fullpipe->_exCommandList.erase(it); + it = g_fp->_exCommandList.erase(it); if (ex1->_excFlags & 2) { delete ex1; @@ -463,7 +463,7 @@ void MessageQueue::finish() { if (!_parId) return; - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(_parId); _parId = 0; @@ -602,8 +602,8 @@ void clearGlobalMessageQueueList1() { } bool removeMessageHandler(int16 id, int pos) { - if (g_fullpipe->_messageHandlers) { - MessageHandler *curItem = g_fullpipe->_messageHandlers; + if (g_fp->_messageHandlers) { + MessageHandler *curItem = g_fp->_messageHandlers; MessageHandler *prevItem = 0; int curPos = 0; @@ -637,13 +637,13 @@ void addMessageHandler(int (*callback)(ExCommand *), int16 id) { if (getMessageHandlerById(id)) return; - MessageHandler *curItem = g_fullpipe->_messageHandlers; + MessageHandler *curItem = g_fp->_messageHandlers; if (!curItem) return; int index = 0; - for (MessageHandler *i = g_fullpipe->_messageHandlers->nextItem; i; i = i->nextItem) { + for (MessageHandler *i = g_fp->_messageHandlers->nextItem; i; i = i->nextItem) { curItem = i; index++; } @@ -655,7 +655,7 @@ void addMessageHandler(int (*callback)(ExCommand *), int16 id) { } MessageHandler *getMessageHandlerById(int16 id) { - MessageHandler *curItem = g_fullpipe->_messageHandlers; + MessageHandler *curItem = g_fp->_messageHandlers; if (!curItem) return 0; @@ -685,7 +685,7 @@ bool allocMessageHandler(MessageHandler *where, int16 id, int (*callback)(ExComm msg->callback = callback; msg->index = 0; - g_fullpipe->_messageHandlers = msg; + g_fp->_messageHandlers = msg; } return true; @@ -693,7 +693,7 @@ bool allocMessageHandler(MessageHandler *where, int16 id, int (*callback)(ExComm int getMessageHandlersCount() { int result; - MessageHandler *curItem = g_fullpipe->_messageHandlers; + MessageHandler *curItem = g_fp->_messageHandlers; for (result = 0; curItem; result++) curItem = curItem->nextItem; @@ -706,7 +706,7 @@ bool addMessageHandlerByIndex(int (*callback)(ExCommand *), int index, int16 id) return false; if (index) { - MessageHandler *curItem = g_fullpipe->_messageHandlers; + MessageHandler *curItem = g_fp->_messageHandlers; for (int i = index - 1; i > 0; i--) if (curItem) @@ -724,13 +724,13 @@ bool addMessageHandlerByIndex(int (*callback)(ExCommand *), int index, int16 id) } else { MessageHandler *newItem = new MessageHandler; - newItem->nextItem = g_fullpipe->_messageHandlers; + newItem->nextItem = g_fp->_messageHandlers; newItem->id = id; newItem->callback = callback; newItem->index = 0; - updateMessageHandlerIndex(g_fullpipe->_messageHandlers, 1); - g_fullpipe->_messageHandlers = newItem; + updateMessageHandlerIndex(g_fp->_messageHandlers, 1); + g_fp->_messageHandlers = newItem; return true; } @@ -740,7 +740,7 @@ bool insertMessageHandler(int (*callback)(ExCommand *), int index, int16 id) { if (getMessageHandlerById(id)) return false; - MessageHandler *curItem = g_fullpipe->_messageHandlers; + MessageHandler *curItem = g_fp->_messageHandlers; for (int i = index; i > 0; i--) if (curItem) @@ -757,7 +757,7 @@ void clearMessageHandlers() { MessageHandler *curItem; MessageHandler *nextItem; - curItem = g_fullpipe->_messageHandlers; + curItem = g_fp->_messageHandlers; if (curItem) { do { nextItem = curItem->nextItem; @@ -767,32 +767,32 @@ void clearMessageHandlers() { curItem = nextItem; } while (nextItem); - g_fullpipe->_messageHandlers = 0; + g_fp->_messageHandlers = 0; } } void processMessages() { - if (!g_fullpipe->_isProcessingMessages) { - g_fullpipe->_isProcessingMessages = true; + if (!g_fp->_isProcessingMessages) { + g_fp->_isProcessingMessages = true; - while (g_fullpipe->_exCommandList.size()) { - ExCommand *ex = g_fullpipe->_exCommandList.front(); - g_fullpipe->_exCommandList.pop_front(); + while (g_fp->_exCommandList.size()) { + ExCommand *ex = g_fp->_exCommandList.front(); + g_fp->_exCommandList.pop_front(); ex->handleMessage(); } - g_fullpipe->_isProcessingMessages = false; + g_fp->_isProcessingMessages = false; } } void updateGlobalMessageQueue(int id, int objid) { - MessageQueue *m = g_fullpipe->_globalMessageQueueList->getMessageQueueById(id); + MessageQueue *m = g_fp->_globalMessageQueueList->getMessageQueueById(id); if (m) { m->update(); } } bool chainQueue(int queueId, int flags) { - MessageQueue *mq = g_fullpipe->_currentScene->getMessageQueueById(queueId); + MessageQueue *mq = g_fp->_currentScene->getMessageQueueById(queueId); if (!mq) return false; @@ -811,7 +811,7 @@ bool chainQueue(int queueId, int flags) { } bool chainObjQueue(StaticANIObject *obj, int queueId, int flags) { - MessageQueue *mq = g_fullpipe->_currentScene->getMessageQueueById(queueId); + MessageQueue *mq = g_fp->_currentScene->getMessageQueueById(queueId); if (!mq) return false; diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp index f766be3eac..b98f7314bc 100644 --- a/engines/fullpipe/modal.cpp +++ b/engines/fullpipe/modal.cpp @@ -40,17 +40,17 @@ ModalIntro::ModalIntro() { _introFlags = 33; _countDown = 150; - PictureObject *pict = g_fullpipe->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0); + PictureObject *pict = g_fp->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0); pict->setFlags(pict->_flags & 0xFFFB); } g_vars->sceneIntro_skipIntro = false; - _sfxVolume = g_fullpipe->_sfxVolume; + _sfxVolume = g_fp->_sfxVolume; } ModalIntro::~ModalIntro() { - g_fullpipe->stopAllSounds(); - g_fullpipe->_sfxVolume = _sfxVolume; + g_fp->stopAllSounds(); + g_fp->_sfxVolume = _sfxVolume; } bool ModalIntro::handleMessage(ExCommand *message) { @@ -84,7 +84,7 @@ bool ModalIntro::init(int counterdiff) { } if (_introFlags & 0x10) - g_fullpipe->_gameLoader->updateSystems(42); + g_fp->_gameLoader->updateSystems(42); _introFlags |= 2; @@ -94,7 +94,7 @@ bool ModalIntro::init(int counterdiff) { if (_introFlags & 4) { ModalVideoPlayer *player = new ModalVideoPlayer(); - g_fullpipe->_modalObject = player; + g_fp->_modalObject = player; player->_parentObj = this; player->play("intro.avi"); @@ -118,7 +118,7 @@ bool ModalIntro::init(int counterdiff) { if (_introFlags & 0x40) { ModalVideoPlayer *player = new ModalVideoPlayer(); - g_fullpipe->_modalObject = player; + g_fp->_modalObject = player; player->_parentObj = this; player->play("intro2.avi"); @@ -151,7 +151,7 @@ bool ModalIntro::init(int counterdiff) { _countDown = 150; _introFlags = (_introFlags & 0xf7) | 0x21; - g_fullpipe->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0)->_flags &= 0xfffb; + g_fp->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0)->_flags &= 0xfffb; } if (!(_introFlags & 0x20)) { @@ -159,12 +159,12 @@ bool ModalIntro::init(int counterdiff) { if (!_stillRunning) { _introFlags |= 1; - g_fullpipe->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0)->_flags &= 0xfffb; - g_fullpipe->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_GAMETITLE, 0)->_flags &= 0xfffb; + g_fp->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_PIPETITLE, 0)->_flags &= 0xfffb; + g_fp->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_GAMETITLE, 0)->_flags &= 0xfffb; chainQueue(QU_INTR_STARTINTRO, 1); } - g_fullpipe->_gameLoader->updateSystems(42); + g_fp->_gameLoader->updateSystems(42); } return true; } @@ -180,7 +180,7 @@ bool ModalIntro::init(int counterdiff) { _introFlags = (_introFlags & 0xdf) | 0x10; - g_fullpipe->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_GAMETITLE, 0)->_flags &= 0xfffb; + g_fp->accessScene(SC_INTRO1)->getPictureObjectById(PIC_IN1_GAMETITLE, 0)->_flags &= 0xfffb; _stillRunning = 0; } @@ -189,14 +189,14 @@ bool ModalIntro::init(int counterdiff) { } void ModalIntro::update() { - if (g_fullpipe->_currentScene) { + if (g_fp->_currentScene) { if (_introFlags & 1) { //sceneFade(virt, g_currentScene, 1); _stillRunning = 255; _introFlags &= 0xfe; if (_introFlags & 0x20) - g_fullpipe->playSound(SND_INTR_019, 0); + g_fp->playSound(SND_INTR_019, 0); } else if (_introFlags & 2) { if (g_vars->sceneIntro_needBlackout) { //vrtRectangle(*(_DWORD *)virt, 0, 0, 0, 800, 600); @@ -209,18 +209,18 @@ void ModalIntro::update() { _introFlags &= 0xfd; } } else if (_stillRunning) { - g_fullpipe->_currentScene->draw(); + g_fp->_currentScene->draw(); } } } void ModalIntro::finish() { - g_fullpipe->_gameLoader->unloadScene(SC_INTRO2); - g_fullpipe->_currentScene = g_fullpipe->accessScene(SC_INTRO1); - g_fullpipe->_gameLoader->preloadScene(SC_INTRO1, TrubaDown); + g_fp->_gameLoader->unloadScene(SC_INTRO2); + g_fp->_currentScene = g_fp->accessScene(SC_INTRO1); + g_fp->_gameLoader->preloadScene(SC_INTRO1, TrubaDown); - if (g_fullpipe->_currentScene) - g_fullpipe->_gameLoader->updateSystems(42); + if (g_fp->_currentScene) + g_fp->_gameLoader->updateSystems(42); } void ModalVideoPlayer::play(const char *fname) { diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 727cb4c40c..1ecb973066 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -258,7 +258,7 @@ int MctlLadder::findObjectPos(StaticANIObject *obj) { } bool MctlLadder::initMovement(StaticANIObject *ani, MctlLadderMovement *movement) { - GameVar *v = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(ani->getName()); + GameVar *v = g_fp->getGameLoaderGameVar()->getSubVarByName(ani->getName()); if (!v) return false; @@ -567,7 +567,7 @@ bool MovGraph2::initDirections(StaticANIObject *obj, MovGraph2Item *item) { item->_obj = obj; item->_objectId = obj->_id; - GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(obj->_objectName); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(obj->_objectName); if (!var) return false; @@ -828,7 +828,7 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) { int curY = movInfo->pt1.y; int curDistance = movInfo->distance1; - MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); for (int i = 0; i < movInfo->itemsCount - 1; i++) { if (movInfo->items[i + 1]->subIndex != 10) { @@ -1064,7 +1064,7 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int } if (obj->_ox == xpos && obj->_oy == ypos) { - g_fullpipe->_globalMessageQueueList->compact(); + g_fp->_globalMessageQueueList->compact(); MessageQueue *mq = new MessageQueue(); @@ -1530,7 +1530,7 @@ void MGM::rebuildTables(int objId) { _items[idx]->movements1.clear(); _items[idx]->movements2.clear(); - StaticANIObject *obj = g_fullpipe->_currentScene->getStaticANIObject1ById(objId, -1); + StaticANIObject *obj = g_fp->_currentScene->getStaticANIObject1ById(objId, -1); if (!obj) return; @@ -1841,10 +1841,10 @@ bool MovGraphReact::pointInRegion(int x, int y) { } int startWalkTo(int objId, int objKey, int x, int y, int a5) { - MctlCompound *mc = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); + MctlCompound *mc = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId); if (mc) - return (mc->method34(g_fullpipe->_currentScene->getStaticANIObject1ById(objId, objKey), x, y, a5, 0) != 0); + return (mc->method34(g_fp->_currentScene->getStaticANIObject1ById(objId, objKey), x, y, a5, 0) != 0); return 0; } diff --git a/engines/fullpipe/ngiarchive.cpp b/engines/fullpipe/ngiarchive.cpp index 5d895c17a0..132f4758d3 100644 --- a/engines/fullpipe/ngiarchive.cpp +++ b/engines/fullpipe/ngiarchive.cpp @@ -91,7 +91,7 @@ NGIArchive::NGIArchive(const Common::String &filename) : _ngiFilename(filename) free(fat); - g_fullpipe->_currArchive = this; + g_fp->_currArchive = this; debug(0, "NGIArchive::NGIArchive(%s): Located %d files", filename.c_str(), _headers.size()); } @@ -103,7 +103,7 @@ NGIArchive::~NGIArchive() { delete it->_value; } - g_fullpipe->_currArchive = 0; + g_fp->_currArchive = 0; } bool NGIArchive::hasFile(const Common::String &name) const { diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp index a5a286cfcb..558a90978a 100644 --- a/engines/fullpipe/scene.cpp +++ b/engines/fullpipe/scene.cpp @@ -114,7 +114,7 @@ void SceneTag::loadScene() { delete file; - g_fullpipe->_currArchive = 0; + g_fp->_currArchive = 0; free(fname); free(archname); @@ -146,7 +146,7 @@ bool Scene::load(MfcArchive &file) { int aniNum = file.readUint16LE(); char *aniname = genFileName(0, aniNum, "ani"); - Common::SeekableReadStream *f = g_fullpipe->_currArchive->createReadStreamForMember(aniname); + Common::SeekableReadStream *f = g_fp->_currArchive->createReadStreamForMember(aniname); StaticANIObject *ani = new StaticANIObject(); @@ -168,7 +168,7 @@ bool Scene::load(MfcArchive &file) { int qNum = file.readUint16LE(); char *qname = genFileName(0, qNum, "qu"); - Common::SeekableReadStream *f = g_fullpipe->_currArchive->createReadStreamForMember(qname); + Common::SeekableReadStream *f = g_fp->_currArchive->createReadStreamForMember(qname); MfcArchive archive(f); archive.readUint16LE(); // Skip 2 bytes @@ -191,7 +191,7 @@ bool Scene::load(MfcArchive &file) { assert(0); } - _libHandle = g_fullpipe->_currArchive; + _libHandle = g_fp->_currArchive; if (_picObjList.size() > 0 && _bgname && strlen(_bgname) > 1) { char fname[260]; @@ -216,10 +216,10 @@ bool Scene::load(MfcArchive &file) { char *slsname = genFileName(0, _sceneId, "sls"); - if (g_fullpipe->_soundEnabled) { + if (g_fp->_soundEnabled) { _soundList = new SoundList(); - if (g_fullpipe->_flgSoundList) { + if (g_fp->_flgSoundList) { char *nlname = genFileName(17, _sceneId, "nl"); _soundList->loadFile(slsname, nlname); @@ -249,7 +249,7 @@ void Scene::init() { _x = 0; _y = 0; - g_fullpipe->_sceneRect.moveTo(0, 0); + g_fp->_sceneRect.moveTo(0, 0); for (uint i = 0; i < _picObjList.size(); i++) ((PictureObject *)_picObjList[i])->clearFlags(); @@ -398,7 +398,7 @@ void Scene::preloadMovements(GameVar *var) { } void Scene::initObjectCursors(const char *varname) { - GameVar *cursorsVar = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("CURSORS"); + GameVar *cursorsVar = g_fp->getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("CURSORS"); if (!cursorsVar || !cursorsVar->_subVars) return; @@ -417,10 +417,10 @@ void Scene::initObjectCursors(const char *varname) { } } - g_fullpipe->_minCursorId = minId; - g_fullpipe->_maxCursorId = maxId; + g_fp->_minCursorId = minId; + g_fp->_maxCursorId = maxId; - g_fullpipe->_objectIdCursors.resize(maxId - minId + 1); + g_fp->_objectIdCursors.resize(maxId - minId + 1); for (GameVar *sub = cursorsVar->_subVars; sub; sub = sub->_nextVarObj) { GameObject *obj = getPictureObjectByName(sub->_varName, -1); @@ -431,7 +431,7 @@ void Scene::initObjectCursors(const char *varname) { PictureObject *pic = getGameLoaderInventory()->getScene()->getPictureObjectByName(sub->_value.stringValue, -1); if (obj && pic) - g_fullpipe->_objectIdCursors[obj->_id - minId] = pic->_id; + g_fp->_objectIdCursors[obj->_id - minId] = pic->_id; } } @@ -451,7 +451,7 @@ void Scene::draw() { updateScrolling(); // Clean previous stuff - g_fullpipe->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); + g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); drawContent(60000, 0, true); @@ -474,7 +474,7 @@ void Scene::draw() { void Scene::updateScrolling() { if (_messageQueueId && !_x && !_y) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId); if (mq) mq->update(); @@ -487,31 +487,31 @@ void Scene::updateScrolling() { int offsetY = 0; if (_x < 0) { - if (!g_fullpipe->_sceneRect.left && !(((PictureObject *)_picObjList[0])->_flags & 2)) + if (!g_fp->_sceneRect.left && !(((PictureObject *)_picObjList[0])->_flags & 2)) _x = 0; - if (_x <= -g_fullpipe->_scrollSpeed) { - offsetX = -g_fullpipe->_scrollSpeed; - _x += g_fullpipe->_scrollSpeed; + if (_x <= -g_fp->_scrollSpeed) { + offsetX = -g_fp->_scrollSpeed; + _x += g_fp->_scrollSpeed; } - } else if (_x >= g_fullpipe->_scrollSpeed) { - offsetX = g_fullpipe->_scrollSpeed; - _x -= g_fullpipe->_scrollSpeed; + } else if (_x >= g_fp->_scrollSpeed) { + offsetX = g_fp->_scrollSpeed; + _x -= g_fp->_scrollSpeed; } else { _x = 0; } if (_y > 0) { - offsetY = g_fullpipe->_scrollSpeed; - _y -= g_fullpipe->_scrollSpeed; + offsetY = g_fp->_scrollSpeed; + _y -= g_fp->_scrollSpeed; } if (_y < 0) { - offsetY -= g_fullpipe->_scrollSpeed; - _y += g_fullpipe->_scrollSpeed; + offsetY -= g_fp->_scrollSpeed; + _y += g_fp->_scrollSpeed; } - g_fullpipe->_sceneRect.translate(offsetX, offsetY); + g_fp->_sceneRect.translate(offsetX, offsetY); } updateScrolling2(); @@ -527,19 +527,19 @@ void Scene::updateScrolling2() { int flags = ((PictureObject *)_picObjList[0])->_flags; - if (g_fullpipe->_sceneRect.left < 0 && !(flags & 2)) - offsetX = -g_fullpipe->_sceneRect.left; + if (g_fp->_sceneRect.left < 0 && !(flags & 2)) + offsetX = -g_fp->_sceneRect.left; - if (g_fullpipe->_sceneRect.top < 0 && !(flags & 0x20)) - offsetY = -g_fullpipe->_sceneRect.top; + if (g_fp->_sceneRect.top < 0 && !(flags & 0x20)) + offsetY = -g_fp->_sceneRect.top; - if (g_fullpipe->_sceneRect.right > point.x - 1 && g_fullpipe->_sceneRect.left > 0 && !(flags & 2)) - offsetX = point.x - g_fullpipe->_sceneRect.right - 1; + if (g_fp->_sceneRect.right > point.x - 1 && g_fp->_sceneRect.left > 0 && !(flags & 2)) + offsetX = point.x - g_fp->_sceneRect.right - 1; - if (g_fullpipe->_sceneRect.bottom > point.y - 1 && g_fullpipe->_sceneRect.top > 0 && !(flags & 0x20)) - offsetY = point.y - g_fullpipe->_sceneRect.bottom - 1; + if (g_fp->_sceneRect.bottom > point.y - 1 && g_fp->_sceneRect.top > 0 && !(flags & 0x20)) + offsetY = point.y - g_fp->_sceneRect.bottom - 1; - g_fullpipe->_sceneRect.translate(offsetX, offsetY); + g_fp->_sceneRect.translate(offsetX, offsetY); } } @@ -602,7 +602,7 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { return; if (_palette) { - g_fullpipe->_globalPalette = _palette->_data; + g_fp->_globalPalette = _palette->_data; } debug(8, "Scene::drawContent(>%d, <%d, %d)", minPri, maxPri, drawBg); @@ -635,7 +635,7 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { debug(8, "w2: %d h2:%d", point.x, point.y); - int bgStX = g_fullpipe->_sceneRect.left % point.x; + int bgStX = g_fp->_sceneRect.left % point.x; if (bgStX < 0) bgStX += point.x; @@ -643,7 +643,7 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { int bgNumX = bgStX / width; int bgOffsetX = bgStX % width; - int bgStY = g_fullpipe->_sceneRect.top % point.y; + int bgStY = g_fp->_sceneRect.top % point.y; if (bgStY < 0) bgStY += point.y; @@ -651,12 +651,12 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { int bgNumY = bgStY / height; int bgOffsetY = bgStY % height; - int bgPosX = g_fullpipe->_sceneRect.left - bgOffsetX; + int bgPosX = g_fp->_sceneRect.left - bgOffsetX; - if (bgPosX < g_fullpipe->_sceneRect.right - 1) { + if (bgPosX < g_fp->_sceneRect.right - 1) { while (1) { int v25 = bgNumY; - for (int y = g_fullpipe->_sceneRect.top - bgOffsetY; y < g_fullpipe->_sceneRect.bottom - 1;) { + for (int y = g_fp->_sceneRect.top - bgOffsetY; y < g_fp->_sceneRect.bottom - 1;) { BigPicture *v27 = _bigPictureArray[bgNumX][v25]; v27->draw(bgPosX, y, 0, 0); y += v27->getDimensions(&point)->y; @@ -678,7 +678,7 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { break; bgNumX = 0; } - if (oldx >= g_fullpipe->_sceneRect.right - 1) + if (oldx >= g_fp->_sceneRect.right - 1) break; } } @@ -703,22 +703,22 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { int height = point.y; if (obj->_flags & 8) { - while (objX > g_fullpipe->_sceneRect.right) { + while (objX > g_fp->_sceneRect.right) { objX -= width; obj->setOXY(objX, objY); } - for (int j = width + objX; width + objX < g_fullpipe->_sceneRect.left; j = width + objX) { + for (int j = width + objX; width + objX < g_fp->_sceneRect.left; j = width + objX) { objX = j; obj->setOXY(j, objY); } } if (obj->_flags & 0x10) { - while (objY > g_fullpipe->_sceneRect.bottom) { + while (objY > g_fp->_sceneRect.bottom) { objY -= height; obj->setOXY(objX, objY); } - for (int j = objY + height; objY + height < g_fullpipe->_sceneRect.top; j = objY + height) { + for (int j = objY + height; objY + height < g_fp->_sceneRect.top; j = objY + height) { objY = j; obj->setOXY(objX, j); } @@ -727,12 +727,12 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { obj->draw(); if (obj->_flags & 2) { - if (objX > g_fullpipe->_sceneRect.left) { + if (objX > g_fp->_sceneRect.left) { obj->setOXY(objX - width, objY); obj->draw(); obj->setOXY(objX, objY); } - if (width + objX < g_fullpipe->_sceneRect.right) { + if (width + objX < g_fp->_sceneRect.right) { obj->setOXY(width + objX, objY); obj->draw(); obj->setOXY(objX, objY); @@ -740,12 +740,12 @@ void Scene::drawContent(int minPri, int maxPri, bool drawBg) { } if (obj->_flags & 0x20) { - if (objY > g_fullpipe->_sceneRect.top) { + if (objY > g_fp->_sceneRect.top) { obj->setOXY(objX, objY - height); obj->draw(); obj->setOXY(objX, objY); } - if (height + objY < g_fullpipe->_sceneRect.bottom) { + if (height + objY < g_fp->_sceneRect.bottom) { obj->setOXY(objX, height + objY); obj->draw(); obj->setOXY(objX, objY); diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 50142dd918..b8a88eb484 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -754,9 +754,9 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { } int defaultUpdateCursor() { - g_fullpipe->updateCursorCommon(); + g_fp->updateCursorCommon(); - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } void FullpipeEngine::processArcade(ExCommand *ex) { diff --git a/engines/fullpipe/scenes/scene01.cpp b/engines/fullpipe/scenes/scene01.cpp index 4181bbffe3..c6f7ba303c 100644 --- a/engines/fullpipe/scenes/scene01.cpp +++ b/engines/fullpipe/scenes/scene01.cpp @@ -36,7 +36,7 @@ namespace Fullpipe { void scene01_fixEntrance() { - GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME"); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME"); if (var->getSubVarAsInt("Entrance") == TrubaLeft) var->setSubVarAsInt("Entrance", TrubaRight); } @@ -48,7 +48,7 @@ void scene01_initScene(Scene *sc, int entrance) { g_vars->scene01_picSc01Osk2 = sc->getPictureObjectById(PIC_SC1_OSK2, 0); g_vars->scene01_picSc01Osk2->_flags &= 0xFFFB; - if (g_fullpipe->getObjectState(sO_EggCracker) == g_fullpipe->getObjectEnumState(sO_EggCracker, sO_DidNotCrackEgg)) { + if (g_fp->getObjectState(sO_EggCracker) == g_fp->getObjectEnumState(sO_EggCracker, sO_DidNotCrackEgg)) { PictureObject *pic = sc->getPictureObjectById(PIC_SC1_KUCHKA, 0); if (pic) pic->_flags &= 0xFFFB; @@ -60,7 +60,7 @@ void scene01_initScene(Scene *sc, int entrance) { bootAnim->_flags &= ~0x04; } - g_fullpipe->lift_setButton(sO_Level2, ST_LBN_2N); + g_fp->lift_setButton(sO_Level2, ST_LBN_2N); } int sceneHandler01(ExCommand *cmd) { @@ -71,7 +71,7 @@ int sceneHandler01(ExCommand *cmd) { if (cmd->_messageNum > MSG_SC1_SHOWOSK) { if (cmd->_messageNum == MSG_SC1_UTRUBACLICK) - handleObjectInteraction(g_fullpipe->_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC1_LADDER, 0), 0); + handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC1_LADDER, 0), 0); return 0; } @@ -97,19 +97,19 @@ int sceneHandler01(ExCommand *cmd) { return 0; } - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) { - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) { + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; } - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); return res; } diff --git a/engines/fullpipe/scenes/scene02.cpp b/engines/fullpipe/scenes/scene02.cpp index 3ca28cb0d1..845a53e1d1 100644 --- a/engines/fullpipe/scenes/scene02.cpp +++ b/engines/fullpipe/scenes/scene02.cpp @@ -39,12 +39,12 @@ namespace Fullpipe { void scene02_initScene(Scene *sc) { g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1); - if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) { - Scene *s = g_fullpipe->_currentScene; + if (g_fp->getObjectState(sO_GuvTheDrawer) == g_fp->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) { + Scene *s = g_fp->_currentScene; - g_fullpipe->_currentScene = sc; + g_fp->_currentScene = sc; g_vars->scene02_guvTheDrawer->changeStatics2(ST_DYAS_LIES); - g_fullpipe->_currentScene = s; + g_fp->_currentScene = s; } g_vars->scene02_boxDelay = 0; @@ -55,23 +55,23 @@ void scene02_initScene(Scene *sc) { g_vars->scene02_boxOpen = false; } else { g_vars->scene02_boxOpen = true; - g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150; + g_vars->scene02_boxDelay = 100 * g_fp->_rnd->getRandomNumber(32767) + 150; } - g_fullpipe->_floaters->init(g_fullpipe->_gameLoader->_gameVar->getSubVarByName("SC_2")); + g_fp->_floaters->init(g_fp->_gameLoader->_gameVar->getSubVarByName("SC_2")); } void sceneHandler02_ladderClick() { - handleObjectInteraction(g_fullpipe->_aniMan2, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0); + handleObjectInteraction(g_fp->_aniMan2, g_fp->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0); } void sceneHandler02_showLadder() { - g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4; + g_fp->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4; } void sceneHandler02_hideLadder() { - g_fullpipe->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb; - g_fullpipe->_aniMan2->_priority = 25; + g_fp->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb; + g_fp->_aniMan2->_priority = 25; } int sceneHandler02(ExCommand *ex) { @@ -90,7 +90,7 @@ int sceneHandler02(ExCommand *ex) { return 0; case MSG_SC2_PUTMANUP: - g_fullpipe->_aniMan2->_priority = 0; + g_fp->_aniMan2->_priority = 0; return 0; case MSG_SC2_HIDELADDER: @@ -98,12 +98,12 @@ int sceneHandler02(ExCommand *ex) { return 0; case 33: - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } @@ -111,24 +111,24 @@ int sceneHandler02(ExCommand *ex) { if (g_vars->scene02_boxOpen) { if (g_vars->scene02_boxDelay >= 1) { --g_vars->scene02_boxDelay; - } else if (g_fullpipe->_floaters->_array2.size() >= 1) { - if (g_fullpipe->_floaters->_array2[0]->val5 == -50) { - g_fullpipe->_floaters->stopAll(); + } else if (g_fp->_floaters->_array2.size() >= 1) { + if (g_fp->_floaters->_array2[0]->val5 == -50) { + g_fp->_floaters->stopAll(); g_vars->scene02_boxOpen = false; - g_vars->scene02_boxDelay = 100 * g_fullpipe->_rnd->getRandomNumber(32767) + 150; + g_vars->scene02_boxDelay = 100 * g_fp->_rnd->getRandomNumber(32767) + 150; } else { - g_fullpipe->_floaters->_array2[0]->val3 = -50; + g_fp->_floaters->_array2[0]->val3 = -50; } } else { - g_fullpipe->_floaters->genFlies(g_fullpipe->_currentScene, g_fullpipe->_rnd->getRandomNumber(700) + 100, -50, 0, 0); - g_vars->scene02_boxDelay = 500 * g_fullpipe->_rnd->getRandomNumber(32767) + 1000; + g_fp->_floaters->genFlies(g_fp->_currentScene, g_fp->_rnd->getRandomNumber(700) + 100, -50, 0, 0); + g_vars->scene02_boxDelay = 500 * g_fp->_rnd->getRandomNumber(32767) + 1000; } } - g_fullpipe->_floaters->update(); - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_floaters->update(); + g_fp->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); } return res; diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp index 1bfd8b8fcc..4d4f05764d 100644 --- a/engines/fullpipe/scenes/scene03.cpp +++ b/engines/fullpipe/scenes/scene03.cpp @@ -50,34 +50,34 @@ void scene03_initScene(Scene *sc) { g_vars->scene03_eggeater = sc->getStaticANIObject1ById(ANI_EGGEATER, -1); g_vars->scene03_domino = sc->getStaticANIObject1ById(ANI_DOMINO_3, -1); - GameVar *v = g_fullpipe->_gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs); + GameVar *v = g_fp->_gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs); g_vars->swallowedEgg1 = v->getSubVarByName(sO_Egg1); g_vars->swallowedEgg2 = v->getSubVarByName(sO_Egg2); g_vars->swallowedEgg3 = v->getSubVarByName(sO_Egg3); - g_fullpipe->lift_setButton(sO_Level2, ST_LBN_2N); + g_fp->lift_setButton(sO_Level2, ST_LBN_2N); - g_fullpipe->lift_sub5(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT); + g_fp->lift_sub5(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT); } void scene03_setEaterState() { - if (g_fullpipe->getObjectState(sO_EggGulperGaveCoin) == g_fullpipe->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)) { - g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_SLIM, QU_EGTR_SLIMSHOW, 0); - g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID1, QU_EGTR_MD1_SHOW, 0); - g_fullpipe->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID2, QU_EGTR_MD2_SHOW, 0); + if (g_fp->getObjectState(sO_EggGulperGaveCoin) == g_fp->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)) { + g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_SLIM, QU_EGTR_SLIMSHOW, 0); + g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID1, QU_EGTR_MD1_SHOW, 0); + g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID2, QU_EGTR_MD2_SHOW, 0); } } int scene03_updateCursor() { - g_fullpipe->updateCursorCommon(); + g_fp->updateCursorCommon(); - if (g_fullpipe->_cursorId == PIC_CSR_DEFAULT && g_fullpipe->_objectIdAtCursor == PIC_SC3_DOMIN && g_vars->scene03_domino) { + if (g_fp->_cursorId == PIC_CSR_DEFAULT && g_fp->_objectIdAtCursor == PIC_SC3_DOMIN && g_vars->scene03_domino) { if (g_vars->scene03_domino->_flags & 4) - g_fullpipe->_cursorId = PIC_CSR_ITN; + g_fp->_cursorId = PIC_CSR_ITN; } - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } void sceneHandler03_eaterFat() { @@ -94,7 +94,7 @@ void sceneHandler03_swallowEgg(int item) { } else if (!g_vars->swallowedEgg3->_value.intValue) { g_vars->swallowedEgg3->_value.intValue = item; - g_fullpipe->setObjectState(sO_EggGulperGaveCoin, g_fullpipe->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)); + g_fp->setObjectState(sO_EggGulperGaveCoin, g_fp->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)); scene03_setEaterState(); } @@ -112,7 +112,7 @@ int sceneHandler03_swallowedEgg1State() { } void sceneHandler03_giveCoin(ExCommand *ex) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex->_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId); if (mq && mq->getCount() > 0) { ExCommand *ex0 = mq->getExCommandByIndex(0); @@ -136,7 +136,7 @@ void sceneHandler03_giveCoin(ExCommand *ex) { } void sceneHandler03_goLadder() { - handleObjectInteraction(g_fullpipe->_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC3_LADDER, 0), 0); + handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC3_LADDER, 0), 0); } void sceneHandler03_pushEggStack() { @@ -158,7 +158,7 @@ void sceneHandler03_releaseEgg() { } void sceneHandler03_takeEgg(ExCommand *ex) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex->_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId); if (mq && mq->getCount() > 0) { ExCommand *ex0 = mq->getExCommandByIndex(0); @@ -179,7 +179,7 @@ void sceneHandler03_takeEgg(ExCommand *ex) { if (ex1->_objtype == kObjTypeObjstateCommand) { ObjstateCommand *com = (ObjstateCommand *)ex1; - com->_value = g_fullpipe->getObjectEnumState(sO_EggGulper, sO_WantsNothing); + com->_value = g_fp->getObjectEnumState(sO_EggGulper, sO_WantsNothing); } } } @@ -194,11 +194,11 @@ int sceneHandler03(ExCommand *ex) { switch (ex->_messageNum) { case MSG_LIFT_EXITLIFT: - g_fullpipe->lift_exitSeq(ex); + g_fp->lift_exitSeq(ex); break; case MSG_LIFT_CLOSEDOOR: - g_fullpipe->lift_closedoorSeq(); + g_fp->lift_closedoorSeq(); break; case MSG_SC3_ONTAKECOIN: @@ -206,7 +206,7 @@ int sceneHandler03(ExCommand *ex) { break; case MSG_LIFT_STARTEXITQUEUE: - g_fullpipe->lift_startExitQueue(); + g_fp->lift_startExitQueue(); break; case MSG_SC3_RELEASEEGG: @@ -214,7 +214,7 @@ int sceneHandler03(ExCommand *ex) { break; case MSG_LIFT_CLICKBUTTON: - g_fullpipe->lift_animation3(); + g_fp->lift_animation3(); break; case MSG_SC3_HIDEDOMINO: @@ -226,7 +226,7 @@ int sceneHandler03(ExCommand *ex) { break; case MSG_LIFT_GO: - g_fullpipe->lift_goAnimation(); + g_fp->lift_goAnimation(); break; case MSG_SC3_UTRUBACLICK: @@ -238,25 +238,25 @@ int sceneHandler03(ExCommand *ex) { break; case 64: - g_fullpipe->lift_sub05(ex); + g_fp->lift_sub05(ex); break; case 29: { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); if (ani && ani->_id == ANI_LIFTBUTTON) { - g_fullpipe->lift_sub1(ani); + g_fp->lift_sub1(ani); ex->_messageKind = 0; return 0; } - if (g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC3_DOMIN) { + if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC3_DOMIN) { if (g_vars->scene03_domino) if (g_vars->scene03_domino->_flags & 4) - if (g_fullpipe->_aniMan->isIdle()) - if (!(g_fullpipe->_aniMan->_flags & 0x100) && g_fullpipe->_msgObjectId2 != g_vars->scene03_domino->_id) { - handleObjectInteraction(g_fullpipe->_aniMan, g_vars->scene03_domino, ex->_keyCode); + if (g_fp->_aniMan->isIdle()) + if (!(g_fp->_aniMan->_flags & 0x100) && g_fp->_msgObjectId2 != g_vars->scene03_domino->_id) { + handleObjectInteraction(g_fp->_aniMan, g_vars->scene03_domino, ex->_keyCode); ex->_messageKind = 0; return 0; @@ -270,19 +270,19 @@ int sceneHandler03(ExCommand *ex) { { int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); return res; } diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 6c9e9c69ea..3218324a75 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -52,7 +52,7 @@ void scene04_speakerCallback(int *phase) { if (scene04_speakerPhases[g_vars->scene04_speakerPhase + 6 * g_vars->scene04_speakerVariant] < 0) { g_vars->scene04_speakerPhase = 0; - g_vars->scene04_speakerVariant = g_fullpipe->_rnd->getRandomNumber(2); + g_vars->scene04_speakerVariant = g_fp->_rnd->getRandomNumber(2); } } else { ++g_vars->scene04_speakerPhase; @@ -113,7 +113,7 @@ void scene04_initScene(Scene *sc) { if (plank) plank->_flags |= 8; - if (g_fullpipe->getObjectState(sO_Jar_4) == g_fullpipe->getObjectEnumState(sO_Jar_4, sO_UpsideDown)) { + if (g_fp->getObjectState(sO_Jar_4) == g_fp->getObjectEnumState(sO_Jar_4, sO_UpsideDown)) { g_vars->scene04_bottleObjList.clear(); g_vars->scene04_kozyawkiObjList.clear(); @@ -169,7 +169,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_kozyawkiAni.clear(); - g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); + g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); g_vars->scene04_var07 = false; g_vars->scene04_ladderClickable = false; @@ -182,7 +182,7 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_bigBallCounter = 0; g_vars->scene04_bigBallFromLeft = true; - if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)) + if (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone)) g_vars->scene04_mamasha->hide(); g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1); @@ -192,12 +192,12 @@ void scene04_initScene(Scene *sc) { g_vars->scene04_speakerVariant = 0; g_vars->scene04_speakerPhase = 0; - g_fullpipe->initArcadeKeys("SC_4"); + g_fp->initArcadeKeys("SC_4"); } bool sceneHandler04_friesAreWalking() { - if (g_vars->scene04_dudeOnLadder && g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) { - int col = g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan); + if (g_vars->scene04_dudeOnLadder && g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) { + int col = g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan); if (col >= 3 && col <= 6 ) { Movement *koz; @@ -214,38 +214,38 @@ bool sceneHandler04_friesAreWalking() { } int scene04_updateCursor() { - g_fullpipe->updateCursorCommon(); + g_fp->updateCursorCommon(); - if (g_fullpipe->_objectIdAtCursor == PIC_SC4_LRTRUBA) { + if (g_fp->_objectIdAtCursor == PIC_SC4_LRTRUBA) { if (!g_vars->scene04_objectIsTaken) { - g_fullpipe->_cursorId = PIC_CSR_DEFAULT; + g_fp->_cursorId = PIC_CSR_DEFAULT; - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } - } else if (g_fullpipe->_objectIdAtCursor == ANI_PLANK || g_fullpipe->_objectIdAtCursor == PIC_SC4_PLANK) { - if (g_fullpipe->_objectIdAtCursor == ANI_PLANK && g_fullpipe->_cursorId != PIC_CSR_ITN) - return g_fullpipe->_cursorId; + } else if (g_fp->_objectIdAtCursor == ANI_PLANK || g_fp->_objectIdAtCursor == PIC_SC4_PLANK) { + if (g_fp->_objectIdAtCursor == ANI_PLANK && g_fp->_cursorId != PIC_CSR_ITN) + return g_fp->_cursorId; - if (g_fullpipe->_objectIdAtCursor == ANI_PLANK || (g_fullpipe->_objectIdAtCursor == PIC_SC4_PLANK && g_fullpipe->_cursorId == PIC_CSR_DEFAULT)) { + if (g_fp->_objectIdAtCursor == ANI_PLANK || (g_fp->_objectIdAtCursor == PIC_SC4_PLANK && g_fp->_cursorId == PIC_CSR_DEFAULT)) { if (sceneHandler04_friesAreWalking()) { - g_fullpipe->_cursorId = PIC_CSR_ARCADE1; - return g_fullpipe->_cursorId; + g_fp->_cursorId = PIC_CSR_ARCADE1; + return g_fp->_cursorId; } if (g_vars->scene04_soundPlaying) { - g_fullpipe->_cursorId = PIC_CSR_DEFAULT; - return g_fullpipe->_cursorId; + g_fp->_cursorId = PIC_CSR_DEFAULT; + return g_fp->_cursorId; } } } - if (g_fullpipe->_objectIdAtCursor == PIC_CSR_ITN && g_fullpipe->_objectIdAtCursor == PIC_SC4_DOWNTRUBA) - g_fullpipe->_cursorId = PIC_CSR_GOD; + if (g_fp->_objectIdAtCursor == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC4_DOWNTRUBA) + g_fp->_cursorId = PIC_CSR_GOD; - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } void sceneHandler04_checkBigBallClick() { - StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); + StaticANIObject *ball = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); if (ball) for (uint i = 0; i < ball->_movements.size(); i++) @@ -260,7 +260,7 @@ void sceneHandler04_clickBottle() { } void sceneHandler04_clickButton() { - StaticANIObject *but = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BUTTON, -1); + StaticANIObject *but = g_fp->_currentScene->getStaticANIObject1ById(ANI_BUTTON, -1); if (but) { if (!g_vars->scene04_clock->_movement || @@ -275,22 +275,22 @@ void sceneHandler04_clickButton() { } void sceneHandler04_downLadder(int x, int y) { - g_vars->scene04_ladder->method34(g_fullpipe->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0); + g_vars->scene04_ladder->method34(g_fp->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0); } void sceneHandler04_walkClimbLadder(ExCommand *ex) { - MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0); - ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_keyCode = g_fp->_aniMan->_okeyCode; ex1->_excFlags |= 2; mq->addExCommandToEnd(ex1); ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0); - ex2->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex2->_keyCode = g_fp->_aniMan->_okeyCode; ex2->_excFlags |= 2; mq->addExCommandToEnd(ex2); @@ -321,7 +321,7 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) { g_vars->scene04_ladder->_ladder_field_20 = 0; g_vars->scene04_ladder->_ladder_field_24 = -60; - g_vars->scene04_ladder->addObject(g_fullpipe->_aniMan); + g_vars->scene04_ladder->addObject(g_fp->_aniMan); if (g_vars->scene04_soundPlaying) { g_vars->scene04_ladder->_movements.front()->movVars->varUpStart = MV_MAN_STARTLADDER2; @@ -335,18 +335,18 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) { g_vars->scene04_ladder->_movements.front()->staticIds[2] = ST_MAN_GOLADDER; } - g_fullpipe->_aniMan->_priority = 12; + g_fp->_aniMan->_priority = 12; - getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->clearEnabled(); + getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->clearEnabled(); getGameLoaderInteractionController()->disableFlag24(); } void sceneHandler04_clickLadder() { - g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; - g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; + g_vars->scene04_dudePosX = g_fp->_aniMan->_ox; + g_vars->scene04_dudePosY = g_fp->_aniMan->_oy; if (g_vars->scene04_dudeOnLadder) { - if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) { + if (!g_fp->_aniMan->isIdle() || (g_fp->_aniMan->_flags & 0x100)) { g_vars->scene04_ladderClickable = true; } else { int h3 = 3 * g_vars->scene04_ladder->_height; @@ -366,16 +366,16 @@ void sceneHandler04_clickLadder() { g_vars->scene04_ladderClickable = false; } } else { - if (g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) { + if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) { if (abs(1095 - g_vars->scene04_dudePosX) > 1 || abs(434 - g_vars->scene04_dudePosY) > 1) { - MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->method34(g_fullpipe->_aniMan, 1095, 434, 1, ST_MAN_UP); + MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->method34(g_fp->_aniMan, 1095, 434, 1, ST_MAN_UP); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags = 3; mq->addExCommandToEnd(ex); - postExCommand(g_fullpipe->_aniMan->_id, 2, 1095, 434, 0, -1); + postExCommand(g_fp->_aniMan->_id, 2, 1095, 434, 0, -1); } } else { sceneHandler04_walkClimbLadder(0); @@ -385,22 +385,22 @@ void sceneHandler04_clickLadder() { } void sceneHandler04_jumpOnLadder() { - if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id != MV_MAN_LOOKLADDER) + if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id != MV_MAN_LOOKLADDER) return; - if (g_fullpipe->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER && g_fullpipe->_aniMan->_statics->_staticsId != ST_MAN_LADDERDOWN) + if (g_fp->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER && g_fp->_aniMan->_statics->_staticsId != ST_MAN_LADDERDOWN) return; - g_fullpipe->_aniMan->changeStatics2(ST_MAN_LADDERDOWN); + g_fp->_aniMan->changeStatics2(ST_MAN_LADDERDOWN); - g_fullpipe->_aniMan->_flags |= 1; + g_fp->_aniMan->_flags |= 1; MGM mgm; MGMInfo mgminfo; mgm.addItem(ANI_MAN); - mgminfo.ani = g_fullpipe->_aniMan; + mgminfo.ani = g_fp->_aniMan; mgminfo.staticsId2 = ST_MAN_ONPLANK; mgminfo.x1 = 938; mgminfo.y1 = 442; @@ -414,20 +414,20 @@ void sceneHandler04_jumpOnLadder() { if (mq) { mq->_flags |= 1; - if (!mq->chain(g_fullpipe->_aniMan)) + if (!mq->chain(g_fp->_aniMan)) delete mq; - g_fullpipe->_aniMan->_priority = 10; + g_fp->_aniMan->_priority = 10; } - g_vars->scene04_ladderOffset = g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan); + g_vars->scene04_ladderOffset = g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan); } void sceneHandler04_clickPlank() { if (sceneHandler04_friesAreWalking()) sceneHandler04_jumpOnLadder(); else if (g_vars->scene04_dudeOnLadder) - g_fullpipe->playSound(SND_4_033, 0); + g_fp->playSound(SND_4_033, 0); else if (!g_vars->scene04_soundPlaying) chainQueue(QU_PNK_CLICK, 0); } @@ -465,7 +465,7 @@ void sceneHandler04_gotoLadder(ExCommand *ex) { mgm.addItem(ANI_MAN); - mgminfo.ani = g_fullpipe->_aniMan; + mgminfo.ani = g_fp->_aniMan; mgminfo.staticsId2 = ST_MAN_UP; mgminfo.x1 = 1095; mgminfo.y1 = 434; @@ -491,7 +491,7 @@ void sceneHandler04_gotoLadder(ExCommand *ex) { ex2->_keyCode = -1; mq->addExCommandToEnd(ex2); - ExCommand *ex3 = new ExCommand(g_fullpipe->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0); + ExCommand *ex3 = new ExCommand(g_fp->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0); ex3->_field_14 = 256; ex3->_messageNum = 0; ex3->_excFlags |= 3; @@ -505,9 +505,9 @@ void sceneHandler04_gotoLadder(ExCommand *ex) { mq->setFlags(mq->getFlags() | 1); - if (mq->chain(g_fullpipe->_aniMan)) { - g_fullpipe->_aniMan->_priority = 12; - g_fullpipe->_aniMan->_flags |= 1; + if (mq->chain(g_fp->_aniMan)) { + g_fp->_aniMan->_priority = 12; + g_fp->_aniMan->_flags |= 1; } else { delete mq; } @@ -522,7 +522,7 @@ void sceneHandler04_lowerPlank() { void sceneHandler04_manFromBottle() { for (Common::List::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it) - if (*it == g_fullpipe->_aniMan) { + if (*it == g_fp->_aniMan) { g_vars->scene04_bottleObjList.erase(it); g_vars->scene04_bottleWeight -= 9; break; @@ -533,15 +533,15 @@ void sceneHandler04_manFromBottle() { g_vars->scene04_ladder = 0; - getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->setEnabled(); + getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); } void sceneHandler04_manToBottle() { - g_vars->scene04_bottleObjList.push_back(g_fullpipe->_aniMan); + g_vars->scene04_bottleObjList.push_back(g_fp->_aniMan); g_vars->scene04_springOffset = 5; g_vars->scene04_bottleWeight += 9; - g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + g_fp->_aniMan2 = g_fp->_aniMan; g_vars->scene04_dudeInBottle = 1; } @@ -673,9 +673,9 @@ MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) { mgminfo.ani = ani; mgminfo.staticsId2 = ST_KZW_SIT; - mgminfo.x1 = 397 - 4 * g_fullpipe->_rnd->getRandomNumber(1); + mgminfo.x1 = 397 - 4 * g_fp->_rnd->getRandomNumber(1); mgminfo.field_1C = ani->_priority; - mgminfo.y1 = g_vars->scene04_bottle->_oy - 4 * g_fullpipe->_rnd->getRandomNumber(1) + 109; + mgminfo.y1 = g_vars->scene04_bottle->_oy - 4 * g_fp->_rnd->getRandomNumber(1) + 109; mgminfo.field_10 = 1; mgminfo.flags = 78; mgminfo.movementId = MV_KZW_JUMPROTATE; @@ -863,13 +863,13 @@ void sceneHandler04_shootKozyawka() { } if (g_vars->scene04_ladderOffset > 3) - g_fullpipe->_aniMan->changeStatics1(ST_MAN_LOOKPLANK); + g_fp->_aniMan->changeStatics1(ST_MAN_LOOKPLANK); g_vars->scene04_kozyawkaOnLadder = true; } void sceneHandler04_showCoin() { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1); if (ani) { ani->show1(MV_BDG_OPEN, MV_MAN_GOU, MV_SC4_COIN_default, 0); @@ -885,9 +885,9 @@ void sceneHandler04_stopSound() { } void sceneHandler04_animOutOfBottle(ExCommand *ex) { - g_fullpipe->_aniMan->changeStatics2(ST_MAN_SIT); + g_fp->_aniMan->changeStatics2(ST_MAN_SIT); - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0); if (ex) { ExCommand *newex = new ExCommand(ex); @@ -899,7 +899,7 @@ void sceneHandler04_animOutOfBottle(ExCommand *ex) { mq->chain(0); g_vars->scene04_dudeInBottle = false; - g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 1); + g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1); } void sceneHandler04_walkKozyawka() { @@ -907,7 +907,7 @@ void sceneHandler04_walkKozyawka() { g_vars->scene04_walkingKozyawka = g_vars->scene04_kozyawkiObjList.front(); g_vars->scene04_kozyawkiObjList.pop_front(); - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_KOZAW_WALK), 0, 1); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_KOZAW_WALK), 0, 1); mq->replaceKeyCode(-1, g_vars->scene04_walkingKozyawka->_okeyCode); mq->chain(0); } @@ -970,9 +970,9 @@ void sceneHandler04_springWobble() { } void sceneHandler04_leaveScene() { - g_fullpipe->_aniMan2 = 0; + g_fp->_aniMan2 = 0; - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC4_MANTOBOTTLE), 0, 0); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC4_MANTOBOTTLE), 0, 0); ExCommand *ex = 0; for (uint i = 0; i < mq->getCount(); i++) { @@ -993,9 +993,9 @@ void sceneHandler04_leaveScene() { g_vars->scene04_var07 = false; g_vars->scene04_dudeOnLadder = 0; - g_fullpipe->_behaviorManager->setFlagByStaticAniObject(g_fullpipe->_aniMan, 0); + g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0); - g_fullpipe->updateMapPiece(PIC_MAP_P03, 1); + g_fp->updateMapPiece(PIC_MAP_P03, 1); } void sceneHandler04_liftBottle() { @@ -1018,7 +1018,7 @@ void sceneHandler04_liftBottle() { g_vars->scene04_springOffset = 10; g_vars->scene04_bottleIsTaken = false; - g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); + g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed)); } } @@ -1036,7 +1036,7 @@ void sceneHandler04_goClock() { g_vars->scene04_soundPlaying = true; g_vars->scene04_coinPut = false; - g_fullpipe->stopAllSoundStreams(); + g_fp->stopAllSoundStreams(); sceneHandler04_startSounds("sc4_start.ogg", "sc4_loop.ogg", "sc4_stop2.ogg"); @@ -1044,7 +1044,7 @@ void sceneHandler04_goClock() { } void sceneHandler04_bigBallOut() { - StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); + StaticANIObject *ball = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); if (ball && ball->_flags & 4) for (uint i = 0; i < ball->_movements.size(); i++) @@ -1054,21 +1054,21 @@ void sceneHandler04_bigBallOut() { } void sceneHandler04_leaveLadder(ExCommand *ex) { - if (!g_fullpipe->_aniMan->isIdle()) + if (!g_fp->_aniMan->isIdle()) return; - if (!(g_fullpipe->_aniMan->_flags & 0x100)) { - if (getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->_objtype == kObjTypeMctlCompound) { - MctlCompound *mc = (MctlCompound *)getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId); + if (!(g_fp->_aniMan->_flags & 0x100)) { + if (getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->_objtype == kObjTypeMctlCompound) { + MctlCompound *mc = (MctlCompound *)getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId); - if (mc->_motionControllers[0]->_movGraphReactObj->pointInRegion(g_fullpipe->_sceneRect.left + ex->_x, g_fullpipe->_sceneRect.top + ex->_y)) { - if (g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan)) { - MessageQueue *mq = g_vars->scene04_ladder->controllerWalkTo(g_fullpipe->_aniMan, 0); + if (mc->_motionControllers[0]->_movGraphReactObj->pointInRegion(g_fp->_sceneRect.left + ex->_x, g_fp->_sceneRect.top + ex->_y)) { + if (g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan)) { + MessageQueue *mq = g_vars->scene04_ladder->controllerWalkTo(g_fp->_aniMan, 0); if (mq) { mq->addExCommandToEnd(new ExCommand(ex)); - if (mq->chain(g_fullpipe->_aniMan) ) + if (mq->chain(g_fp->_aniMan) ) ex->_messageKind = 0; else delete mq; @@ -1079,23 +1079,23 @@ void sceneHandler04_leaveLadder(ExCommand *ex) { } } } else { - MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); ExCommand *ex1; - if (g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN) { ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_LOOKLADDERRV, 0, 0, 0, 1, 0, 0, 0); - ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_keyCode = g_fp->_aniMan->_okeyCode; ex1->_excFlags |= 2; mq->addExCommandToEnd(ex1); } ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_STARTLADDERD, 0, 0, 0, 1, 0, 0, 0); - ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_keyCode = g_fp->_aniMan->_okeyCode; ex1->_excFlags |= 2; mq->addExCommandToEnd(ex1); ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_FROMLADDER, 0, 0, 0, 1, 0, 0, 0); - ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode; + ex1->_keyCode = g_fp->_aniMan->_okeyCode; ex1->_excFlags |= 2; mq->addExCommandToEnd(ex1); @@ -1104,7 +1104,7 @@ void sceneHandler04_leaveLadder(ExCommand *ex) { mq->setFlags(mq->getFlags() | 1); - if (mq->chain(g_fullpipe->_aniMan)) { + if (mq->chain(g_fp->_aniMan)) { if (g_vars->scene04_ladder) delete g_vars->scene04_ladder; @@ -1166,13 +1166,13 @@ void sceneHandler04_putKozyawkaBack(StaticANIObject *ani) { } void sceneHandler04_bigBallWalkIn() { - StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); + StaticANIObject *ball = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1); if (g_vars->scene04_dudeOnLadder && (!ball || !(ball->_flags & 4)) - && g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan) > 3) { + && g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan) > 3) { - if (!g_fullpipe->_rnd->getRandomNumber(49)) { + if (!g_fp->_rnd->getRandomNumber(49)) { if (g_vars->scene04_bigBallFromLeft) chainQueue(QU_BALL_WALKR, 0); else @@ -1191,7 +1191,7 @@ void sceneHandler04_takeBottle() { g_vars->scene04_bottleIsTaken = true; g_vars->scene04_hand->_priority = 5; - g_fullpipe->setObjectState(sO_LowerPipe, g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsOpened)); + g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsOpened)); } void sceneHandler04_takeKozyawka() { @@ -1220,7 +1220,7 @@ void sceneHandler04_takeKozyawka() { } void sceneHandler04_testPlank(ExCommand *ex) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(ex->_parId); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId); if (!mq) return; @@ -1250,7 +1250,7 @@ void sceneHandler04_updateBottle() { } void sceneHandler04_winArcade() { - if (g_fullpipe->getObjectState(sO_LowerPipe) == g_fullpipe->getObjectEnumState(sO_LowerPipe, sO_IsClosed) + if (g_fp->getObjectState(sO_LowerPipe) == g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed) && g_vars->scene04_soundPlaying) { g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); g_vars->scene04_hand->changeStatics2(ST_HND_EMPTY); @@ -1268,11 +1268,11 @@ void sceneHandler04_winArcade() { g_vars->scene04_objectIsTaken = false; g_vars->scene04_soundPlaying = false; - getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->setEnabled(); + getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); - g_fullpipe->stopSoundStream2(); + g_fp->stopSoundStream2(); } } @@ -1347,35 +1347,35 @@ int sceneHandler04(ExCommand *ex) { case 33: { - g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; - g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; + g_vars->scene04_dudePosX = g_fp->_aniMan->_ox; + g_vars->scene04_dudePosY = g_fp->_aniMan->_oy; int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan->_ox < g_fullpipe->_sceneRect.left + 200) { - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.left - 300; - g_fullpipe->_aniMan->_ox = g_vars->scene04_dudePosX; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan->_ox < g_fp->_sceneRect.left + 200) { + g_fp->_currentScene->_x = g_fp->_aniMan->_ox - g_fp->_sceneRect.left - 300; + g_fp->_aniMan->_ox = g_vars->scene04_dudePosX; } - if (g_fullpipe->_aniMan->_ox > g_fullpipe->_sceneRect.right - 200) { - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan->_ox > g_fp->_sceneRect.right - 200) { + g_fp->_currentScene->_x = g_fp->_aniMan->_ox - g_fp->_sceneRect.right + 300; } res = 1; if (g_vars->scene04_soundPlaying) { - if (g_fullpipe->_aniMan->_movement) { - if (g_fullpipe->_aniMan->_movement->_id == MV_MAN_TOLADDER) { - g_fullpipe->_aniMan2 = 0; + if (g_fp->_aniMan->_movement) { + if (g_fp->_aniMan->_movement->_id == MV_MAN_TOLADDER) { + g_fp->_aniMan2 = 0; - if (g_fullpipe->_sceneRect.left > 380) - g_fullpipe->_currentScene->_x = 380 - g_fullpipe->_sceneRect.left; + if (g_fp->_sceneRect.left > 380) + g_fp->_currentScene->_x = 380 - g_fp->_sceneRect.left; } } } } else { - if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id == MV_MAN_GOD) - g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id == MV_MAN_GOD) + g_fp->_aniMan2 = g_fp->_aniMan; } sceneHandler04_springWobble(); @@ -1397,9 +1397,9 @@ int sceneHandler04(ExCommand *ex) { if (g_vars->scene04_dudeOnLadder) { if (!g_vars->scene04_soundPlaying) { - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); return res; } @@ -1410,21 +1410,21 @@ int sceneHandler04(ExCommand *ex) { } if (g_vars->scene04_soundPlaying) { - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); return res; } - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); return res; } case 29: { - int picid = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); + int picid = g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); if (g_vars->scene04_dudeInBottle) { sceneHandler04_animOutOfBottle(ex); @@ -1449,7 +1449,7 @@ int sceneHandler04(ExCommand *ex) { break; } - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); if ((ani && ani->_id == ANI_PLANK) || picid == PIC_SC4_PLANK) { sceneHandler04_clickPlank(); @@ -1457,13 +1457,13 @@ int sceneHandler04(ExCommand *ex) { ex->_messageKind = 0; } else if (g_vars->scene04_dudeOnLadder) { sceneHandler04_leaveLadder(ex); - } else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) { - PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picid, 0); + } else if (!ani || !canInteractAny(g_fp->_aniMan, ani, ex->_keyCode)) { + PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picid, 0); - if (!pic || !canInteractAny(g_fullpipe->_aniMan, pic,ex->_keyCode)) { - if ((g_fullpipe->_sceneRect.right - ex->_sceneClickX < 47 && g_fullpipe->_sceneRect.right < g_fullpipe->_sceneWidth - 1) - || (ex->_sceneClickX - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0)) - g_fullpipe->processArcade(ex); + if (!pic || !canInteractAny(g_fp->_aniMan, pic,ex->_keyCode)) { + if ((g_fp->_sceneRect.right - ex->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) + || (ex->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) + g_fp->processArcade(ex); } } } diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index faf53fcae4..20443edb5f 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -44,17 +44,17 @@ void scene05_initScene(Scene *sc) { g_vars->scene05_handleFlipper = 1; g_vars->scene05_floatersTicker = 1000; - Scene *oldscene = g_fullpipe->_currentScene; + Scene *oldscene = g_fp->_currentScene; - g_fullpipe->_currentScene = sc; + g_fp->_currentScene = sc; - if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { g_vars->scene05_wacko->changeStatics2(ST_OTM_GLS_LEFT); g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); g_vars->scene05_handle->changeStatics2(ST_HDL_UP); g_vars->scene05_handle->_flags |= 4; - } else if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + } else if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { g_vars->scene05_wacko->changeStatics2(ST_OTM_BOX_LEFT); g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); g_vars->scene05_handle->changeStatics2(ST_HDL_UP); @@ -62,13 +62,13 @@ void scene05_initScene(Scene *sc) { } else { g_vars->scene05_wacko->changeStatics2(ST_OTM_VNT_LEFT); - if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) { + if (g_fp->getObjectState(sO_WeirdWacko) != g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) { g_vars->scene05_handle->changeStatics2(ST_HDL_BROKEN); g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED); } } - g_fullpipe->_currentScene = oldscene; + g_fp->_currentScene = oldscene; } void sceneHandler05_makeManFlight() { @@ -79,7 +79,7 @@ void sceneHandler05_makeManFlight() { else qid = QU_SC5_MANFLY; - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(qid), 0, 0); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(qid), 0, 0); mq->setFlags(mq->getFlags() | 1); @@ -90,10 +90,10 @@ void sceneHandler05_makeWackoFeedback() { int staticsId1; int staticsId2; - if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { staticsId1 = ST_OTM_GLS_LEFT; staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_HANDLEUP : MV_OTM_HANDLEDOWN; - } else if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + } else if (g_fp->getObjectState(sO_WeirdWacko) != g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { return; } else { staticsId1 = ST_OTM_BOX_LEFT; @@ -122,9 +122,9 @@ void sceneHandler05_makeWackoFeedback() { } void sceneHandler05_resetTicks() { - if (g_fullpipe->_aniMan->_movement && (g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP - || g_fullpipe->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN)) - g_vars->scene05_wackoTicker = g_fullpipe->_updateTicks; + if (g_fp->_aniMan->_movement && (g_fp->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP + || g_fp->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN)) + g_vars->scene05_wackoTicker = g_fp->_updateTicks; else g_vars->scene05_wackoTicker = 0; } @@ -133,17 +133,17 @@ void sceneHandler05_genFlies() { if (g_vars->scene05_floatersTicker <= 1000) return; - if (g_fullpipe->_rnd->getRandomNumber(1)) { - int numFlies = g_fullpipe->_rnd->getRandomNumber(3) + 1; + if (g_fp->_rnd->getRandomNumber(1)) { + int numFlies = g_fp->_rnd->getRandomNumber(3) + 1; for (int i = 0; i < numFlies; i++) { - int x = g_fullpipe->_rnd->getRandomNumber(55) + 538; - int y = g_fullpipe->_rnd->getRandomNumber(60) + i * 30 + 520; + int x = g_fp->_rnd->getRandomNumber(55) + 538; + int y = g_fp->_rnd->getRandomNumber(60) + i * 30 + 520; - g_fullpipe->_floaters->genFlies(g_fullpipe->_currentScene, x, y, 5, 1); - g_fullpipe->_floaters->_array2.back()->val2 = 585; - g_fullpipe->_floaters->_array2.back()->val3 = -70; - g_fullpipe->_floaters->_array2.back()->val11 = 8.0; + g_fp->_floaters->genFlies(g_fp->_currentScene, x, y, 5, 1); + g_fp->_floaters->_array2.back()->val2 = 585; + g_fp->_floaters->_array2.back()->val3 = -70; + g_fp->_floaters->_array2.back()->val11 = 8.0; } } @@ -151,11 +151,11 @@ void sceneHandler05_genFlies() { } void sceneHandler05_showHandle() { - g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0); + g_fp->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0); } void sceneHandler05_handleDown() { - StaticANIObject *hatch = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); + StaticANIObject *hatch = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); hatch->changeStatics2(ST_BLK_CLOSED); hatch->startAnim(MV_BLK_OPEN, 0, -1); @@ -165,11 +165,11 @@ void sceneHandler05_handleDown() { } void sceneHandler05_hideHandle() { - g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->hide(); + g_fp->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->hide(); } void sceneHandler05_handleUp() { - StaticANIObject *hatch = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); + StaticANIObject *hatch = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1); hatch->changeStatics2(ST_BLK_OPEN); hatch->startAnim(MV_BLK_CLOSE, 0, -1); @@ -180,7 +180,7 @@ void sceneHandler05_handleUp() { void sceneHandler05_testHatch(ExCommand *inex) { ExCommand *ex; - if (g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1)->_statics->_staticsId == ST_BLK_CLOSED) { + if (g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1)->_statics->_staticsId == ST_BLK_CLOSED) { ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0); ex->_keyCode = TrubaLeft; ex->_excFlags |= 2; @@ -189,13 +189,13 @@ void sceneHandler05_testHatch(ExCommand *inex) { return; } - StaticANIObject *wacko = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_OTMOROZ, -1); + StaticANIObject *wacko = g_fp->_currentScene->getStaticANIObject1ById(ANI_OTMOROZ, -1); if (wacko->_movement) wacko->changeStatics2(wacko->_movement->_staticsObj2->_staticsId); - if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(inex->_parId); + if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) { + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(inex->_parId); if (mq) mq->deleteExCommandByIndex(mq->getCount() - 1, 1); @@ -205,7 +205,7 @@ void sceneHandler05_testHatch(ExCommand *inex) { if (!mq) { wacko->changeStatics2(ST_OTM_GLS_LEFT); - mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); } mq->setFlags(mq->getFlags() | 1); @@ -223,7 +223,7 @@ void sceneHandler05_testHatch(ExCommand *inex) { return; } - mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); mq->setFlags(mq->getFlags() | 1); ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_HANDLEUP, 0, 0, 0, 1, 0, 0, 0); @@ -237,8 +237,8 @@ void sceneHandler05_testHatch(ExCommand *inex) { if (!mq->chain(wacko)) delete mq; - } else if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { - MessageQueue *mq = g_fullpipe->_globalMessageQueueList->getMessageQueueById(inex->_parId); + } else if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) { + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(inex->_parId); if (mq) mq->deleteExCommandByIndex(mq->getCount() - 1, 1); @@ -247,7 +247,7 @@ void sceneHandler05_testHatch(ExCommand *inex) { mq = wacko->changeStatics1(ST_OTM_BOX_LEFT); if (!mq) { wacko->changeStatics2(ST_OTM_BOX_LEFT); - mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); } mq->setFlags(mq->getFlags() | 1); @@ -266,7 +266,7 @@ void sceneHandler05_testHatch(ExCommand *inex) { return; } - mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); mq->setFlags(mq->getFlags() | 1); ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_BOXHANDLEUP, 0, 0, 0, 1, 0, 0, 0); @@ -299,11 +299,11 @@ int sceneHandler05(ExCommand *ex) { switch (ex->_messageNum) { case MSG_SC5_BGRSOUNDOFF: - g_fullpipe->stopAllSoundInstances(SND_5_026); + g_fp->stopAllSoundInstances(SND_5_026); break; case MSG_SC5_BGRSOUNDON: - g_fullpipe->playSound(SND_5_026, 1); + g_fp->playSound(SND_5_026, 1); break; case MSG_SC5_MAKEMANFLIGHT: @@ -311,8 +311,8 @@ int sceneHandler05(ExCommand *ex) { break; case MSG_SC5_MAKEOTMFEEDBACK: - if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP - && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { + if (!g_fp->_aniMan->_movement || (g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP + && g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { sceneHandler05_makeWackoFeedback(); g_vars->scene05_wackoTicker = 0; } @@ -343,20 +343,20 @@ int sceneHandler05(ExCommand *ex) { case 33: { int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } if (g_vars->scene05_wackoTicker) { - if ((g_fullpipe->_updateTicks - g_vars->scene05_wackoTicker) > 62) { - if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP - && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { + if ((g_fp->_updateTicks - g_vars->scene05_wackoTicker) > 62) { + if (!g_fp->_aniMan->_movement || (g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP + && g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) { if (g_vars->scene05_handleFlipper % 2) sceneHandler05_makeWackoFeedback(); @@ -369,11 +369,11 @@ int sceneHandler05(ExCommand *ex) { ++g_vars->scene05_floatersTicker; - g_fullpipe->_floaters->update(); + g_fp->_floaters->update(); - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); return res; } diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 5bbd280fdd..2b7678b10a 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -38,53 +38,53 @@ namespace Fullpipe { void scene06_initMumsy() { - g_vars->scene06_mumsyJumpFw = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPFW); - g_vars->scene06_mumsyJumpBk = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPBK); + g_vars->scene06_mumsyJumpFw = g_fp->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPFW); + g_vars->scene06_mumsyJumpBk = g_fp->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPBK); g_vars->scene06_mumsyJumpFwPercent = g_vars->scene06_mumsyJumpFw->_percent; g_vars->scene06_mumsyJumpBkPercent = g_vars->scene06_mumsyJumpBk->_percent; } int scene06_updateCursor() { - g_fullpipe->updateCursorCommon(); + g_fp->updateCursorCommon(); if (g_vars->scene06_arcadeEnabled) { if (g_vars->scene06_aimingBall) { - g_fullpipe->_cursorId = PIC_CSR_ARCADE2_D; + g_fp->_cursorId = PIC_CSR_ARCADE2_D; return PIC_CSR_ARCADE2_D; } - if (g_fullpipe->_aniMan == (StaticANIObject *)g_fullpipe->_objectAtCursor) { - if (g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL && g_fullpipe->_cursorId == PIC_CSR_DEFAULT) { - g_fullpipe->_cursorId = PIC_CSR_ITN; + if (g_fp->_aniMan == (StaticANIObject *)g_fp->_objectAtCursor) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN6_BALL && g_fp->_cursorId == PIC_CSR_DEFAULT) { + g_fp->_cursorId = PIC_CSR_ITN; return PIC_CSR_ITN; } - } else if (g_fullpipe->_objectAtCursor && (StaticANIObject *)g_fullpipe->_objectAtCursor == g_vars->scene06_currentBall - && g_fullpipe->_cursorId == PIC_CSR_DEFAULT) { - g_fullpipe->_cursorId = PIC_CSR_ITN; + } else if (g_fp->_objectAtCursor && (StaticANIObject *)g_fp->_objectAtCursor == g_vars->scene06_currentBall + && g_fp->_cursorId == PIC_CSR_DEFAULT) { + g_fp->_cursorId = PIC_CSR_ITN; } } - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } void sceneHandler06_setExits(Scene *sc) { MotionController *mc = getSc2MctlCompoundBySceneId(sc->_sceneId); - mc->enableLinks(sO_CloseThing, (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone))); + mc->enableLinks(sO_CloseThing, (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone))); mc->enableLinks(sO_CloseThing2, g_vars->scene06_arcadeEnabled); } void sceneHandler06_winArcade() { - g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); + g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone)); - if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) - g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); + if (g_fp->getObjectState(sO_ClockAxis) == g_fp->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) + g_fp->setObjectState(sO_ClockAxis, g_fp->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); if (g_vars->scene06_arcadeEnabled) { - g_fullpipe->_aniMan->_callback2 = 0; + g_fp->_aniMan->_callback2 = 0; - g_fullpipe->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); if (g_vars->scene06_someBall) { g_vars->scene06_someBall->_flags &= 0xFFFB; @@ -116,7 +116,7 @@ void sceneHandler06_winArcade() { g_vars->scene06_mumsy->_flags &= 0xFFFB; - sceneHandler06_setExits(g_fullpipe->_currentScene); + sceneHandler06_setExits(g_fp->_currentScene); getCurrSceneSc2MotionController()->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); @@ -126,7 +126,7 @@ void sceneHandler06_enableDrops() { chainQueue(QU_SC6_DROPS, 0); g_vars->scene06_mumsy->changeStatics2(ST_MOM_SITS); - g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)); + g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)); chainQueue(QU_MOM_STANDUP, 1); @@ -136,7 +136,7 @@ void sceneHandler06_enableDrops() { g_vars->scene06_mumsyNumBalls = 0; g_vars->scene06_mumsyGotBall = false; - sceneHandler06_setExits(g_fullpipe->_currentScene); + sceneHandler06_setExits(g_fp->_currentScene); } void sceneHandler06_mumsyBallTake() { @@ -160,7 +160,7 @@ void sceneHandler06_mumsyBallTake() { break; } - MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact()); + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); ExCommand *ex = new ExCommand(ANI_MAMASHA, 2, 50, 0, 0, 0, 1, 0, 0, 0); @@ -168,10 +168,10 @@ void sceneHandler06_mumsyBallTake() { mq->addExCommandToEnd(ex); if (g_vars->scene06_mumsyNumBalls >= 5) { - g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsGone)); + g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone)); - if (g_fullpipe->getObjectState(sO_ClockAxis) == g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) - g_fullpipe->setObjectState(sO_ClockAxis, g_fullpipe->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); + if (g_fp->getObjectState(sO_ClockAxis) == g_fp->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) + g_fp->setObjectState(sO_ClockAxis, g_fp->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 2; @@ -228,29 +228,29 @@ void sceneHandler06_mumsyBallTake() { g_vars->scene06_mumsyNumBalls = 0; g_vars->scene06_arcadeEnabled = false; - g_fullpipe->_aniMan2 = 0; + g_fp->_aniMan2 = 0; } void sceneHandler06_spinHandle() { - int tummy = g_fullpipe->getObjectState(sO_TummyTrampie); - - if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) - g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)); - else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) - g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)); - else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) - g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)); - else if (tummy == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) - g_fullpipe->setObjectState(sO_TummyTrampie, g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)); + int tummy = g_fp->getObjectState(sO_TummyTrampie); + + if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) + g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)); + else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) + g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)); + else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) + g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)); + else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) + g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating)); } void sceneHandler06_uPipeClick() { if (getGameLoaderInteractionController()->_flag24) - handleObjectInteraction(g_fullpipe->_aniMan2, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC6_LADDER, 0), 0); + handleObjectInteraction(g_fp->_aniMan2, g_fp->_currentScene->getPictureObjectById(PIC_SC6_LADDER, 0), 0); } void sceneHandler06_buttonPush() { - g_vars->scene06_invHandle = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1); + g_vars->scene06_invHandle = g_fp->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1); if (g_vars->scene06_invHandle) if (g_vars->scene06_invHandle->_flags & 4) @@ -264,7 +264,7 @@ void sceneHandler06_showNextBall() { g_vars->scene06_currentBall = new StaticANIObject(g_vars->scene06_balls.front()); g_vars->scene06_balls.remove_at(0); - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1); mq->replaceKeyCode(-1, g_vars->scene06_currentBall->_okeyCode); mq->chain(0); @@ -280,10 +280,10 @@ void sceneHandler06_installHandle() { int sceneHandler06_updateScreenCallback() { int res; - res = g_fullpipe->drawArcadeOverlay(g_vars->scene06_arcadeEnabled); + res = g_fp->drawArcadeOverlay(g_vars->scene06_arcadeEnabled); if (!res) - g_fullpipe->_updateScreenCallback = 0; + g_fp->_updateScreenCallback = 0; return res; } @@ -292,13 +292,13 @@ void sceneHandler06_startAiming() { if (g_vars->scene06_currentBall) { g_vars->scene06_currentBall->hide(); - g_fullpipe->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1); + g_fp->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1); g_vars->scene06_ballInHands = g_vars->scene06_currentBall; g_vars->scene06_currentBall = 0; if (getCurrSceneSc2MotionController()->_isEnabled) - g_fullpipe->_updateScreenCallback = sceneHandler06_updateScreenCallback; + g_fp->_updateScreenCallback = sceneHandler06_updateScreenCallback; getCurrSceneSc2MotionController()->clearEnabled(); getGameLoaderInteractionController()->disableFlag24(); @@ -309,18 +309,18 @@ void sceneHandler06_startAiming() { void sceneHandler06_takeBall() { if (g_vars->scene06_currentBall && !g_vars->scene06_currentBall->_movement && g_vars->scene06_currentBall->_statics->_staticsId == ST_NBL_NORM) { - if (abs(1158 - g_fullpipe->_aniMan->_ox) > 1 - || abs(452 - g_fullpipe->_aniMan->_oy) > 1 - || g_fullpipe->_aniMan->_movement - || g_fullpipe->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) { - MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fullpipe->_aniMan, 1158, 452, 1, (0x4000 | ST_MAN_RIGHT)); + if (abs(1158 - g_fp->_aniMan->_ox) > 1 + || abs(452 - g_fp->_aniMan->_oy) > 1 + || g_fp->_aniMan->_movement + || g_fp->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) { + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 1158, 452, 1, (0x4000 | ST_MAN_RIGHT)); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC6_TAKEBALL, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; mq->addExCommandToEnd(ex); - postExCommand(g_fullpipe->_aniMan->_id, 2, 1158, 452, 0, -1); + postExCommand(g_fp->_aniMan->_id, 2, 1158, 452, 0, -1); } } else { sceneHandler06_startAiming(); @@ -330,18 +330,18 @@ void sceneHandler06_takeBall() { void sceneHandler06_aiming() { if (g_vars->scene06_ballInHands) { - g_vars->scene06_ballDeltaX = 4 * g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 16; - g_vars->scene06_ballDeltaY = 5 * (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex + 4); + g_vars->scene06_ballDeltaX = 4 * g_fp->_aniMan->_movement->_currDynamicPhaseIndex + 16; + g_vars->scene06_ballDeltaY = 5 * (g_fp->_aniMan->_movement->_currDynamicPhaseIndex + 4); - if (g_fullpipe->_aniMan->_movement->_currDynamicPhaseIndex < 4) { - g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(11); + if (g_fp->_aniMan->_movement->_currDynamicPhaseIndex < 4) { + g_fp->_aniMan->_movement->setDynamicPhaseIndex(11); g_vars->scene06_aimingBall = false; return; } - g_fullpipe->_aniMan->_movement->setDynamicPhaseIndex(9); + g_fp->_aniMan->_movement->setDynamicPhaseIndex(9); } g_vars->scene06_aimingBall = false; @@ -351,7 +351,7 @@ void sceneHandler06_ballStartFly() { if (g_vars->scene06_ballInHands) { g_vars->scene06_flyingBall = g_vars->scene06_ballInHands; g_vars->scene06_ballInHands = 0; - g_vars->scene06_flyingBall->show1(g_fullpipe->_aniMan->_ox - 60, g_fullpipe->_aniMan->_oy - 60, -1, 0); + g_vars->scene06_flyingBall->show1(g_fp->_aniMan->_ox - 60, g_fp->_aniMan->_oy - 60, -1, 0); g_vars->scene06_flyingBall->_priority = 27; } @@ -359,10 +359,10 @@ void sceneHandler06_ballStartFly() { void sceneHandler06_throwCallback(int *arg) { if (g_vars->scene06_aimingBall) { - int dist = (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) - * (g_fullpipe->_mouseVirtY - g_vars->scene06_sceneClickY) - + (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX) - * (g_fullpipe->_mouseVirtX - g_vars->scene06_sceneClickX); + int dist = (g_fp->_mouseVirtY - g_vars->scene06_sceneClickY) + * (g_fp->_mouseVirtY - g_vars->scene06_sceneClickY) + + (g_fp->_mouseVirtX - g_vars->scene06_sceneClickX) + * (g_fp->_mouseVirtX - g_vars->scene06_sceneClickX); *arg = (int)(sqrt((double)dist) * 0.1); @@ -376,15 +376,15 @@ void sceneHandler06_throwCallback(int *arg) { } void sceneHandler06_throwBall() { - g_fullpipe->_aniMan->_callback2 = sceneHandler06_throwCallback; - g_fullpipe->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1); + g_fp->_aniMan->_callback2 = sceneHandler06_throwCallback; + g_fp->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1); g_vars->scene06_aimingBall = true; } void sceneHandler06_eggieWalk() { - if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_fullpipe->_rnd->getRandomNumber(9)) { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1); + if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_fp->_rnd->getRandomNumber(9)) { + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1); if (!ani || !(ani->_flags & 4)) { if (g_vars->scene06_eggieDirection) @@ -410,7 +410,7 @@ void sceneHandler06_fallBall() { g_vars->scene06_flyingBall->setOXY(g_vars->scene06_ballX, g_vars->scene06_ballY); - MessageQueue *mq = new MessageQueue(g_fullpipe->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1); + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1); mq->replaceKeyCode(-1, g_vars->scene06_flyingBall->_okeyCode); mq->chain(0); @@ -524,19 +524,19 @@ void scene06_initScene(Scene *sc) { g_vars->scene06_balls.push_back(ball2); } - if (g_fullpipe->getObjectState(sO_BigMumsy) == g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)) - g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)); + if (g_fp->getObjectState(sO_BigMumsy) == g_fp->getObjectEnumState(sO_BigMumsy, sO_IsPlaying)) + g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)); - if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) + if (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) g_vars->scene06_mumsy->hide(); - g_fullpipe->lift_setButton(sO_Level3, ST_LBN_3N); - g_fullpipe->lift_sub5(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT); - g_fullpipe->initArcadeKeys("SC_6"); + g_fp->lift_setButton(sO_Level3, ST_LBN_3N); + g_fp->lift_sub5(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT); + g_fp->initArcadeKeys("SC_6"); sceneHandler06_setExits(sc); - g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE2); + g_fp->setArcadeOverlay(PIC_CSR_ARCADE2); } int sceneHandler06(ExCommand *ex) { @@ -545,11 +545,11 @@ int sceneHandler06(ExCommand *ex) { switch(ex->_messageNum) { case MSG_LIFT_CLOSEDOOR: - g_fullpipe->lift_closedoorSeq(); + g_fp->lift_closedoorSeq(); break; case MSG_LIFT_EXITLIFT: - g_fullpipe->lift_exitSeq(ex); + g_fp->lift_exitSeq(ex); break; case MSG_CMN_WINARCADE: @@ -557,18 +557,18 @@ int sceneHandler06(ExCommand *ex) { break; case MSG_LIFT_STARTEXITQUEUE: - g_fullpipe->lift_startExitQueue(); + g_fp->lift_startExitQueue(); break; case MSG_SC6_RESTORESCROLL: - g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; + g_fp->_aniMan2 = g_fp->_aniMan; getCurrSceneSc2MotionController()->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); - sceneHandler06_setExits(g_fullpipe->_currentScene); + sceneHandler06_setExits(g_fp->_currentScene); break; case MSG_SC6_STARTDROPS: - if (g_fullpipe->getObjectState(sO_BigMumsy) == g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) + if (g_fp->getObjectState(sO_BigMumsy) == g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping)) sceneHandler06_enableDrops(); break; @@ -590,7 +590,7 @@ int sceneHandler06(ExCommand *ex) { break; case MSG_LIFT_CLICKBUTTON: - g_fullpipe->lift_animation3(); + g_fp->lift_animation3(); break; case MSG_SPINHANDLE: @@ -598,7 +598,7 @@ int sceneHandler06(ExCommand *ex) { break; case MSG_LIFT_GO: - g_fullpipe->lift_goAnimation(); + g_fp->lift_goAnimation(); break; case MSG_SC6_UTRUBACLICK: @@ -622,7 +622,7 @@ int sceneHandler06(ExCommand *ex) { break; case 64: - g_fullpipe->lift_sub05(ex); + g_fp->lift_sub05(ex); break; case MSG_SC6_TAKEBALL: @@ -643,11 +643,11 @@ int sceneHandler06(ExCommand *ex) { case 29: { - StaticANIObject *st = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + StaticANIObject *st = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); if (st) { if (!g_vars->scene06_arcadeEnabled && st->_id == ANI_LIFTBUTTON) { - g_fullpipe->lift_sub1(st); + g_fp->lift_sub1(st); ex->_messageKind = 0; return 0; } @@ -657,7 +657,7 @@ int sceneHandler06(ExCommand *ex) { sceneHandler06_takeBall(); ex->_messageKind = 0; - } else if (g_vars->scene06_ballInHands && g_fullpipe->_aniMan == st && !g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_statics->_staticsId == ST_MAN6_BALL) { + } else if (g_vars->scene06_ballInHands && g_fp->_aniMan == st && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN6_BALL) { g_vars->scene06_sceneClickX = ex->_sceneClickX; g_vars->scene06_sceneClickY = ex->_sceneClickY; @@ -665,15 +665,15 @@ int sceneHandler06(ExCommand *ex) { } } - if (!st || !canInteractAny(g_fullpipe->_aniMan, st, ex->_keyCode)) { - int picId = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); - PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picId, 0); + if (!st || !canInteractAny(g_fp->_aniMan, st, ex->_keyCode)) { + int picId = g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); + PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0); - if (!pic || !canInteractAny(g_fullpipe->_aniMan, pic, ex->_keyCode)) { - if ((g_fullpipe->_sceneRect.right - ex->_sceneClickX < 47 - && g_fullpipe->_sceneRect.right < g_fullpipe->_sceneWidth - 1) - || (ex->_sceneClickX - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0)) { - g_fullpipe->processArcade(ex); + if (!pic || !canInteractAny(g_fp->_aniMan, pic, ex->_keyCode)) { + if ((g_fp->_sceneRect.right - ex->_sceneClickX < 47 + && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) + || (ex->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) { + g_fp->processArcade(ex); return 0; } } @@ -686,29 +686,29 @@ int sceneHandler06(ExCommand *ex) { { int res = 0; - if (g_fullpipe->_aniMan2) { - int ox = g_fullpipe->_aniMan2->_ox; - int oy = g_fullpipe->_aniMan2->_oy; + if (g_fp->_aniMan2) { + int ox = g_fp->_aniMan2->_ox; + int oy = g_fp->_aniMan2->_oy; g_vars->scene06_manX = ox; g_vars->scene06_manY = oy; if (g_vars->scene06_arcadeEnabled && oy <= 470 && ox >= 1088) { - if (ox < g_fullpipe->_sceneRect.left + 600) { - g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 700; + if (ox < g_fp->_sceneRect.left + 600) { + g_fp->_currentScene->_x = ox - g_fp->_sceneRect.left - 700; ox = g_vars->scene06_manX; } - if (ox > g_fullpipe->_sceneRect.right - 50) - g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.right + 70; + if (ox > g_fp->_sceneRect.right - 50) + g_fp->_currentScene->_x = ox - g_fp->_sceneRect.right + 70; } else { - if (ox < g_fullpipe->_sceneRect.left + 200) { - g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.left - 300; + if (ox < g_fp->_sceneRect.left + 200) { + g_fp->_currentScene->_x = ox - g_fp->_sceneRect.left - 300; ox = g_vars->scene06_manX; } - if (ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = ox - g_fullpipe->_sceneRect.right + 300; + if (ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = ox - g_fp->_sceneRect.right + 300; } res = 1; @@ -757,8 +757,8 @@ int sceneHandler06(ExCommand *ex) { && !g_vars->scene06_mumsy->_movement && !g_vars->scene06_mumsyGotBall) sceneHandler06_mumsyBallTake(); - g_fullpipe->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); return res; } diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index 60d6a9b3df..ba4121944e 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -38,24 +38,24 @@ void scene07_initScene(Scene *sc) { g_vars->scene07_lukePercent = 0; g_vars->scene07_plusMinus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1); - if (g_fullpipe->getObjectState(sO_Guard_1) == g_fullpipe->getObjectEnumState(sO_Guard_1, sO_Off)) + if (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_Off)) g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_MINUS); else g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_PLUS); - if (g_fullpipe->getObjectState(sO_HareTheNooksiter) == g_fullpipe->getObjectEnumState(sO_HareTheNooksiter, sO_WithoutHandle)) { - Scene *oldsc = g_fullpipe->_currentScene; + if (g_fp->getObjectState(sO_HareTheNooksiter) == g_fp->getObjectEnumState(sO_HareTheNooksiter, sO_WithoutHandle)) { + Scene *oldsc = g_fp->_currentScene; - g_fullpipe->_currentScene = sc; + g_fp->_currentScene = sc; sc->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->changeStatics2(ST_CST_HANDLELESS); - g_fullpipe->_currentScene = oldsc; + g_fp->_currentScene = oldsc; } } void sceneHandler07_openLuke() { - StaticANIObject *luke = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1); + StaticANIObject *luke = g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1); luke->changeStatics2(ST_LUK_OPEN); luke->show1(-1, -1, -1, 0); @@ -63,40 +63,40 @@ void sceneHandler07_openLuke() { if (g_vars->scene07_lukeAnim) { g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent; } else { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); - g_vars->scene07_lukeAnim = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); + g_vars->scene07_lukeAnim = g_fp->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent; } } void sceneHandler07_closeLuke() { - g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->changeStatics2(ST_LUK_CLOSED); + g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->changeStatics2(ST_LUK_CLOSED); if (!g_vars->scene07_lukeAnim) { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1); - g_vars->scene07_lukeAnim = g_fullpipe->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); + g_vars->scene07_lukeAnim = g_fp->_behaviorManager->getBehaviorEntryInfoByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE); } g_vars->scene07_lukePercent = g_vars->scene07_lukeAnim->_percent; g_vars->scene07_lukeAnim->_percent = 0; - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); ani->changeStatics2(ST_HGN_LUKE); ani->show1(-1, -1, -1, 0); } void sceneHandler07_hideLuke() { - g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->hide(); + g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->hide(); - Movement *mov = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->_movement; + Movement *mov = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->_movement; if (mov) { if (mov->_id == MV_CST_CLOSELUKE) { - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1); ani->changeStatics2(ST_HGN_LOOK); ani->_flags &= 0xFFFB; @@ -105,14 +105,14 @@ void sceneHandler07_hideLuke() { } void sceneHandler07_showBox() { - StaticANIObject *box = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1); + StaticANIObject *box = g_fp->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1); box->show1(492, 474, MV_SC7_BOX_default, 0); box->_priority = 25; } void sceneHandler07_hideBox() { - g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1)->hide(); + g_fp->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1)->hide(); } int sceneHandler07(ExCommand *ex) { @@ -152,17 +152,17 @@ int sceneHandler07(ExCommand *ex) { { int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } - g_fullpipe->_behaviorManager->updateBehaviors(); + g_fp->_behaviorManager->updateBehaviors(); return res; } diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index e9bc1e6467..b6670b76c7 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -46,28 +46,28 @@ void scene08_initScene(Scene *sc) { g_vars->scene08_var04 = -37; g_vars->scene08_var05 = -1; - Scene *oldsc = g_fullpipe->_currentScene; - g_fullpipe->_currentScene = sc; + Scene *oldsc = g_fp->_currentScene; + g_fp->_currentScene = sc; - int batuta = g_fullpipe->getObjectState(sO_TummyTrampie); + int batuta = g_fp->getObjectState(sO_TummyTrampie); MovGraphLink *lock = getSc2MctlCompoundBySceneId(sc->_sceneId)->getLinkByName(sO_CloseThing); if (lock) lock->_flags &= 0xDFFFFFFF; - if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) { + if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) { g_vars->scene08_batuta->changeStatics2(ST_BTT_SPOON); - } else if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) { + } else if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) { g_vars->scene08_batuta->changeStatics2(ST_BTT_NOSPOON); g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); g_vars->scene08_clock->_movement->setDynamicPhaseIndex(3); - } else if (batuta== g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) { + } else if (batuta== g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) { g_vars->scene08_batuta->changeStatics2(ST_BTT_CHESHET); g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); g_vars->scene08_clock->_movement->setDynamicPhaseIndex(8); - } else if (batuta == g_fullpipe->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) { + } else if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) { g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS); g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1); @@ -81,7 +81,7 @@ void scene08_initScene(Scene *sc) { g_vars->scene08_clock->_callback2 = 0; - if (g_fullpipe->getObjectState(sO_StairsUp_8) == g_fullpipe->getObjectEnumState(sO_StairsUp_8, sO_Broken)) { + if (g_fp->getObjectState(sO_StairsUp_8) == g_fp->getObjectEnumState(sO_StairsUp_8, sO_Broken)) { g_vars->scene08_var07 = 0; sc->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; @@ -93,12 +93,12 @@ void scene08_initScene(Scene *sc) { sc->getPictureObjectById(PIC_SC8_ARCADENOW, 0)->_flags &= 0xFFFB; - g_fullpipe->_currentScene = oldsc; + g_fp->_currentScene = oldsc; - g_fullpipe->_floaters->init(g_fullpipe->getGameLoaderGameVar()->getSubVarByName("SC_8")); - g_fullpipe->_floaters->genFlies(sc, 100, 100, 0, 0); + g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_8")); + g_fp->_floaters->genFlies(sc, 100, 100, 0, 0); - g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE3); + g_fp->setArcadeOverlay(PIC_CSR_ARCADE3); } void scene08_setupMusic() { @@ -108,9 +108,9 @@ void scene08_setupMusic() { int scene08_updateCursor() { warning("STUB: scene08_updateCursor()"); - g_fullpipe->updateCursorCommon(); + g_fp->updateCursorCommon(); - return g_fullpipe->_cursorId; + return g_fp->_cursorId; } void sceneHandler08_winArcade() { @@ -245,52 +245,52 @@ int sceneHandler08(ExCommand *cmd) { { int res = 0; - if (g_fullpipe->_aniMan2) { + if (g_fp->_aniMan2) { if (g_vars->scene08_var06) { - int scHeight = g_fullpipe->_sceneRect.bottom - g_fullpipe->_sceneRect.top; + int scHeight = g_fp->_sceneRect.bottom - g_fp->_sceneRect.top; - if (g_fullpipe->_aniMan2->_oy < g_fullpipe->_sceneRect.top + 200) { - g_fullpipe->_sceneRect.top = g_fullpipe->_aniMan2->_oy - 200; + if (g_fp->_aniMan2->_oy < g_fp->_sceneRect.top + 200) { + g_fp->_sceneRect.top = g_fp->_aniMan2->_oy - 200; - if (g_fullpipe->_sceneRect.top < 0) - g_fullpipe->_sceneRect.top = 0; + if (g_fp->_sceneRect.top < 0) + g_fp->_sceneRect.top = 0; - g_fullpipe->_sceneRect.bottom = scHeight + g_fullpipe->_sceneRect.top; + g_fp->_sceneRect.bottom = scHeight + g_fp->_sceneRect.top; } - if (g_fullpipe->_aniMan2->_oy > g_fullpipe->_sceneRect.bottom - 350) { - g_fullpipe->_sceneRect.bottom = g_fullpipe->_aniMan2->_oy + 350; - g_fullpipe->_sceneRect.top = g_fullpipe->_aniMan2->_oy + 350 - scHeight; + if (g_fp->_aniMan2->_oy > g_fp->_sceneRect.bottom - 350) { + g_fp->_sceneRect.bottom = g_fp->_aniMan2->_oy + 350; + g_fp->_sceneRect.top = g_fp->_aniMan2->_oy + 350 - scHeight; } } else { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } } - g_fullpipe->_floaters->update(); + g_fp->_floaters->update(); if (g_vars->scene08_var06) { if (g_vars->scene08_var01) sceneHandler08_calcFlight(); } else { - Movement *mov = g_fullpipe->_aniMan->_movement; + Movement *mov = g_fp->_aniMan->_movement; if (mov) { if (mov->_id == MV_MAN_TOLADDERD && mov->_currDynamicPhaseIndex == 8) - g_fullpipe->_aniMan->_priority = 2; + g_fp->_aniMan->_priority = 2; if (mov && mov->_id == MV_MAN_FROMLADDERUP && mov->_currDynamicPhaseIndex == 13) - g_fullpipe->_aniMan->_priority = 20; + g_fp->_aniMan->_priority = 20; } - g_fullpipe->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); } if (g_vars->scene08_var02) @@ -300,7 +300,7 @@ int sceneHandler08(ExCommand *cmd) { g_vars->scene08_var05--; if (!g_vars->scene08_var05) { - g_fullpipe->playSound(SND_8_014, 0); + g_fp->playSound(SND_8_014, 0); g_vars->scene08_var05 = 71; } diff --git a/engines/fullpipe/scenes/sceneDbg.cpp b/engines/fullpipe/scenes/sceneDbg.cpp index 83f3b64ee5..518ef0d13b 100644 --- a/engines/fullpipe/scenes/sceneDbg.cpp +++ b/engines/fullpipe/scenes/sceneDbg.cpp @@ -40,9 +40,9 @@ void sceneDbgMenu_initScene(Scene *sc) { } GameObject *sceneHandlerDbgMenu_getObjectAtXY(int x, int y) { - if (g_fullpipe->_currentScene) - for (uint i = 0; i < g_fullpipe->_currentScene->_picObjList.size(); i++) { - PictureObject *pic = (PictureObject *)g_fullpipe->_currentScene->_picObjList[i]; + if (g_fp->_currentScene) + for (uint i = 0; i < g_fp->_currentScene->_picObjList.size(); i++) { + PictureObject *pic = (PictureObject *)g_fp->_currentScene->_picObjList[i]; if (x >= pic->_ox && y >= pic->_oy) { Common::Point point; @@ -61,8 +61,8 @@ int sceneHandlerDbgMenu(ExCommand *ex) { if (ex->_messageKind != 17) return 0; - int mx = g_fullpipe->_mouseScreenPos.x + g_fullpipe->_sceneRect.left; - int my = g_fullpipe->_mouseScreenPos.y + g_fullpipe->_sceneRect.top; + int mx = g_fp->_mouseScreenPos.x + g_fp->_sceneRect.left; + int my = g_fp->_mouseScreenPos.y + g_fp->_sceneRect.top; if (ex->_messageNum == 29) { GameObject *obj = sceneHandlerDbgMenu_getObjectAtXY(mx, my); @@ -74,18 +74,18 @@ int sceneHandlerDbgMenu(ExCommand *ex) { } if (ex->_messageNum != 33) { if (ex->_messageNum == MSG_RESTARTGAME) { - g_fullpipe->_needRestart = true; + g_fp->_needRestart = true; return 0; } return 0; } - g_fullpipe->_cursorId = PIC_CSR_DEFAULT; - GameObject *obj = g_fullpipe->_currentScene->getStaticANIObjectAtPos(mx, my); + g_fp->_cursorId = PIC_CSR_DEFAULT; + GameObject *obj = g_fp->_currentScene->getStaticANIObjectAtPos(mx, my); if (obj) { if (canInteractAny(0, obj, -3)) { - g_fullpipe->_cursorId = PIC_CSR_DEFAULT; - g_fullpipe->setCursor(PIC_CSR_DEFAULT); + g_fp->_cursorId = PIC_CSR_DEFAULT; + g_fp->setCursor(PIC_CSR_DEFAULT); return 0; } } else { @@ -93,13 +93,13 @@ int sceneHandlerDbgMenu(ExCommand *ex) { if (obj && canInteractAny(0, obj, -3) ) { g_vars->selector->_flags |= 4; g_vars->selector->setOXY(obj->_ox, obj->_oy); - g_fullpipe->_cursorId = PIC_CSR_DEFAULT; - g_fullpipe->setCursor(PIC_CSR_DEFAULT); + g_fp->_cursorId = PIC_CSR_DEFAULT; + g_fp->setCursor(PIC_CSR_DEFAULT); return 0; } g_vars->selector->_flags &= 0xFFFB; } - g_fullpipe->setCursor(g_fullpipe->_cursorId); + g_fp->setCursor(g_fp->_cursorId); return 0; } diff --git a/engines/fullpipe/scenes/sceneIntro.cpp b/engines/fullpipe/scenes/sceneIntro.cpp index d60f90faf7..368ca43abd 100644 --- a/engines/fullpipe/scenes/sceneIntro.cpp +++ b/engines/fullpipe/scenes/sceneIntro.cpp @@ -31,13 +31,13 @@ namespace Fullpipe { int sceneIntro_updateCursor() { - g_fullpipe->_cursorId = 0; + g_fp->_cursorId = 0; return 0; } void sceneIntro_initScene(Scene *sc) { - g_fullpipe->_gameLoader->loadScene(SC_INTRO2); + g_fp->_gameLoader->loadScene(SC_INTRO2); g_vars->sceneIntro_aniin1man = sc->getStaticANIObject1ById(ANI_IN1MAN, -1); g_vars->sceneIntro_needSleep = true; @@ -45,19 +45,19 @@ void sceneIntro_initScene(Scene *sc) { g_vars->sceneIntro_playing = true; g_vars->sceneIntro_needBlackout = false; - if (g_fullpipe->_recordEvents || g_fullpipe->_inputArFlag) + if (g_fp->_recordEvents || g_fp->_inputArFlag) g_vars->sceneIntro_skipIntro = false; - g_fullpipe->_modalObject = new ModalIntro; + g_fp->_modalObject = new ModalIntro; } void sceneHandlerIntro_part1() { - g_fullpipe->_currentScene = g_fullpipe->accessScene(SC_INTRO1); + g_fp->_currentScene = g_fp->accessScene(SC_INTRO1); chainQueue(QU_INTR_FINISH, 0); } void sceneHandlerIntro_part2() { - g_fullpipe->_currentScene = g_fullpipe->accessScene(SC_INTRO2); + g_fp->_currentScene = g_fp->accessScene(SC_INTRO2); chainQueue(QU_IN2_DO, 0); } @@ -101,7 +101,7 @@ int sceneHandlerIntro(ExCommand *ex) { chainQueue(QU_INTR_GETUPMAN, 0); } - g_fullpipe->startSceneTrack(); + g_fp->startSceneTrack(); return 0; } diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp index 36f6030935..de0a666974 100644 --- a/engines/fullpipe/sound.cpp +++ b/engines/fullpipe/sound.cpp @@ -86,7 +86,7 @@ bool Sound::load(MfcArchive &file, NGIArchive *archive) { _id = file.readUint32LE(); _description = file.readPascalString(); - assert(g_fullpipe->_gameProjectVersion >= 6); + assert(g_fp->_gameProjectVersion >= 6); _objectId = file.readUint16LE(); diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp index 747015e9a1..6a56ffd662 100644 --- a/engines/fullpipe/stateloader.cpp +++ b/engines/fullpipe/stateloader.cpp @@ -115,25 +115,25 @@ bool GameProject::load(MfcArchive &file) { _headerFilename = 0; _field_10 = 12; - g_fullpipe->_gameProjectVersion = file.readUint32LE(); - g_fullpipe->_pictureScale = file.readUint16LE(); - g_fullpipe->_scrollSpeed = file.readUint32LE(); + g_fp->_gameProjectVersion = file.readUint32LE(); + g_fp->_pictureScale = file.readUint16LE(); + g_fp->_scrollSpeed = file.readUint32LE(); _headerFilename = file.readPascalString(); - debug(1, "_gameProjectVersion = %d", g_fullpipe->_gameProjectVersion); - debug(1, "_pictureScale = %d", g_fullpipe->_pictureScale); - debug(1, "_scrollSpeed = %d", g_fullpipe->_scrollSpeed); + debug(1, "_gameProjectVersion = %d", g_fp->_gameProjectVersion); + debug(1, "_pictureScale = %d", g_fp->_pictureScale); + debug(1, "_scrollSpeed = %d", g_fp->_scrollSpeed); debug(1, "_headerFilename = %s", _headerFilename); _sceneTagList = new SceneTagList(); _sceneTagList->load(file); - if (g_fullpipe->_gameProjectVersion >= 3) + if (g_fp->_gameProjectVersion >= 3) _field_4 = file.readUint32LE(); - if (g_fullpipe->_gameProjectVersion >= 5) { + if (g_fp->_gameProjectVersion >= 5) { file.readUint32LE(); file.readUint32LE(); } diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp index 12c56fe429..2af9cff743 100644 --- a/engines/fullpipe/statics.cpp +++ b/engines/fullpipe/statics.cpp @@ -191,7 +191,7 @@ bool StaticANIObject::load(MfcArchive &file) { char *movname = genFileName(_id, movNum, "mov"); - Common::SeekableReadStream *f = g_fullpipe->_currArchive->createReadStreamForMember(movname); + Common::SeekableReadStream *f = g_fp->_currArchive->createReadStreamForMember(movname); Movement *mov = new Movement(); @@ -249,11 +249,11 @@ void StaticANIObject::setFlags40(bool state) { void StaticANIObject::deleteFromGlobalMessageQueue() { while (_messageQueueId) { - if (g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId)) { + if (g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId)) { if (!isIdle()) return; - g_fullpipe->_globalMessageQueueList->deleteQueueById(_messageQueueId); + g_fp->_globalMessageQueueList->deleteQueueById(_messageQueueId); } else { _messageQueueId = 0; } @@ -285,7 +285,7 @@ MessageQueue *StaticANIObject::getMessageQueue() { if (this->_messageQueueId <= 0) return 0; - return g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId); + return g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId); } bool StaticANIObject::trySetMessageQueue(int msgNum, int qId) { @@ -304,7 +304,7 @@ bool StaticANIObject::trySetMessageQueue(int msgNum, int qId) { bool StaticANIObject::isIdle() { if (_messageQueueId) { - MessageQueue *m = g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId); + MessageQueue *m = g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId); if (m && m->getFlags() & 1) return false; @@ -429,7 +429,7 @@ void Movement::draw(bool flipFlag, int angle) { int y = _oy - point.y; if (_currDynamicPhase->getPaletteData()) - g_fullpipe->_globalPalette = _currDynamicPhase->getPaletteData(); + g_fp->_globalPalette = _currDynamicPhase->getPaletteData(); if (_currDynamicPhase->getAlpha() < 0xFF) { warning("Movement::draw: alpha < 0xff: %d", _currDynamicPhase->getAlpha()); @@ -499,7 +499,7 @@ void StaticANIObject::draw() { debug(6, "StaticANIObject::draw() (%s) [%d] [%d, %d]", transCyrillic((byte *)_objectName), _id, _ox, _oy); - if (_shadowsOn && g_fullpipe->_currentScene && g_fullpipe->_currentScene->_shadows + if (_shadowsOn && g_fp->_currentScene && g_fp->_currentScene->_shadows && (getCurrDimensions(point)->x != 1 || getCurrDimensions(point)->y != 1)) { DynamicPhase *dyn; @@ -517,7 +517,7 @@ void StaticANIObject::draw() { if (dyn->getDynFlags() & 4) { rect = *dyn->_rect; - DynamicPhase *shd = g_fullpipe->_currentScene->_shadows->findSize(rect.width(), rect.height()); + DynamicPhase *shd = g_fp->_currentScene->_shadows->findSize(rect.width(), rect.height()); if (shd) { shd->getDimensions(&point); int midx = _ox - point.x / 2 - dyn->_someX; @@ -573,7 +573,7 @@ void StaticANIObject::draw2() { } MovTable *StaticANIObject::countMovements() { - GameVar *preloadSubVar = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("PRELOAD"); + GameVar *preloadSubVar = g_fp->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("PRELOAD"); if (!preloadSubVar || preloadSubVar->getSubVarsCount() == 0) return 0; @@ -599,7 +599,7 @@ MovTable *StaticANIObject::countMovements() { } void StaticANIObject::setSpeed(int speed) { - GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("SpeedUp"); + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName(getName())->getSubVarByName("SpeedUp"); if (!var) return; @@ -886,15 +886,15 @@ void StaticANIObject::changeStatics2(int objId) { deleteFromGlobalMessageQueue(); if (_movement || _statics) { - g_fullpipe->_mgm->addItem(_id); - g_fullpipe->_mgm->updateAnimStatics(this, objId); + g_fp->_mgm->addItem(_id); + g_fp->_mgm->updateAnimStatics(this, objId); } else { _statics = getStaticsById(objId); } if (_messageQueueId) { - if (g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId)) - g_fullpipe->_globalMessageQueueList->deleteQueueById(_messageQueueId); + if (g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId)) + g_fp->_globalMessageQueueList->deleteQueueById(_messageQueueId); _messageQueueId = 0; } @@ -1376,10 +1376,10 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) { _flipFlag = 1; } - if (g_fullpipe->_gameProjectVersion >= 8) + if (g_fp->_gameProjectVersion >= 8) _field_50 = file.readUint32LE(); - if (g_fullpipe->_gameProjectVersion < 12) + if (g_fp->_gameProjectVersion < 12) _counterMax = 83; else _counterMax = file.readUint32LE(); @@ -1817,9 +1817,9 @@ DynamicPhase::DynamicPhase(DynamicPhase *src, bool reverse) { _data = _bitmap->_pixels; _dataSize = src->_dataSize; - if (g_fullpipe->_currArchive) { + if (g_fp->_currArchive) { _mfield_14 = 0; - _libHandle = g_fullpipe->_currArchive; + _libHandle = g_fp->_currArchive; } _mflags |= 1; @@ -1877,12 +1877,12 @@ bool DynamicPhase::load(MfcArchive &file) { _rect->right = file.readUint32LE(); _rect->bottom = file.readUint32LE(); - assert (g_fullpipe->_gameProjectVersion >= 1); + assert (g_fp->_gameProjectVersion >= 1); _someX = file.readUint32LE(); _someY = file.readUint32LE(); - assert (g_fullpipe->_gameProjectVersion >= 12); + assert (g_fp->_gameProjectVersion >= 12); _dynFlags = file.readUint32LE(); @@ -1909,13 +1909,13 @@ bool StaticPhase::load(MfcArchive &file) { _initialCountdown = file.readUint16LE(); _field_6A = file.readUint16LE(); - if (g_fullpipe->_gameProjectVersion >= 12) { + if (g_fp->_gameProjectVersion >= 12) { _exCommand = (ExCommand *)file.readClass(); return true; } - assert (g_fullpipe->_gameProjectVersion >= 12); + assert (g_fp->_gameProjectVersion >= 12); return true; } diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp index 3a65801951..b3668ea362 100644 --- a/engines/fullpipe/utils.cpp +++ b/engines/fullpipe/utils.cpp @@ -138,9 +138,9 @@ bool MemoryObject::load(MfcArchive &file) { } } - if (g_fullpipe->_currArchive) { + if (g_fp->_currArchive) { _mfield_14 = 0; - _libHandle = g_fullpipe->_currArchive; + _libHandle = g_fp->_currArchive; } return true; @@ -153,12 +153,12 @@ void MemoryObject::loadFile(char *filename) { return; if (!_data) { - NGIArchive *arr = g_fullpipe->_currArchive; + NGIArchive *arr = g_fp->_currArchive; - if (g_fullpipe->_currArchive != _libHandle && _libHandle) - g_fullpipe->_currArchive = _libHandle; + if (g_fp->_currArchive != _libHandle && _libHandle) + g_fp->_currArchive = _libHandle; - Common::SeekableReadStream *s = g_fullpipe->_currArchive->createReadStreamForMember(filename); + Common::SeekableReadStream *s = g_fp->_currArchive->createReadStreamForMember(filename); if (s) { assert(s->size() > 0); @@ -174,7 +174,7 @@ void MemoryObject::loadFile(char *filename) { warning("MemoryObject::loadFile(): reading failure"); } - g_fullpipe->_currArchive = arr; + g_fp->_currArchive = arr; } } -- cgit v1.2.3 From ede3e0c3f84b1e7114226d90cb40f585a5feaa90 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 21 Dec 2013 16:43:43 +0200 Subject: FULLPIPE: More renames --- engines/fullpipe/scenes/scene10.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index ffa127c461..444b51f0a2 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -40,10 +40,10 @@ void scene10_initScene(Scene *sc) { g_vars->scene10_inflater = sc->getStaticANIObject1ById(sc, ANI_NADUVATEL, -1); g_vars->scene10_ladder = sc->getPictureObjectById(sc, PIC_SC10_LADDER, 0); - g_fullpipe->lift_setButton(sO_Level1, ST_LBN_1N); - g_fullpipe->lift_sub5(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT); + g_fp->lift_setButton(sO_Level1, ST_LBN_1N); + g_fp->lift_sub5(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT); - if (g_fullpipe->getObjectState(sO_Inflater) == g_fullpipe->getObjectEnumState(sO_Inflater, sO_WithGum)) { + if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum)) { g_vars->scene10_hasGum = 1; } else { g_vars->scene10_hasGum = 0; @@ -103,14 +103,14 @@ int sceneHandler10(ExCommand *ex) { break; case 29: - if (g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) { - handleObjectInteraction(g_aniMan, g_fullpipe->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_keyCode); + if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) { + handleObjectInteraction(g_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_keyCode); ex->_messageKind = 0; return 0; } - StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); if (ani && ani->_id == ANI_LIFTBUTTON) { lift_sub1(ani); @@ -124,18 +124,18 @@ int sceneHandler10(ExCommand *ex) { { int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300; + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; - if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200) - g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300; + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; res = 1; } - g_fullpipe->_behaviorManager->updateBehaviors(); - g_fullpipe->startSceneTrack(); + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); return res; } -- cgit v1.2.3 From cba54cce9821dcfbabce18ed2c6ca995de4525dd Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 21 Dec 2013 17:18:06 +0200 Subject: FULLPIPE: Plug scene10 in --- engines/fullpipe/constants.h | 13 ++++++++ engines/fullpipe/module.mk | 1 + engines/fullpipe/scenes.cpp | 7 +++++ engines/fullpipe/scenes.h | 7 +++++ engines/fullpipe/scenes/scene10.cpp | 60 +++++++++++++++++++++++-------------- 5 files changed, 66 insertions(+), 22 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 984e024a26..49f9a33209 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -39,6 +39,7 @@ namespace Fullpipe { #define ANI_DADAYASHIK 306 #define ANI_EGGEATER 334 #define ANI_EGGIE 4929 +#define ANI_GUM 978 #define ANI_HAND 601 #define ANI_HANDLE 622 #define ANI_HOOLIGAN 808 @@ -57,8 +58,11 @@ namespace Fullpipe { #define ANI_MAMASHA 656 #define ANI_MAMASHA_4 660 #define ANI_MAN 322 +#define ANI_NADUVATEL 944 #define ANI_NEWBALL 1073 #define ANI_OTMOROZ 419 +#define ANI_PACHKA 975 +#define ANI_PACHKA2 3008 #define ANI_PLANK 501 #define ANI_PLUSMINUS 2938 #define ANI_SC2_BOX 1020 @@ -145,6 +149,11 @@ namespace Fullpipe { #define MSG_SC8_HIDELADDER_D 1107 #define MSG_SC8_RESUMEFLIGHT 784 #define MSG_SC8_STANDUP 2976 +#define MSG_SC10_CLICKGUM 992 +#define MSG_SC10_HIDEGUM 993 +#define MSG_SC10_LADDERTOBACK 3002 +#define MSG_SC10_LADDERTOFORE 3004 +#define MSG_SC10_SHOWGUM 994 #define MSG_GOTOLADDER 618 #define MSG_SHAKEBOTTLE 584 #define MSG_SHOOTKOZAW 557 @@ -278,6 +287,8 @@ namespace Fullpipe { #define PIC_SC6_LADDER 1104 #define PIC_SC8_ARCADENOW 1043 #define PIC_SC8_LADDER 754 +#define PIC_SC10_DTRUBA 974 +#define PIC_SC10_LADDER 995 #define PIC_SCD_SEL 734 #define QU_BALL_WALKL 4920 #define QU_BALL_WALKR 4919 @@ -318,6 +329,8 @@ namespace Fullpipe { #define QU_SC6_FALLBALL 2690 #define QU_SC6_SHOWHANDLE 1689 #define QU_SC6_SHOWNEXTBALL 2689 +#define QU_SC10_ENTERLIFT 1067 +#define QU_SC10_EXITLIFT 2809 #define SC_1 301 #define SC_10 653 #define SC_11 654 diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index d3af88d242..465a0130c2 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -32,6 +32,7 @@ MODULE_OBJS = \ scenes/scene06.o \ scenes/scene07.o \ scenes/scene08.o \ + scenes/scene10.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index b8a88eb484..d820bc0d14 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -155,6 +155,13 @@ Vars::Vars() { scene08_var07 = 0; scene08_var08 = 0; + scene10_gum = 0; + scene10_packet = 0; + scene10_packet2 = 0; + scene10_inflater = 0; + scene10_ladder = 0; + scene10_hasGum = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 24fd1fce4c..7db6ff1e7b 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -201,6 +201,13 @@ public: int scene08_var07; int scene08_var08; + StaticANIObject *scene10_gum; + StaticANIObject *scene10_packet; + StaticANIObject *scene10_packet2; + StaticANIObject *scene10_inflater; + PictureObject *scene10_ladder; + int scene10_hasGum; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 444b51f0a2..7cb277928d 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -30,15 +30,16 @@ #include "fullpipe/statics.h" #include "fullpipe/behavior.h" +#include "fullpipe/interaction.h" namespace Fullpipe { void scene10_initScene(Scene *sc) { - g_vars->scene10_gum = sc->getStaticANIObject1ById(sc, ANI_GUM, -1); - g_vars->scene10_packet = sc->getStaticANIObject1ById(sc, ANI_PACHKA, -1); - g_vars->scene10_packet2 = sc->getStaticANIObject1ById(sc, ANI_PACHKA2, -1); - g_vars->scene10_inflater = sc->getStaticANIObject1ById(sc, ANI_NADUVATEL, -1); - g_vars->scene10_ladder = sc->getPictureObjectById(sc, PIC_SC10_LADDER, 0); + g_vars->scene10_gum = sc->getStaticANIObject1ById(ANI_GUM, -1); + g_vars->scene10_packet = sc->getStaticANIObject1ById(ANI_PACHKA, -1); + g_vars->scene10_packet2 = sc->getStaticANIObject1ById(ANI_PACHKA2, -1); + g_vars->scene10_inflater = sc->getStaticANIObject1ById(ANI_NADUVATEL, -1); + g_vars->scene10_ladder = sc->getPictureObjectById(PIC_SC10_LADDER, 0); g_fp->lift_setButton(sO_Level1, ST_LBN_1N); g_fp->lift_sub5(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT); @@ -51,25 +52,38 @@ void scene10_initScene(Scene *sc) { } } +void sceneHandler10_clickGum() { + warning("STUB: sceneHandler10_clickGum()"); +} + +void sceneHandler10_hideGum() { + warning("STUB: sceneHandler10_hideGum()"); +} + +void sceneHandler10_showGum() { + warning("STUB: sceneHandler10_showGum()"); +} + + int sceneHandler10(ExCommand *ex) { - if (ex->msg._messageKind != 17) + if (ex->_messageKind != 17) return 0; switch(ex->_messageNum) { case MSG_LIFT_CLOSEDOOR: - lift_closedoorSeq(); + g_fp->lift_closedoorSeq(); break; case MSG_LIFT_EXITLIFT: - lift_exitSeq(ex); + g_fp->lift_exitSeq(ex); break; case MSG_LIFT_STARTEXITQUEUE: - lift_startExitQueue(); + g_fp->lift_startExitQueue(); break; case MSG_LIFT_CLICKBUTTON: - lift_animation3(); + g_fp->lift_animation3(); break; case MSG_SC10_LADDERTOBACK: @@ -81,7 +95,7 @@ int sceneHandler10(ExCommand *ex) { break; case MSG_LIFT_GO: - lift_goAnimation(); + g_fp->lift_goAnimation(); break; case MSG_SC10_CLICKGUM: @@ -99,24 +113,26 @@ int sceneHandler10(ExCommand *ex) { break; case 64: - lift_sub05(ex); + g_fp->lift_sub05(ex); break; case 29: - if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) { - handleObjectInteraction(g_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_keyCode); - ex->_messageKind = 0; + { + if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) { + handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_keyCode); + ex->_messageKind = 0; - return 0; - } + return 0; + } - StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); - if (ani && ani->_id == ANI_LIFTBUTTON) { - lift_sub1(ani); - ex->_messageKind = 0; + if (ani && ani->_id == ANI_LIFTBUTTON) { + g_fp->lift_sub1(ani); + ex->_messageKind = 0; - return 0; + return 0; + } } break; -- cgit v1.2.3 From 5f699929c85bc14cbcba8197f58c71ec1ffe5d8e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 21 Dec 2013 22:36:19 +0200 Subject: FULLPIPE: Do not memcpy non-POD objects. Thanks to eriktorbjorn for finding out. --- engines/fullpipe/motion.cpp | 32 ++++++++++++++++++++++++++++---- engines/fullpipe/motion.h | 4 ++++ 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 1ecb973066..56ef4782d4 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -354,6 +354,32 @@ MctlConnectionPoint::~MctlConnectionPoint() { delete _messageQueueObj; } +MovInfo1::MovInfo1(MovInfo1 *src) { + field_0 = src->field_0; + pt1 = src->pt1; + pt2 = src->pt2; + distance1 = src->distance1; + distance2 = src->distance2; + subIndex = src->subIndex; + item1Index = src->item1Index; + items = src->items; + itemsCount = src->itemsCount; + flags = src->flags; +} + +void MovInfo1::clear() { + field_0 = 0; + pt1.x = pt1.y = 0; + pt2.x = pt2.y = 0; + distance1 = 0; + distance2 = 0; + subIndex = 0; + item1Index = 0; + items.clear(); + itemsCount = 0; + flags = 0; +} + bool MctlCompoundArray::load(MfcArchive &file) { debug(5, "MctlCompoundArray::load()"); @@ -820,9 +846,7 @@ void MovGraph2::buildMovInfo1SubItems(MovInfo1 *movinfo, Common::Arraypt1.x; int curY = movInfo->pt1.y; @@ -1141,7 +1165,7 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int if (minPath < 0.0 || ((linkInfoSource.node != linkInfoDest.node || !linkInfoSource.node) && !tempLinkList.size())) return 0; - memset(&movInfo1, 0, sizeof(movInfo1)); + movInfo1.clear(); movInfo1.subIndex = idxsub; movInfo1.pt1.x = obj->_ox; diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index 029b25bb19..a4d68e17fb 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -372,6 +372,10 @@ struct MovInfo1 { Common::Array items; int itemsCount; int flags; + + MovInfo1() { clear(); } + MovInfo1(MovInfo1 *src); + void clear(); }; struct MovGraph2Item { // 744 -- cgit v1.2.3 From c45720566d4c5a770058d417762a180527aaa73f Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 00:32:20 +0200 Subject: FULLPIPE: Implement scene08_updateCursor() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene08.cpp | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 49f9a33209..ee5bf249e3 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -287,6 +287,7 @@ namespace Fullpipe { #define PIC_SC6_LADDER 1104 #define PIC_SC8_ARCADENOW 1043 #define PIC_SC8_LADDER 754 +#define PIC_SC8_LADDERD 1106 #define PIC_SC10_DTRUBA 974 #define PIC_SC10_LADDER 995 #define PIC_SCD_SEL 734 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index b6670b76c7..cb2762bc76 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -106,10 +106,26 @@ void scene08_setupMusic() { } int scene08_updateCursor() { - warning("STUB: scene08_updateCursor()"); - g_fp->updateCursorCommon(); + if (g_vars->scene08_var06) { + if (g_vars->scene08_var03) { + if (g_fp->_objectIdAtCursor == PIC_SC8_LADDERD && g_fp->_cursorId == PIC_CSR_ITN) + g_fp->_cursorId = PIC_CSR_GOU; + } else { + g_fp->_cursorId = -1; + } + } else { + if (g_fp->_objectIdAtCursor == PIC_SC8_LADDERD && g_fp->_cursorId == PIC_CSR_ITN) { + if (g_fp->_aniMan2->_oy >= 520) { + if (g_fp->_aniMan2->_oy <= 750) + g_fp->_cursorId = PIC_CSR_GOU; + } else { + g_fp->_cursorId = PIC_CSR_GOD; + } + } + } + return g_fp->_cursorId; } -- cgit v1.2.3 From c3ee5b4fed3558c42e3637a589159cb2faeb1df3 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 00:43:12 +0200 Subject: FULLPIPE: Implement sceneHandler08_arcadeNow() --- engines/fullpipe/scenes/scene08.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index cb2762bc76..d3e81cbe0d 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -142,7 +142,14 @@ void sceneHandler08_hideLadder() { } void sceneHandler08_arcadeNow() { - warning("STUB: sceneHandler08_arcadeNow()"); + MovGraphLink *lnk = getCurrSceneSc2MotionController()->getLinkByName(sO_Stairway); + + g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)); + + g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS); + + if (lnk) + lnk->_flags |= 0x20000000; } void sceneHandler08_resumeFlight() { -- cgit v1.2.3 From bccb4d8f00b6f5abf404bcabbd53817c4d407a83 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 00:51:13 +0200 Subject: FULLPIPE: More code to scene08 --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene08.cpp | 35 ++++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index ee5bf249e3..a55bfc8c4c 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -287,6 +287,7 @@ namespace Fullpipe { #define PIC_SC6_LADDER 1104 #define PIC_SC8_ARCADENOW 1043 #define PIC_SC8_LADDER 754 +#define PIC_SC8_LADDER_D 755 #define PIC_SC8_LADDERD 1106 #define PIC_SC10_DTRUBA 974 #define PIC_SC10_LADDER 995 @@ -330,6 +331,7 @@ namespace Fullpipe { #define QU_SC6_FALLBALL 2690 #define QU_SC6_SHOWHANDLE 1689 #define QU_SC6_SHOWNEXTBALL 2689 +#define QU_SC8_STANDUP 2975 #define QU_SC10_ENTERLIFT 1067 #define QU_SC10_EXITLIFT 2809 #define SC_1 301 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index d3e81cbe0d..a523dd94c0 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -129,16 +129,22 @@ int scene08_updateCursor() { return g_fp->_cursorId; } -void sceneHandler08_winArcade() { - warning("STUB: sceneHandler08_winArcade()"); -} - void sceneHandler08_enterUp() { warning("STUB: sceneHandler08_enterUp()"); } +void sceneHandler08_winArcade() { + if (g_vars->scene08_var06) { + g_vars->scene08_var06 = 0; + g_fp->_sceneRect.top = 0; + g_fp->_sceneRect.bottom = 600; + + sceneHandler08_enterUp(); + } +} + void sceneHandler08_hideLadder() { - warning("STUB: sceneHandler08_hideLadder()"); + g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER_D, 0)->_flags &= 0xFFFB; } void sceneHandler08_arcadeNow() { @@ -153,7 +159,10 @@ void sceneHandler08_arcadeNow() { } void sceneHandler08_resumeFlight() { - warning("STUB: sceneHandler08_resumeFlight()"); + g_vars->scene08_var08 = 3; + g_vars->scene08_var04 = -39; + g_vars->scene08_var01 = 1; + g_vars->scene08_var07 = 0; } void sceneHandler08_startArcade() { @@ -201,11 +210,19 @@ void sceneHandler08_sitDown() { } void sceneHandler08_standUp() { - warning("STUB: sceneHandler08_standUp()"); + chainQueue(QU_SC8_STANDUP, 1); + g_vars->scene08_var03 = 0; } -void sceneHandler08_updateScreenCallback() { - warning("STUB: sceneHandler08_updateScreenCallback()"); +int sceneHandler08_updateScreenCallback() { + int res; + + res = g_fp->drawArcadeOverlay(g_vars->scene08_var06); + + if (!res) + g_fp->_updateScreenCallback = 0; + + return res; } int sceneHandler08(ExCommand *cmd) { -- cgit v1.2.3 From 9ef756e8d7062999052d71e512a996c80c70af4c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 00:57:48 +0200 Subject: FULLPIPE: Implement sceneHandler08_sitDown() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene08.cpp | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index a55bfc8c4c..af495eec32 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -208,6 +208,7 @@ namespace Fullpipe { #define MV_MAN_TURN_SUD 1089 #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 +#define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 #define MV_MOM_CYCLEBK 3012 @@ -451,6 +452,7 @@ namespace Fullpipe { #define ST_MAN_STANDLADDER 453 #define ST_MAN_UP 449 #define ST_MAN6_BALL 2688 +#define ST_MAN8_FLYDOWN 771 #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index a523dd94c0..1f2d4bc4cc 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -32,6 +32,7 @@ #include "fullpipe/motion.h" #include "fullpipe/gameloader.h" #include "fullpipe/behavior.h" +#include "fullpipe/interaction.h" namespace Fullpipe { @@ -194,7 +195,10 @@ void sceneHandler08_calcOffset() { } void sceneHandler08_finishArcade() { - warning("STUB: sceneHandler08_finishArcade()"); + g_vars->scene08_var06 = 0; + + getGameLoaderInteractionController()->enableFlag24(); + getCurrSceneSc2MotionController()->setEnabled(); } void sceneHandler08_jumpOff() { @@ -206,7 +210,16 @@ void sceneHandler08_pushCallback(int *par) { } void sceneHandler08_sitDown() { - warning("STUB: sceneHandler08_sitDown()"); + g_fp->_aniMan->setOXY(380, g_fp->_aniMan->_oy); + + g_fp->_aniMan->changeStatics2(ST_MAN8_FLYDOWN); + g_fp->_aniMan->startAnim(MV_MAN8_SITDOWN, 0, -1); + + g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN); + g_vars->scene08_vmyats->hide(); + + g_vars->scene08_var01 = 0; + g_vars->scene08_var03 = 1; } void sceneHandler08_standUp() { -- cgit v1.2.3 From 787868c1db40976441ddfc49211ea08f14af0fea Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 01:09:17 +0200 Subject: FULLPIPE: Implement scene10_updateCursor() and enable scene10 --- engines/fullpipe/scenes.cpp | 2 ++ engines/fullpipe/scenes.h | 4 ++++ engines/fullpipe/scenes/scene10.cpp | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index d820bc0d14..1ab512c31d 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -381,6 +381,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { insertMessageHandler(sceneHandler09, 2, 2); _updateCursorCallback = scene09_updateCursor; break; +#endif case SC_10: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_10"); @@ -393,6 +394,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = scene10_updateCursor; break; +#if 0 case SC_11: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_11"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 7db6ff1e7b..38c3fb3fb6 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -67,6 +67,10 @@ void scene08_setupMusic(); int sceneHandler08(ExCommand *cmd); int scene08_updateCursor(); +void scene10_initScene(Scene *sc); +int sceneHandler10(ExCommand *cmd); +int scene10_updateCursor(); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 7cb277928d..44446439f3 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -52,6 +52,27 @@ void scene10_initScene(Scene *sc) { } } +bool sceneHandler10_inflaterIsBlind() { + warning("STUB: sceneHandler10_inflaterIsBlind()"); + + return false; +} + +int scene10_updateCursor() { + g_fp->updateCursorCommon(); + + if (g_fp->_objectIdAtCursor == ANI_PACHKA || g_fp->_objectIdAtCursor == ANI_GUM) { + if (g_fp->_cursorId == PIC_CSR_ITN) { + if (g_vars->scene10_hasGum) + g_fp->_cursorId = (sceneHandler10_inflaterIsBlind() != 0) ? PIC_CSR_ITN_RED : PIC_CSR_ITN_GREEN; + else + g_fp->_cursorId = PIC_CSR_DEFAULT; + } + } + + return g_fp->_cursorId; +} + void sceneHandler10_clickGum() { warning("STUB: sceneHandler10_clickGum()"); } -- cgit v1.2.3 From 7f3443c424ab71da4bcdf5186f4ea720c7ed6eb6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 01:44:08 +0200 Subject: FULLPIPE: Implement BigPicture::draw() --- engines/fullpipe/gfx.cpp | 28 ++++++++++++++++++++++++++++ engines/fullpipe/gfx.h | 3 ++- 2 files changed, 30 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index 9aa4f219a6..4b0125e6a4 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -1178,6 +1178,34 @@ bool BigPicture::load(MfcArchive &file) { return true; } +void BigPicture::draw(int x, int y, int style, int angle) { + if (_bitmap) + init(); + + if (_bitmap) { + _bitmap->_flags &= 0xFEFFFFFF; + + int nx = _x; + int ny = _y; + + if (x != -1) + nx = x; + + if (y != -1) + ny = y; + + if (_alpha < 0xFF) { + //vrtSetAlphaBlendMode(g_vrtDrawHandle, 1, v9); + } + + _bitmap->putDib(nx, ny, 0); + + if (_alpha < 0xFF) { + //vrtSetAlphaBlendMode(g_vrtDrawHandle, 0, 255); + } + } +} + Shadows::Shadows() { _staticAniObjectId = 0; _movementId = 0; diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h index 9d5c45de0b..72495bfe0b 100644 --- a/engines/fullpipe/gfx.h +++ b/engines/fullpipe/gfx.h @@ -94,7 +94,7 @@ class Picture : public MemoryObject { void init(); void getDibInfo(); Bitmap *getPixelData(); - void draw(int x, int y, int style, int angle); + virtual void draw(int x, int y, int style, int angle); void drawRotated(int x, int y, int angle); byte getAlpha() { return (byte)_alpha; } @@ -116,6 +116,7 @@ class BigPicture : public Picture { public: BigPicture() {} virtual bool load(MfcArchive &file); + virtual void draw(int x, int y, int style, int angle); }; class GameObject : public CObject { -- cgit v1.2.3 From 67c4237a896d2ae4efc5187de2273bb8674bd0aa Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 12:02:02 +0200 Subject: FULLPIPE: Implement sceneHandler08_badLuck() --- engines/fullpipe/constants.h | 2 ++ engines/fullpipe/scenes/scene08.cpp | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index af495eec32..77968b68b5 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -208,6 +208,7 @@ namespace Fullpipe { #define MV_MAN_TURN_SUD 1089 #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 +#define MV_MAN8_BADLUCK 783 #define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 @@ -453,6 +454,7 @@ namespace Fullpipe { #define ST_MAN_UP 449 #define ST_MAN6_BALL 2688 #define ST_MAN8_FLYDOWN 771 +#define ST_MAN8_HANDSUP 773 #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 1f2d4bc4cc..1452744b7a 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -187,7 +187,25 @@ void sceneHandler08_checkEndArcade() { } void sceneHandler08_badLuck() { - warning("STUB: sceneHandler08_badLuck()"); + g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; + + g_fp->_aniMan->changeStatics2(ST_MAN8_HANDSUP); + g_fp->_aniMan->setOXY(376, 280); + g_fp->_aniMan->_priority = 10; + + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); + + ExCommand *ex = new ExCommand(g_fp->_aniMan->_id, 1, MV_MAN8_BADLUCK, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags |= 2; + ex->_keyCode = g_fp->_aniMan->_okeyCode; + mq->addExCommandToEnd(ex); + + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + + g_fp->setObjectState(sO_StairsUp_8, g_fp->getObjectEnumState(sO_StairsUp_8, sO_NotBroken)); + + g_vars->scene08_var01 = 0; } void sceneHandler08_calcOffset() { -- cgit v1.2.3 From 535d7823b0a94352ec715910709807265c49b860 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 12:09:15 +0200 Subject: FULLPIPE: Implement sceneHandler08_checkEndArcade() --- engines/fullpipe/scenes/scene08.cpp | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 1452744b7a..c48fa72930 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -182,8 +182,34 @@ void sceneHandler08_calcFlight() { warning("STUB: sceneHandler08_calcFlight()"); } +void sceneHandler08_finishArcade() { + g_vars->scene08_var06 = 0; + + getGameLoaderInteractionController()->enableFlag24(); + getCurrSceneSc2MotionController()->setEnabled(); +} + void sceneHandler08_checkEndArcade() { - warning("STUB: sceneHandler08_checkEndArcade()"); + if (g_vars->scene08_var02) { + int x = g_fp->_aniMan->_ox; + int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; + + if (!((g_vars->scene08_var08 + g_fp->_aniMan->_oy) % 3)) + g_vars->scene08_var08--; + + g_fp->_aniMan->setOXY(x, y); + + if (y < 80) { + sceneHandler08_finishArcade(); + + ExCommand *ex = new ExCommand(SC_8, 17, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_messageNum = 61; + ex->_excFlags |= 2; + ex->_keyCode = TrubaUp; + + ex->postMessage(); + } + } } void sceneHandler08_badLuck() { @@ -212,13 +238,6 @@ void sceneHandler08_calcOffset() { warning("STUB: sceneHandler08_calcOffset()"); } -void sceneHandler08_finishArcade() { - g_vars->scene08_var06 = 0; - - getGameLoaderInteractionController()->enableFlag24(); - getCurrSceneSc2MotionController()->setEnabled(); -} - void sceneHandler08_jumpOff() { warning("STUB: sceneHandler08_jumpOff()"); } -- cgit v1.2.3 From 24ca8ed2e76ca98b6704fb2c3514765af7b01051 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 12:13:25 +0200 Subject: FULLPIPE: Implement sceneHandler08_enterUp() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene08.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 77968b68b5..9791aca8fb 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -333,6 +333,7 @@ namespace Fullpipe { #define QU_SC6_FALLBALL 2690 #define QU_SC6_SHOWHANDLE 1689 #define QU_SC6_SHOWNEXTBALL 2689 +#define QU_SC8_FINISH 788 #define QU_SC8_STANDUP 2975 #define QU_SC10_ENTERLIFT 1067 #define QU_SC10_EXITLIFT 2809 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index c48fa72930..e636b07df3 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -131,7 +131,16 @@ int scene08_updateCursor() { } void sceneHandler08_enterUp() { - warning("STUB: sceneHandler08_enterUp()"); + g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; + + g_fp->_aniMan->changeStatics2(ST_MAN8_HANDSUP); + g_fp->_aniMan->setOXY(386, 236); + g_fp->_aniMan->_priority = 10; + g_fp->_aniMan->_flags = 4; + + chainObjQueue(g_fp->_aniMan, QU_SC8_FINISH, 1); + + g_vars->scene08_var01 = 0; } void sceneHandler08_winArcade() { -- cgit v1.2.3 From 0d1876ef2e243b62b4754940b46a9a1096fbc298 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 12:20:20 +0200 Subject: FULLPIPE: Implement sceneHandler08_jumpOff() and sceneHandler08_jumpLogic() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene08.cpp | 49 ++++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 17 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 9791aca8fb..6e68f97455 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -209,6 +209,7 @@ namespace Fullpipe { #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 #define MV_MAN8_BADLUCK 783 +#define MV_MAN8_JUMPOFF 2969 #define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 #define MV_MANHDL_HANDLEUP 631 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index e636b07df3..763e6f7582 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -183,14 +183,6 @@ void sceneHandler08_airMoves() { warning("STUB: sceneHandler08_airMoves()"); } -void sceneHandler08_jumpLogic(ExCommand *cmd) { - warning("STUB: sceneHandler08_jumpLogic(cmd)"); -} - -void sceneHandler08_calcFlight() { - warning("STUB: sceneHandler08_calcFlight()"); -} - void sceneHandler08_finishArcade() { g_vars->scene08_var06 = 0; @@ -198,6 +190,38 @@ void sceneHandler08_finishArcade() { getCurrSceneSc2MotionController()->setEnabled(); } +void sceneHandler08_jumpOff(ExCommand *cmd) { + MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); + + mq->addExCommandToEnd(new ExCommand(cmd)); + mq->setFlags(mq->getFlags() | 1); + + g_fp->_globalMessageQueueList->addMessageQueue(mq); + + g_fp->_aniMan->startAnim(MV_MAN8_JUMPOFF, mq->_id, -1); + + sceneHandler08_finishArcade(); +} + +void sceneHandler08_standUp() { + chainQueue(QU_SC8_STANDUP, 1); + g_vars->scene08_var03 = 0; +} + +void sceneHandler08_jumpLogic(ExCommand *cmd) { + if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC8_LADDERD) { + sceneHandler08_jumpOff(cmd); + + cmd->_messageKind = 0; + } else { + sceneHandler08_standUp(); + } +} + +void sceneHandler08_calcFlight() { + warning("STUB: sceneHandler08_calcFlight()"); +} + void sceneHandler08_checkEndArcade() { if (g_vars->scene08_var02) { int x = g_fp->_aniMan->_ox; @@ -247,10 +271,6 @@ void sceneHandler08_calcOffset() { warning("STUB: sceneHandler08_calcOffset()"); } -void sceneHandler08_jumpOff() { - warning("STUB: sceneHandler08_jumpOff()"); -} - void sceneHandler08_pushCallback(int *par) { warning("STUB: sceneHandler08_pushCallback()"); } @@ -268,11 +288,6 @@ void sceneHandler08_sitDown() { g_vars->scene08_var03 = 1; } -void sceneHandler08_standUp() { - chainQueue(QU_SC8_STANDUP, 1); - g_vars->scene08_var03 = 0; -} - int sceneHandler08_updateScreenCallback() { int res; -- cgit v1.2.3 From badfd14f74166d614d1413d2ab26458ea262803c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 12:34:49 +0200 Subject: FULPIPE: Implement sceneHandler08_calcFlight() --- engines/fullpipe/constants.h | 4 ++ engines/fullpipe/scenes/scene08.cpp | 114 +++++++++++++++++++++++++----------- 2 files changed, 83 insertions(+), 35 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 6e68f97455..115b867efd 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -209,6 +209,8 @@ namespace Fullpipe { #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 #define MV_MAN8_BADLUCK 783 +#define MV_MAN8_HANDSDOWN 772 +#define MV_MAN8_HANDSUP 777 #define MV_MAN8_JUMPOFF 2969 #define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 @@ -233,6 +235,7 @@ namespace Fullpipe { #define MV_SC7_BOX_default 792 #define MV_SPK4_PLAY 3276 #define MV_SPR_LOWER 543 +#define MV_VMT_DEF 765 #define PIC_CMN_EVAL 3468 #define PIC_CSR_DEFAULT 4891 #define PIC_CSR_DEFAULT_INV 4892 @@ -456,6 +459,7 @@ namespace Fullpipe { #define ST_MAN_UP 449 #define ST_MAN6_BALL 2688 #define ST_MAN8_FLYDOWN 771 +#define ST_MAN8_FLYUP 769 #define ST_MAN8_HANDSUP 773 #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 763e6f7582..181ac58392 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -218,33 +218,6 @@ void sceneHandler08_jumpLogic(ExCommand *cmd) { } } -void sceneHandler08_calcFlight() { - warning("STUB: sceneHandler08_calcFlight()"); -} - -void sceneHandler08_checkEndArcade() { - if (g_vars->scene08_var02) { - int x = g_fp->_aniMan->_ox; - int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; - - if (!((g_vars->scene08_var08 + g_fp->_aniMan->_oy) % 3)) - g_vars->scene08_var08--; - - g_fp->_aniMan->setOXY(x, y); - - if (y < 80) { - sceneHandler08_finishArcade(); - - ExCommand *ex = new ExCommand(SC_8, 17, 0, 0, 0, 0, 1, 0, 0, 0); - ex->_messageNum = 61; - ex->_excFlags |= 2; - ex->_keyCode = TrubaUp; - - ex->postMessage(); - } - } -} - void sceneHandler08_badLuck() { g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; @@ -267,14 +240,6 @@ void sceneHandler08_badLuck() { g_vars->scene08_var01 = 0; } -void sceneHandler08_calcOffset() { - warning("STUB: sceneHandler08_calcOffset()"); -} - -void sceneHandler08_pushCallback(int *par) { - warning("STUB: sceneHandler08_pushCallback()"); -} - void sceneHandler08_sitDown() { g_fp->_aniMan->setOXY(380, g_fp->_aniMan->_oy); @@ -288,6 +253,85 @@ void sceneHandler08_sitDown() { g_vars->scene08_var03 = 1; } +void sceneHandler08_calcFlight() { + Common::Point point; + int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; + + g_fp->_aniMan->setOXY(g_fp->_aniMan->_ox, y); + + g_vars->scene08_var08 += 2; + + if (g_vars->scene08_var08 < g_vars->scene08_var04) + g_vars->scene08_var08 = g_vars->scene08_var04; + + y = y + g_fp->_aniMan->getSomeXY(point)->y; + + if (g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) + y -= 25; + + if (y <= g_vars->scene08_vmyats->_oy) { + g_vars->scene08_vmyats->hide(); + } else { + g_vars->scene08_vmyats->show1(-1, -1, -1, 0); + + if (!g_vars->scene08_vmyats->_movement) + g_vars->scene08_vmyats->startAnim(MV_VMT_DEF, 0, -1); + } + + if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_var07 && g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) { + sceneHandler08_badLuck(); + } else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_var07 || !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) { + if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 + || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) + || abs(g_vars->scene08_var08) > 2) { + if (g_vars->scene08_var08 >= 0 && !g_fp->_aniMan->_movement) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) + g_fp->_aniMan->startAnim(MV_MAN8_HANDSDOWN, 0, -1); + else + g_fp->_aniMan->changeStatics2(ST_MAN8_FLYDOWN); + } + + if (g_fp->_aniMan->_oy < 500 && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP && g_vars->scene08_var08 < 0) + g_fp->_aniMan->startAnim(MV_MAN8_HANDSUP, 0, -1); + } else { + sceneHandler08_sitDown(); + } + } else { + sceneHandler08_enterUp(); + } +} + +void sceneHandler08_checkEndArcade() { + if (g_vars->scene08_var02) { + int x = g_fp->_aniMan->_ox; + int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; + + if (!((g_vars->scene08_var08 + g_fp->_aniMan->_oy) % 3)) + g_vars->scene08_var08--; + + g_fp->_aniMan->setOXY(x, y); + + if (y < 80) { + sceneHandler08_finishArcade(); + + ExCommand *ex = new ExCommand(SC_8, 17, 0, 0, 0, 0, 1, 0, 0, 0); + ex->_messageNum = 61; + ex->_excFlags |= 2; + ex->_keyCode = TrubaUp; + + ex->postMessage(); + } + } +} + +void sceneHandler08_calcOffset() { + warning("STUB: sceneHandler08_calcOffset()"); +} + +void sceneHandler08_pushCallback(int *par) { + warning("STUB: sceneHandler08_pushCallback()"); +} + int sceneHandler08_updateScreenCallback() { int res; -- cgit v1.2.3 From e7ac135919ceac08db89d004d106bfc6917028d2 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 23:46:04 +0200 Subject: FULLPIPE: Fix regression with absent background graphics. --- engines/fullpipe/gfx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index 4b0125e6a4..8b2aca4bdb 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -807,7 +807,7 @@ bool Bitmap::putDibRB(int32 *palette, int pX, int pY) { uint16 *srcPtr; if (!palette && pX == -1) { - warning("Bitmap::putDibRB(): Both global and local palettes are empty"); + debug(2, "Bitmap::putDibRB(): Both global and local palettes are empty"); return false; } @@ -1179,7 +1179,7 @@ bool BigPicture::load(MfcArchive &file) { } void BigPicture::draw(int x, int y, int style, int angle) { - if (_bitmap) + if (!_bitmap) init(); if (_bitmap) { -- cgit v1.2.3 From d82218748a3cb5d4c01baf8bbded68a797abd8fa Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 23:59:43 +0200 Subject: FULLPIPE: Implement sceneHandler08_airMoves() --- engines/fullpipe/constants.h | 4 ++++ engines/fullpipe/scenes/scene08.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 115b867efd..b7ba75e042 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -209,8 +209,11 @@ namespace Fullpipe { #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 #define MV_MAN8_BADLUCK 783 +#define MV_MAN8_DRYGDOWN 770 +#define MV_MAN8_DRYGUP 768 #define MV_MAN8_HANDSDOWN 772 #define MV_MAN8_HANDSUP 777 +#define MV_MAN8_JUMP 775 #define MV_MAN8_JUMPOFF 2969 #define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 @@ -461,6 +464,7 @@ namespace Fullpipe { #define ST_MAN8_FLYDOWN 771 #define ST_MAN8_FLYUP 769 #define ST_MAN8_HANDSUP 773 +#define ST_MAN8_STAND 774 #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 181ac58392..7c28e9dc64 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -180,7 +180,33 @@ void sceneHandler08_startArcade() { } void sceneHandler08_airMoves() { - warning("STUB: sceneHandler08_airMoves()"); + if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) { + int x = g_fp->_aniMan->_ox; + int y = g_fp->_aniMan->_oy; + Common::Point point; + + if (703 - g_fp->_aniMan->getSomeXY(point)->y - y < 150) { + if (g_fp->_aniMan->_statics) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) { + y -= 25; + + g_fp->_aniMan->setOXY(x, y); + } + } + + g_fp->_aniMan->changeStatics2(ST_MAN8_STAND); + g_fp->_aniMan->setOXY(380, y); + g_fp->_aniMan->startAnim(MV_MAN8_JUMP, 0, -1); + + } else if (g_fp->_aniMan->_statics) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP) { + g_fp->_aniMan->startAnim(MV_MAN8_DRYGUP, 0, -1); + + } else if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) { + g_fp->_aniMan->startAnim(MV_MAN8_DRYGDOWN, 0, -1); + } + } + } } void sceneHandler08_finishArcade() { @@ -281,8 +307,8 @@ void sceneHandler08_calcFlight() { if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_var07 && g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) { sceneHandler08_badLuck(); } else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_var07 || !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) { - if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 - || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) + if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 + || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) || abs(g_vars->scene08_var08) > 2) { if (g_vars->scene08_var08 >= 0 && !g_fp->_aniMan->_movement) { if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) -- cgit v1.2.3 From 80db7f7bde95c95893801fae9bd9cc1d98d03f84 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 00:04:43 +0200 Subject: FULLPIPE: Implement sceneHandler08_startArcade() --- engines/fullpipe/scenes/scene08.cpp | 61 +++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 20 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 7c28e9dc64..45c7856648 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -175,8 +175,48 @@ void sceneHandler08_resumeFlight() { g_vars->scene08_var07 = 0; } +void sceneHandler08_calcOffset() { + warning("STUB: sceneHandler08_calcOffset()"); +} + +void sceneHandler08_pushCallback(int *par) { + warning("STUB: sceneHandler08_pushCallback()"); +} + +int sceneHandler08_updateScreenCallback() { + int res; + + res = g_fp->drawArcadeOverlay(g_vars->scene08_var06); + + if (!res) + g_fp->_updateScreenCallback = 0; + + return res; +} + void sceneHandler08_startArcade() { - warning("STUB: sceneHandler08_startArcade()"); + g_vars->scene08_var06 = 1; + g_vars->scene08_var01 = 1; + g_vars->scene08_var02 = 0; + g_vars->scene08_var03 = 0; + + getGameLoaderInteractionController()->disableFlag24(); + getCurrSceneSc2MotionController()->clearEnabled(); + + g_vars->scene08_batuta->stopAnim_maybe(); + + g_vars->scene08_vmyats->_statics = g_vars->scene08_vmyats->getStaticsById(ST_VMT_MIN); + g_vars->scene08_vmyats->setOXY(382, 703); + g_vars->scene08_vmyats->_priority = 29; + g_vars->scene08_vmyats->_callback2 = sceneHandler08_pushCallback; + + g_fp->_aniMan = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN, -1); + + g_vars->scene08_var08 = 15; + + g_fp->_currentScene->_y = 0; + + g_fp->_updateScreenCallback = sceneHandler08_updateScreenCallback; } void sceneHandler08_airMoves() { @@ -350,25 +390,6 @@ void sceneHandler08_checkEndArcade() { } } -void sceneHandler08_calcOffset() { - warning("STUB: sceneHandler08_calcOffset()"); -} - -void sceneHandler08_pushCallback(int *par) { - warning("STUB: sceneHandler08_pushCallback()"); -} - -int sceneHandler08_updateScreenCallback() { - int res; - - res = g_fp->drawArcadeOverlay(g_vars->scene08_var06); - - if (!res) - g_fp->_updateScreenCallback = 0; - - return res; -} - int sceneHandler08(ExCommand *cmd) { if (cmd->_messageKind != 17) return 0; -- cgit v1.2.3 From 0a210e8f4e55d5c3cf6d92c71c051087357f6e8b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 00:13:13 +0200 Subject: FULLPIPE: Implement sceneHandler08_pushCallback() --- engines/fullpipe/scenes/scene08.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 45c7856648..c7a6589e98 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -175,12 +175,34 @@ void sceneHandler08_resumeFlight() { g_vars->scene08_var07 = 0; } -void sceneHandler08_calcOffset() { - warning("STUB: sceneHandler08_calcOffset()"); +int sceneHandler08_calcOffset(int off, int flag) { + if (off > 0) { + if (flag) + return off * 31 / 10; // off * 3.1 + else + return 5 * off; + } else { + return 5 * off; + } } void sceneHandler08_pushCallback(int *par) { - warning("STUB: sceneHandler08_pushCallback()"); + Common::Point point; + + int y = g_fp->_aniMan->_oy + g_fp->_aniMan->getSomeXY(point)->y; + + if (g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) + y -= 25; + + *par = (y - 703) / 10; + if (*par > 11) { + *par = 11; + g_vars->scene08_var08 = 0; + } + if (*par >= 0) + g_vars->scene08_var08 -= sceneHandler08_calcOffset(*par, g_vars->scene08_var08 < 0); + else + *par = 0; } int sceneHandler08_updateScreenCallback() { -- cgit v1.2.3 From f8d1633de90a4f5cd70b8d1d7b474c70f71ab8e0 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 00:21:35 +0200 Subject: FULLPIPE: Implement scene08_setupMusic() --- engines/fullpipe/fullpipe.h | 1 + engines/fullpipe/scenes/scene08.cpp | 3 ++- engines/fullpipe/sound.cpp | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index f4ac84b454..75a7630456 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -149,6 +149,7 @@ public: void stopAllSounds(); void toggleMute(); void playSound(int id, int flag); + void playTrack(GameVar *sceneVar, const char *name, bool delayed); void startSceneTrack(); void stopSoundStream2(); void stopAllSoundStreams(); diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index c7a6589e98..9c904e1f7f 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -103,7 +103,8 @@ void scene08_initScene(Scene *sc) { } void scene08_setupMusic() { - warning("STUB: scene08_setupMusic()"); + if (g_fp->getObjectState(sO_TummyTrampie) == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) + g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_8"), "MUSIC_ARCADE", 1); } int scene08_updateCursor() { diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp index de0a666974..a08152e94c 100644 --- a/engines/fullpipe/sound.cpp +++ b/engines/fullpipe/sound.cpp @@ -128,7 +128,11 @@ void FullpipeEngine::toggleMute() { } void FullpipeEngine::playSound(int id, int flag) { - warning("STUB: FullpipeEngine::playSounds(%d, %d)", id, flag); + warning("STUB: FullpipeEngine::playSound(%d, %d)", id, flag); +} + +void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) { + warning("STUB: FullpipeEngine::playTrack(var, %s, %d)", name, delayed); } void global_messageHandler_handleSound(ExCommand *cmd) { -- cgit v1.2.3 From cb411b3fa0ce135aa73a8aef2961f5218f65b23c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 00:38:59 +0200 Subject: FULLPIPE: Renames in scene08 --- engines/fullpipe/scenes.cpp | 4 ++-- engines/fullpipe/scenes.h | 4 ++-- engines/fullpipe/scenes/scene08.cpp | 28 ++++++++++++++-------------- 3 files changed, 18 insertions(+), 18 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 1ab512c31d..08b9357120 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -146,8 +146,8 @@ Vars::Vars() { scene08_batuta = 0; scene08_vmyats = 0; scene08_clock = 0; - scene08_var01 = 0; - scene08_var02 = 0; + scene08_inArcade = false; + scene08_flyingUp = false; scene08_var03 = 0; scene08_var04 = 0; scene08_var05 = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 38c3fb3fb6..b5d6562d6b 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -196,8 +196,8 @@ public: StaticANIObject *scene08_batuta; StaticANIObject *scene08_vmyats; StaticANIObject *scene08_clock; - int scene08_var01; - int scene08_var02; + bool scene08_inArcade; + bool scene08_flyingUp; int scene08_var03; int scene08_var04; int scene08_var05; diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 9c904e1f7f..76f22721be 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -38,8 +38,8 @@ namespace Fullpipe { void scene08_initScene(Scene *sc) { g_vars->scene08_var06 = 0; - g_vars->scene08_var01 = 0; - g_vars->scene08_var02 = 0; + g_vars->scene08_inArcade = false; + g_vars->scene08_flyingUp = false; g_vars->scene08_var03 = 0; g_vars->scene08_batuta = sc->getStaticANIObject1ById(ANI_BATUTA, -1); g_vars->scene08_vmyats = sc->getStaticANIObject1ById(ANI_VMYATS, -1); @@ -141,7 +141,7 @@ void sceneHandler08_enterUp() { chainObjQueue(g_fp->_aniMan, QU_SC8_FINISH, 1); - g_vars->scene08_var01 = 0; + g_vars->scene08_inArcade = false; } void sceneHandler08_winArcade() { @@ -172,7 +172,7 @@ void sceneHandler08_arcadeNow() { void sceneHandler08_resumeFlight() { g_vars->scene08_var08 = 3; g_vars->scene08_var04 = -39; - g_vars->scene08_var01 = 1; + g_vars->scene08_inArcade = true; g_vars->scene08_var07 = 0; } @@ -219,8 +219,8 @@ int sceneHandler08_updateScreenCallback() { void sceneHandler08_startArcade() { g_vars->scene08_var06 = 1; - g_vars->scene08_var01 = 1; - g_vars->scene08_var02 = 0; + g_vars->scene08_inArcade = true; + g_vars->scene08_flyingUp = false; g_vars->scene08_var03 = 0; getGameLoaderInteractionController()->disableFlag24(); @@ -326,7 +326,7 @@ void sceneHandler08_badLuck() { g_fp->setObjectState(sO_StairsUp_8, g_fp->getObjectEnumState(sO_StairsUp_8, sO_NotBroken)); - g_vars->scene08_var01 = 0; + g_vars->scene08_inArcade = false; } void sceneHandler08_sitDown() { @@ -338,7 +338,7 @@ void sceneHandler08_sitDown() { g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN); g_vars->scene08_vmyats->hide(); - g_vars->scene08_var01 = 0; + g_vars->scene08_inArcade = false; g_vars->scene08_var03 = 1; } @@ -391,7 +391,7 @@ void sceneHandler08_calcFlight() { } void sceneHandler08_checkEndArcade() { - if (g_vars->scene08_var02) { + if (g_vars->scene08_flyingUp) { int x = g_fp->_aniMan->_ox; int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; @@ -436,7 +436,7 @@ int sceneHandler08(ExCommand *cmd) { g_vars->scene08_vmyats->setOXY(382, 703); g_vars->scene08_vmyats->_priority = 29; g_vars->scene08_vmyats->_callback2 = sceneHandler08_pushCallback; - g_vars->scene08_var01 = 1; + g_vars->scene08_inArcade = true; break; case MSG_SC8_ARCADENOW: @@ -449,7 +449,7 @@ int sceneHandler08(ExCommand *cmd) { case MSG_SC8_GETHIMUP: g_vars->scene08_var08 = 0; - g_vars->scene08_var02 = 1; + g_vars->scene08_flyingUp = true; break; case MSG_STARTARCADE: @@ -458,7 +458,7 @@ int sceneHandler08(ExCommand *cmd) { case 29: if (g_vars->scene08_var06) { - if (g_vars->scene08_var01) { + if (g_vars->scene08_inArcade) { sceneHandler08_airMoves(); break; } @@ -504,7 +504,7 @@ int sceneHandler08(ExCommand *cmd) { g_fp->_floaters->update(); if (g_vars->scene08_var06) { - if (g_vars->scene08_var01) + if (g_vars->scene08_inArcade) sceneHandler08_calcFlight(); } else { Movement *mov = g_fp->_aniMan->_movement; @@ -521,7 +521,7 @@ int sceneHandler08(ExCommand *cmd) { g_fp->startSceneTrack(); } - if (g_vars->scene08_var02) + if (g_vars->scene08_flyingUp) sceneHandler08_checkEndArcade(); if (g_vars->scene08_var05 > 0) { -- cgit v1.2.3 From cb3268dd932b92be6b543f8ca8f20b6fc6142898 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 01:06:54 +0200 Subject: FULLPIPE: Finish renames in scene08. This completes the scene --- engines/fullpipe/scenes.cpp | 14 ++--- engines/fullpipe/scenes.h | 14 ++--- engines/fullpipe/scenes/scene08.cpp | 108 ++++++++++++++++++------------------ 3 files changed, 69 insertions(+), 67 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 08b9357120..f526731d03 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -146,14 +146,14 @@ Vars::Vars() { scene08_batuta = 0; scene08_vmyats = 0; scene08_clock = 0; - scene08_inArcade = false; + scene08_inAir = false; scene08_flyingUp = false; - scene08_var03 = 0; - scene08_var04 = 0; - scene08_var05 = 0; - scene08_var06 = 0; - scene08_var07 = 0; - scene08_var08 = 0; + scene08_onBelly = false; + scene08_stairsOffset = -37; + scene08_snoringCountdown = -1; + scene08_inArcade = false; + scene08_stairsVisible = true; + scene08_manOffsetY = 0; scene10_gum = 0; scene10_packet = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index b5d6562d6b..bb68e1c16c 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -196,14 +196,14 @@ public: StaticANIObject *scene08_batuta; StaticANIObject *scene08_vmyats; StaticANIObject *scene08_clock; - bool scene08_inArcade; + bool scene08_inAir; bool scene08_flyingUp; - int scene08_var03; - int scene08_var04; - int scene08_var05; - int scene08_var06; - int scene08_var07; - int scene08_var08; + int scene08_onBelly; + int scene08_stairsOffset; + int scene08_snoringCountdown; + bool scene08_inArcade; + bool scene08_stairsVisible; + int scene08_manOffsetY; StaticANIObject *scene10_gum; StaticANIObject *scene10_packet; diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 76f22721be..2764861841 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -37,15 +37,15 @@ namespace Fullpipe { void scene08_initScene(Scene *sc) { - g_vars->scene08_var06 = 0; g_vars->scene08_inArcade = false; + g_vars->scene08_inAir = false; g_vars->scene08_flyingUp = false; - g_vars->scene08_var03 = 0; + g_vars->scene08_onBelly = false; g_vars->scene08_batuta = sc->getStaticANIObject1ById(ANI_BATUTA, -1); g_vars->scene08_vmyats = sc->getStaticANIObject1ById(ANI_VMYATS, -1); g_vars->scene08_clock = sc->getStaticANIObject1ById(ANI_CLOCK_8, -1); - g_vars->scene08_var04 = -37; - g_vars->scene08_var05 = -1; + g_vars->scene08_stairsOffset = -37; + g_vars->scene08_snoringCountdown = -1; Scene *oldsc = g_fp->_currentScene; g_fp->_currentScene = sc; @@ -77,19 +77,19 @@ void scene08_initScene(Scene *sc) { if (lock) lock->_flags |= 0x20000000; - g_vars->scene08_var05 = 71; + g_vars->scene08_snoringCountdown = 71; } g_vars->scene08_clock->_callback2 = 0; if (g_fp->getObjectState(sO_StairsUp_8) == g_fp->getObjectEnumState(sO_StairsUp_8, sO_Broken)) { - g_vars->scene08_var07 = 0; + g_vars->scene08_stairsVisible = false; sc->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB; - g_vars->scene08_var04 = -39; + g_vars->scene08_stairsOffset = -39; } else { - g_vars->scene08_var07 = 1; + g_vars->scene08_stairsVisible = true; } sc->getPictureObjectById(PIC_SC8_ARCADENOW, 0)->_flags &= 0xFFFB; @@ -110,8 +110,8 @@ void scene08_setupMusic() { int scene08_updateCursor() { g_fp->updateCursorCommon(); - if (g_vars->scene08_var06) { - if (g_vars->scene08_var03) { + if (g_vars->scene08_inArcade) { + if (g_vars->scene08_onBelly) { if (g_fp->_objectIdAtCursor == PIC_SC8_LADDERD && g_fp->_cursorId == PIC_CSR_ITN) g_fp->_cursorId = PIC_CSR_GOU; } else { @@ -141,12 +141,12 @@ void sceneHandler08_enterUp() { chainObjQueue(g_fp->_aniMan, QU_SC8_FINISH, 1); - g_vars->scene08_inArcade = false; + g_vars->scene08_inAir = false; } void sceneHandler08_winArcade() { - if (g_vars->scene08_var06) { - g_vars->scene08_var06 = 0; + if (g_vars->scene08_inArcade) { + g_vars->scene08_inArcade = false; g_fp->_sceneRect.top = 0; g_fp->_sceneRect.bottom = 600; @@ -170,10 +170,10 @@ void sceneHandler08_arcadeNow() { } void sceneHandler08_resumeFlight() { - g_vars->scene08_var08 = 3; - g_vars->scene08_var04 = -39; - g_vars->scene08_inArcade = true; - g_vars->scene08_var07 = 0; + g_vars->scene08_manOffsetY = 3; + g_vars->scene08_stairsOffset = -39; + g_vars->scene08_inAir = true; + g_vars->scene08_stairsVisible = false; } int sceneHandler08_calcOffset(int off, int flag) { @@ -198,10 +198,10 @@ void sceneHandler08_pushCallback(int *par) { *par = (y - 703) / 10; if (*par > 11) { *par = 11; - g_vars->scene08_var08 = 0; + g_vars->scene08_manOffsetY = 0; } if (*par >= 0) - g_vars->scene08_var08 -= sceneHandler08_calcOffset(*par, g_vars->scene08_var08 < 0); + g_vars->scene08_manOffsetY -= sceneHandler08_calcOffset(*par, g_vars->scene08_manOffsetY < 0); else *par = 0; } @@ -209,7 +209,7 @@ void sceneHandler08_pushCallback(int *par) { int sceneHandler08_updateScreenCallback() { int res; - res = g_fp->drawArcadeOverlay(g_vars->scene08_var06); + res = g_fp->drawArcadeOverlay(g_vars->scene08_inArcade); if (!res) g_fp->_updateScreenCallback = 0; @@ -218,10 +218,10 @@ int sceneHandler08_updateScreenCallback() { } void sceneHandler08_startArcade() { - g_vars->scene08_var06 = 1; g_vars->scene08_inArcade = true; + g_vars->scene08_inAir = true; g_vars->scene08_flyingUp = false; - g_vars->scene08_var03 = 0; + g_vars->scene08_onBelly = false; getGameLoaderInteractionController()->disableFlag24(); getCurrSceneSc2MotionController()->clearEnabled(); @@ -235,7 +235,7 @@ void sceneHandler08_startArcade() { g_fp->_aniMan = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN, -1); - g_vars->scene08_var08 = 15; + g_vars->scene08_manOffsetY = 15; g_fp->_currentScene->_y = 0; @@ -273,7 +273,7 @@ void sceneHandler08_airMoves() { } void sceneHandler08_finishArcade() { - g_vars->scene08_var06 = 0; + g_vars->scene08_inArcade = false; getGameLoaderInteractionController()->enableFlag24(); getCurrSceneSc2MotionController()->setEnabled(); @@ -294,7 +294,7 @@ void sceneHandler08_jumpOff(ExCommand *cmd) { void sceneHandler08_standUp() { chainQueue(QU_SC8_STANDUP, 1); - g_vars->scene08_var03 = 0; + g_vars->scene08_onBelly = false; } void sceneHandler08_jumpLogic(ExCommand *cmd) { @@ -326,7 +326,7 @@ void sceneHandler08_badLuck() { g_fp->setObjectState(sO_StairsUp_8, g_fp->getObjectEnumState(sO_StairsUp_8, sO_NotBroken)); - g_vars->scene08_inArcade = false; + g_vars->scene08_inAir = false; } void sceneHandler08_sitDown() { @@ -338,20 +338,20 @@ void sceneHandler08_sitDown() { g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN); g_vars->scene08_vmyats->hide(); - g_vars->scene08_inArcade = false; - g_vars->scene08_var03 = 1; + g_vars->scene08_inAir = false; + g_vars->scene08_onBelly = true; } void sceneHandler08_calcFlight() { Common::Point point; - int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; + int y = g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy; g_fp->_aniMan->setOXY(g_fp->_aniMan->_ox, y); - g_vars->scene08_var08 += 2; + g_vars->scene08_manOffsetY += 2; - if (g_vars->scene08_var08 < g_vars->scene08_var04) - g_vars->scene08_var08 = g_vars->scene08_var04; + if (g_vars->scene08_manOffsetY < g_vars->scene08_stairsOffset) + g_vars->scene08_manOffsetY = g_vars->scene08_stairsOffset; y = y + g_fp->_aniMan->getSomeXY(point)->y; @@ -367,20 +367,22 @@ void sceneHandler08_calcFlight() { g_vars->scene08_vmyats->startAnim(MV_VMT_DEF, 0, -1); } - if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_var07 && g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) { + if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_stairsVisible + && g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) { sceneHandler08_badLuck(); - } else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_var07 || !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) { + } else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_stairsVisible + || !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) { if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) - || abs(g_vars->scene08_var08) > 2) { - if (g_vars->scene08_var08 >= 0 && !g_fp->_aniMan->_movement) { + || abs(g_vars->scene08_manOffsetY) > 2) { + if (g_vars->scene08_manOffsetY >= 0 && !g_fp->_aniMan->_movement) { if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) g_fp->_aniMan->startAnim(MV_MAN8_HANDSDOWN, 0, -1); else g_fp->_aniMan->changeStatics2(ST_MAN8_FLYDOWN); } - if (g_fp->_aniMan->_oy < 500 && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP && g_vars->scene08_var08 < 0) + if (g_fp->_aniMan->_oy < 500 && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP && g_vars->scene08_manOffsetY < 0) g_fp->_aniMan->startAnim(MV_MAN8_HANDSUP, 0, -1); } else { sceneHandler08_sitDown(); @@ -393,10 +395,10 @@ void sceneHandler08_calcFlight() { void sceneHandler08_checkEndArcade() { if (g_vars->scene08_flyingUp) { int x = g_fp->_aniMan->_ox; - int y = g_vars->scene08_var08 + g_fp->_aniMan->_oy; + int y = g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy; - if (!((g_vars->scene08_var08 + g_fp->_aniMan->_oy) % 3)) - g_vars->scene08_var08--; + if (!((g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy) % 3)) + g_vars->scene08_manOffsetY--; g_fp->_aniMan->setOXY(x, y); @@ -431,12 +433,12 @@ int sceneHandler08(ExCommand *cmd) { break; case MSG_SC8_STANDUP: - g_vars->scene08_var08 = -10; + g_vars->scene08_manOffsetY = -10; g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN); g_vars->scene08_vmyats->setOXY(382, 703); g_vars->scene08_vmyats->_priority = 29; g_vars->scene08_vmyats->_callback2 = sceneHandler08_pushCallback; - g_vars->scene08_inArcade = true; + g_vars->scene08_inAir = true; break; case MSG_SC8_ARCADENOW: @@ -448,7 +450,7 @@ int sceneHandler08(ExCommand *cmd) { break; case MSG_SC8_GETHIMUP: - g_vars->scene08_var08 = 0; + g_vars->scene08_manOffsetY = 0; g_vars->scene08_flyingUp = true; break; @@ -457,12 +459,12 @@ int sceneHandler08(ExCommand *cmd) { break; case 29: - if (g_vars->scene08_var06) { - if (g_vars->scene08_inArcade) { + if (g_vars->scene08_inArcade) { + if (g_vars->scene08_inAir) { sceneHandler08_airMoves(); break; } - if (g_vars->scene08_var03) { + if (g_vars->scene08_onBelly) { sceneHandler08_jumpLogic(cmd); break; } @@ -474,7 +476,7 @@ int sceneHandler08(ExCommand *cmd) { int res = 0; if (g_fp->_aniMan2) { - if (g_vars->scene08_var06) { + if (g_vars->scene08_inArcade) { int scHeight = g_fp->_sceneRect.bottom - g_fp->_sceneRect.top; if (g_fp->_aniMan2->_oy < g_fp->_sceneRect.top + 200) { @@ -503,8 +505,8 @@ int sceneHandler08(ExCommand *cmd) { g_fp->_floaters->update(); - if (g_vars->scene08_var06) { - if (g_vars->scene08_inArcade) + if (g_vars->scene08_inArcade) { + if (g_vars->scene08_inAir) sceneHandler08_calcFlight(); } else { Movement *mov = g_fp->_aniMan->_movement; @@ -524,13 +526,13 @@ int sceneHandler08(ExCommand *cmd) { if (g_vars->scene08_flyingUp) sceneHandler08_checkEndArcade(); - if (g_vars->scene08_var05 > 0) { - g_vars->scene08_var05--; + if (g_vars->scene08_snoringCountdown > 0) { + g_vars->scene08_snoringCountdown--; - if (!g_vars->scene08_var05) { + if (!g_vars->scene08_snoringCountdown) { g_fp->playSound(SND_8_014, 0); - g_vars->scene08_var05 = 71; + g_vars->scene08_snoringCountdown = 71; } } -- cgit v1.2.3 From eaa9d8a2e0af9214d48110d988c18ca2d9600859 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 14:54:22 +0200 Subject: FULLPIPE: Implement several scene10 methods --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene10.cpp | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b7ba75e042..c4ea3dd3f7 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -228,6 +228,7 @@ namespace Fullpipe { #define MV_MOM_TAKE3 2887 #define MV_MOM_TAKE4 2888 #define MV_MOM_TAKE5 2889 +#define MV_NDV_BLOW2 2855 #define MV_OTM_BOXHANDLEDOWN 626 #define MV_OTM_BOXHANDLEUP 627 #define MV_OTM_HANDLEDOWN 620 diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 44446439f3..3977337f45 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -53,9 +53,9 @@ void scene10_initScene(Scene *sc) { } bool sceneHandler10_inflaterIsBlind() { - warning("STUB: sceneHandler10_inflaterIsBlind()"); - - return false; + return g_vars->scene10_inflater->_movement + && g_vars->scene10_inflater->_movement->_id == MV_NDV_BLOW2 + && g_vars->scene10_inflater->_movement->_currDynamicPhaseIndex < 42; } int scene10_updateCursor() { @@ -78,11 +78,17 @@ void sceneHandler10_clickGum() { } void sceneHandler10_hideGum() { - warning("STUB: sceneHandler10_hideGum()"); + g_vars->scene10_gum->hide(); + g_vars->scene10_packet->hide(); + g_vars->scene10_packet2->hide(); } void sceneHandler10_showGum() { - warning("STUB: sceneHandler10_showGum()"); + if (g_vars->scene10_hasGum) + g_vars->scene10_gum->show1(-1, -1, -1, 0); + + g_vars->scene10_packet->show1(-1, -1, -1, 0); + g_vars->scene10_packet2->show1(-1, -1, -1, 0); } -- cgit v1.2.3 From fec15ed2ccec8917c63728b44f40417ed983a73b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 23 Dec 2013 15:06:44 +0200 Subject: FULLPIPE: Implement sceneHandler10_clickGum(). This completes scene10 --- engines/fullpipe/constants.h | 4 ++++ engines/fullpipe/scenes/scene10.cpp | 32 +++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index c4ea3dd3f7..0b53e27f63 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -229,6 +229,8 @@ namespace Fullpipe { #define MV_MOM_TAKE4 2888 #define MV_MOM_TAKE5 2889 #define MV_NDV_BLOW2 2855 +#define MV_NDV_DENIES 952 +#define MV_NDV_DENY_NOGUM 3022 #define MV_OTM_BOXHANDLEDOWN 626 #define MV_OTM_BOXHANDLEUP 627 #define MV_OTM_HANDLEDOWN 620 @@ -345,6 +347,7 @@ namespace Fullpipe { #define QU_SC8_STANDUP 2975 #define QU_SC10_ENTERLIFT 1067 #define QU_SC10_EXITLIFT 2809 +#define QU_SC10_TAKEGUM 3026 #define SC_1 301 #define SC_10 653 #define SC_11 654 @@ -469,6 +472,7 @@ namespace Fullpipe { #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 +#define ST_NDV_SIT 946 #define ST_OTM_BOX_LEFT 429 #define ST_OTM_GLS_LEFT 421 #define ST_OTM_VNT_LEFT 434 diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 3977337f45..78f3fcdcff 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -31,6 +31,7 @@ #include "fullpipe/behavior.h" #include "fullpipe/interaction.h" +#include "fullpipe/motion.h" namespace Fullpipe { @@ -74,7 +75,36 @@ int scene10_updateCursor() { } void sceneHandler10_clickGum() { - warning("STUB: sceneHandler10_clickGum()"); + if (g_vars->scene10_hasGum) { + if (sceneHandler10_inflaterIsBlind()) { + if (g_vars->scene10_hasGum) { + int x = g_vars->scene10_gum->_ox - 139; + int y = g_vars->scene10_gum->_oy - 48; + + if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(y - g_fp->_aniMan->_oy) > 1) { + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, x, y, 1, ST_MAN_RIGHT); + if (mq) { + ExCommand *ex = new ExCommand(0, 17, MSG_SC10_CLICKGUM, 0, 0, 0, 1, 0, 0, 0); + ex->_excFlags = 2; + mq->addExCommandToEnd(ex); + + postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1); + } + } else { + g_vars->scene10_hasGum = 0; + + chainQueue(QU_SC10_TAKEGUM, 1); + } + } + } else { + g_vars->scene10_inflater->changeStatics2(ST_NDV_SIT); + + if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum)) + g_vars->scene10_inflater->startAnim(MV_NDV_DENIES, 0, -1); + else + g_vars->scene10_inflater->startAnim(MV_NDV_DENY_NOGUM, 0, -1); + } + } } void sceneHandler10_hideGum() { -- cgit v1.2.3 From 51a83e8be1f9ca9ea755cfe8b253b0aa0b9d5769 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 00:08:18 +0200 Subject: FULLPIPE: Implement scene11_initScene() --- engines/fullpipe/constants.h | 11 +++ engines/fullpipe/fullpipe.cpp | 2 +- engines/fullpipe/init.cpp | 4 +- engines/fullpipe/modal.cpp | 1 + engines/fullpipe/module.mk | 1 + engines/fullpipe/motion.cpp | 4 + engines/fullpipe/motion.h | 1 + engines/fullpipe/objectnames.h | 10 +-- engines/fullpipe/scenes.cpp | 24 ++++++ engines/fullpipe/scenes.h | 26 ++++++ engines/fullpipe/scenes/scene01.cpp | 1 + engines/fullpipe/scenes/scene02.cpp | 1 + engines/fullpipe/scenes/scene03.cpp | 1 + engines/fullpipe/scenes/scene04.cpp | 4 +- engines/fullpipe/scenes/scene05.cpp | 1 + engines/fullpipe/scenes/scene06.cpp | 2 +- engines/fullpipe/scenes/scene07.cpp | 1 + engines/fullpipe/scenes/scene08.cpp | 2 +- engines/fullpipe/scenes/scene10.cpp | 2 +- engines/fullpipe/scenes/scene11.cpp | 139 +++++++++++++++++++++++++++++++++ engines/fullpipe/scenes/sceneDbg.cpp | 1 + engines/fullpipe/scenes/sceneIntro.cpp | 1 + 22 files changed, 227 insertions(+), 13 deletions(-) create mode 100644 engines/fullpipe/scenes/scene11.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 0b53e27f63..63ab988543 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -489,6 +489,17 @@ namespace Fullpipe { #define rMV_MAN_LOOKUP 4775 #define rMV_KZW_GOR 566 +// Scene 11 +#define ANI_BOOTS_11 2704 +#define ANI_KACHELI 1094 +#define ANI_MAN11 1108 +#define ANI_SWINGER 1113 +#define PIC_SC11_HINT 5170 +#define ST_KCH_STATIC 1122 +#define ST_SWR_SIT 1147 +#define ST_SWR_SITBALD 1153 +#define ST_SWR_STAND3 3014 + } // End of namespace Fullpipe #endif /* FULLPIPE_CONSTANTS_H */ diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp index d02ce4796b..a0348a9407 100644 --- a/engines/fullpipe/fullpipe.cpp +++ b/engines/fullpipe/fullpipe.cpp @@ -33,9 +33,9 @@ #include "fullpipe/behavior.h" #include "fullpipe/modal.h" #include "fullpipe/input.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/floaters.h" -#include "fullpipe/motion.h" #include "fullpipe/console.h" namespace Fullpipe { diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp index beac854d5b..8526c2114b 100644 --- a/engines/fullpipe/init.cpp +++ b/engines/fullpipe/init.cpp @@ -59,7 +59,7 @@ void FullpipeEngine::initObjectStates() { setObjectState(sO_RightStairs_9, getObjectEnumState(sO_RightStairs_9, sO_IsClosed)); setObjectState(sO_Pipe_9, getObjectEnumState(sO_Pipe_9, sO_WithJug)); setObjectState(sO_Inflater, getObjectEnumState(sO_Inflater, sO_WithGum)); - setObjectState(sO_Swingie, getObjectEnumState(sO_Swingie, sO_Swinging)); + setObjectState(sO_Swingie, getObjectEnumState(sO_Swingie, sO_IsSwinging)); setObjectState(sO_DudeJumped, getObjectEnumState(sO_DudeJumped, sO_No)); setObjectState(sO_Bridge, getObjectEnumState(sO_Bridge, sO_Convoluted)); setObjectState(sO_Guardian, getObjectEnumState(sO_Guardian, sO_OnRight)); @@ -73,7 +73,7 @@ void FullpipeEngine::initObjectStates() { setObjectState(sO_RightPipe_17, getObjectEnumState(sO_RightPipe_17, sO_IsClosed)); setObjectState(sO_Fly_17, 1); setObjectState(sO_DudeSwinged, 0); - setObjectState(sO_Girl, getObjectEnumState(sO_Girl, sO_Swinging)); + setObjectState(sO_Girl, getObjectEnumState(sO_Girl, sO_IsSwinging)); setObjectState(sO_Sugar, getObjectEnumState(sO_Sugar, sO_Present)); setObjectState(sO_Janitors, getObjectEnumState(sO_Janitors, sO_Together)); setObjectState(sO_Bag_22, getObjectEnumState(sO_Bag_22, sO_NotFallen)); diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp index b98f7314bc..516d761aa2 100644 --- a/engines/fullpipe/modal.cpp +++ b/engines/fullpipe/modal.cpp @@ -24,6 +24,7 @@ #include "fullpipe/modal.h" #include "fullpipe/messages.h" #include "fullpipe/constants.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/gameloader.h" diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 465a0130c2..230cfe6cb4 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -33,6 +33,7 @@ MODULE_OBJS = \ scenes/scene07.o \ scenes/scene08.o \ scenes/scene10.o \ + scenes/scene11.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 56ef4782d4..f680492458 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -339,6 +339,10 @@ MctlConnectionPoint *MctlCompound::findClosestConnectionPoint(int ox, int oy, in return 0; } +void MctlCompound::replaceNodeX(int from, int to) { + warning("STUB: MctlCompound::replaceNodeX()"); +} + MctlConnectionPoint::MctlConnectionPoint() { _connectionX = 0; _connectionY = 0; diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h index a4d68e17fb..24f047d76b 100644 --- a/engines/fullpipe/motion.h +++ b/engines/fullpipe/motion.h @@ -114,6 +114,7 @@ public: void initMovGraph2(); MctlConnectionPoint *findClosestConnectionPoint(int ox, int oy, int destIndex, int connectionX, int connectionY, int sourceIndex, int *minDistancePtr); + void replaceNodeX(int from, int to); }; struct MGMSubItem { diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index 81385a5d3f..b4564d4c5d 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -97,8 +97,8 @@ namespace Fullpipe { #define sO_IsPlaying "\xc8\xe3\xf0\xe0\xe5\xf2" // "Играет" #define sO_Tub "\xca\xe0\xe4\xea\xe0" // "Кадка" #define sO_Cactus "\xca\xe0\xea\xf2\xf3\xf1" // "Кактус" -#define sO_SwingingWithBoot "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff \xf1 \xe1\xee\xf2\xe8\xed\xea\xee\xec" // "Катается с ботинком" -#define sO_Swinging "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff" // "Катается" +#define sO_IsSwingingWithBoot "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff \xf1 \xe1\xee\xf2\xe8\xed\xea\xee\xec" // "Катается с ботинком" +#define sO_IsSwinging "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff" // "Катается" #define sO_Swingie "\xca\xe0\xf7\xe5\xeb\xe5\xed\xff" // "Качеленя" #define sO_LiftButtons "\xca\xed\xee\xef\xea\xe8 \xeb\xe8\xf4\xf2\xe0" // "Кнопки лифта" #define sO_Carpet_35 "\xca\xee\xe2\xf0\xe8\xea_35" // "Коврик_35" @@ -197,7 +197,7 @@ namespace Fullpipe { #define sO_Sugar "\xd1\xe0\xf5\xe0\xf0\xee\xea" // "Сахарок" #define sO_Convoluted "\xd1\xe2\xe5\xf0\xed\xf3\xf2" // "Свернут" #define sO_IsFree "\xd1\xe2\xee\xe1\xee\xe4\xed\xe0" // "Свободна" -#define sO_Sitting "\xd1\xe8\xe4\xe8\xf2" // "Сидит" +#define sO_IsSitting "\xd1\xe8\xe4\xe8\xf2" // "Сидит" #define sO_Laughing "\xd1\xec\xe5\xe5\xf2\xf1\xff" // "Смеется" #define sO_WithEveryone "\xd1\xee \xe2\xf1\xe5\xec\xe8" // "Со всеми" #define sO_WithMop "\xd1\xee \xf8\xe2\xe0\xe1\xf0\xee\xe9" // "Со шваброй" @@ -205,8 +205,8 @@ namespace Fullpipe { #define sO_WithBrush "\xd1\xee \xf9\xe5\xf2\xea\xee\xe9" // "Со щеткой" #define sO_IsSleeping "\xd1\xef\xe8\xf2" // "Спит" #define sO_OnRight "\xd1\xef\xf0\xe0\xe2\xe0" // "Справа" -#define sO_StandsInBoots "\xd1\xf2\xee\xe8\xf2 \xe2 \xe1\xee\xf2\xe8\xed\xea\xe0\xf5" // "Стоит в ботинках" -#define sO_StandsInCorner "\xd1\xf2\xee\xe8\xf2 \xe2 \xf3\xe3\xeb\xf3" // "Стоит в углу" +#define sO_IsStandingInBoots "\xd1\xf2\xee\xe8\xf2 \xe2 \xe1\xee\xf2\xe8\xed\xea\xe0\xf5" // "Стоит в ботинках" +#define sO_IsStandingInCorner "\xd1\xf2\xee\xe8\xf2 \xe2 \xf3\xe3\xeb\xf3" // "Стоит в углу" #define sO_Guardian "\xd1\xf2\xee\xf0\xee\xe6" // "Сторож" #define sO_Guard_1 "\xd1\xf2\xf0\xe0\xe6 1" // "Страж 1" #define sO_Gurad_2 "\xd1\xf2\xf0\xe0\xe6 2" // "Страж 2" diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index f526731d03..341913ba6b 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -162,6 +162,30 @@ Vars::Vars() { scene10_ladder = 0; scene10_hasGum = 0; + scene11_swingie = 0; + scene11_boots = 0; + scene11_dudeOnSwing = 0; + scene11_hint = 0; + scene11_var02 = 0; + scene11_var03 = 0; + scene11_var04 = 0; + scene11_var05 = 0; + scene11_var06 = 0; + scene11_var07 = 0; + scene11_var08 = 1.0; + scene11_var09 = 1.0; + scene11_var10 = 1.0; + scene11_var11 = 1.0; + scene11_var12 = 0.0; + scene11_var13 = 0; + scene11_var14 = 0; + scene11_var15 = 0; + scene11_var16 = 0; + scene11_var17 = 0; + scene11_var18 = 0; + scene11_var19 = 0; + scene11_var20 = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index bb68e1c16c..d492a6afe6 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -28,6 +28,7 @@ namespace Fullpipe { struct BehaviorEntryInfo; class StaticANIObject; class MctlLadder; +class MGM; int defaultUpdateCursor(); @@ -212,6 +213,31 @@ public: PictureObject *scene10_ladder; int scene10_hasGum; + StaticANIObject *scene11_swingie; + StaticANIObject *scene11_boots; + StaticANIObject *scene11_dudeOnSwing; + PictureObject *scene11_hint; + MGM scene11_var01; + int scene11_var02; + int scene11_var03; + int scene11_var04; + int scene11_var05; + int scene11_var06; + int scene11_var07; + double scene11_var08; + double scene11_var09; + double scene11_var10; + double scene11_var11; + double scene11_var12; + int scene11_var13; + int scene11_var14; + int scene11_var15; + int scene11_var16; + int scene11_var17; + int scene11_var18; + int scene11_var19; + int scene11_var20; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene01.cpp b/engines/fullpipe/scenes/scene01.cpp index c6f7ba303c..6c8f26d209 100644 --- a/engines/fullpipe/scenes/scene01.cpp +++ b/engines/fullpipe/scenes/scene01.cpp @@ -26,6 +26,7 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" diff --git a/engines/fullpipe/scenes/scene02.cpp b/engines/fullpipe/scenes/scene02.cpp index 845a53e1d1..95cf1df7dd 100644 --- a/engines/fullpipe/scenes/scene02.cpp +++ b/engines/fullpipe/scenes/scene02.cpp @@ -26,6 +26,7 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp index 4d4f05764d..40e70e2ea5 100644 --- a/engines/fullpipe/scenes/scene03.cpp +++ b/engines/fullpipe/scenes/scene03.cpp @@ -26,6 +26,7 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 3218324a75..fa9f4ceef0 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -26,14 +26,14 @@ #include "fullpipe/constants.h" #include "fullpipe/utils.h" #include "fullpipe/gfx.h" -#include "fullpipe/scenes.h" #include "fullpipe/messages.h" +#include "fullpipe/motion.h" +#include "fullpipe/scenes.h" #include "fullpipe/statics.h" #include "fullpipe/scene.h" #include "fullpipe/interaction.h" #include "fullpipe/gameloader.h" #include "fullpipe/behavior.h" -#include "fullpipe/motion.h" namespace Fullpipe { diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp index 20443edb5f..c6e21daf1e 100644 --- a/engines/fullpipe/scenes/scene05.cpp +++ b/engines/fullpipe/scenes/scene05.cpp @@ -27,6 +27,7 @@ #include "fullpipe/constants.h" #include "fullpipe/statics.h" #include "fullpipe/scene.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/messages.h" #include "fullpipe/floaters.h" diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 2b7678b10a..c352d27dd6 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -26,13 +26,13 @@ #include "fullpipe/objectnames.h" #include "fullpipe/constants.h" #include "fullpipe/gfx.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" #include "fullpipe/scene.h" #include "fullpipe/messages.h" #include "fullpipe/gameloader.h" #include "fullpipe/behavior.h" -#include "fullpipe/motion.h" #include "fullpipe/interaction.h" namespace Fullpipe { diff --git a/engines/fullpipe/scenes/scene07.cpp b/engines/fullpipe/scenes/scene07.cpp index ba4121944e..207189d151 100644 --- a/engines/fullpipe/scenes/scene07.cpp +++ b/engines/fullpipe/scenes/scene07.cpp @@ -25,6 +25,7 @@ #include "fullpipe/objects.h" #include "fullpipe/objectnames.h" #include "fullpipe/constants.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/scene.h" #include "fullpipe/statics.h" diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 2764861841..ada63ef22d 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -25,11 +25,11 @@ #include "fullpipe/objects.h" #include "fullpipe/objectnames.h" #include "fullpipe/constants.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/scene.h" #include "fullpipe/statics.h" #include "fullpipe/floaters.h" -#include "fullpipe/motion.h" #include "fullpipe/gameloader.h" #include "fullpipe/behavior.h" #include "fullpipe/interaction.h" diff --git a/engines/fullpipe/scenes/scene10.cpp b/engines/fullpipe/scenes/scene10.cpp index 78f3fcdcff..f8d16b2759 100644 --- a/engines/fullpipe/scenes/scene10.cpp +++ b/engines/fullpipe/scenes/scene10.cpp @@ -26,12 +26,12 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" #include "fullpipe/behavior.h" #include "fullpipe/interaction.h" -#include "fullpipe/motion.h" namespace Fullpipe { diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp new file mode 100644 index 0000000000..7ac92c7cf3 --- /dev/null +++ b/engines/fullpipe/scenes/scene11.cpp @@ -0,0 +1,139 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" + +#include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" +#include "fullpipe/scenes.h" +#include "fullpipe/statics.h" + +#include "fullpipe/interaction.h" +#include "fullpipe/behavior.h" + + +namespace Fullpipe { + +void scene11_dudeSwingCallback(int *arg) { + warning("STUB: scene11_dudeSwingCallback()"); +} + +void scene11_initScene(Scene *sc) { + g_vars->scene11_swingie = sc->getStaticANIObject1ById(ANI_SWINGER, -1); + g_vars->scene11_boots = sc->getStaticANIObject1ById(ANI_BOOTS_11, -1); + g_vars->scene11_var01.clear(); + g_vars->scene11_dudeOnSwing = sc->getStaticANIObject1ById(ANI_MAN11, -1); + g_vars->scene11_dudeOnSwing->_callback2 = scene11_dudeSwingCallback; + g_vars->scene11_dudeOnSwing = sc->getStaticANIObject1ById(ANI_KACHELI, -1); + g_vars->scene11_dudeOnSwing->_callback2 = scene11_dudeSwingCallback; + g_vars->scene11_hint = sc->getPictureObjectById(PIC_SC11_HINT, 0); + g_vars->scene11_hint->_flags &= 0xFFFB; + + g_vars->scene11_var02 = 0; + g_vars->scene11_var03 = 0; + g_vars->scene11_var04 = 0; + g_vars->scene11_var05 = 0; + g_vars->scene11_var06 = 0; + g_vars->scene11_var07 = 0; + g_vars->scene11_var08 = 1.0; + g_vars->scene11_var09 = 1.0; + g_vars->scene11_var10 = 1.0; + g_vars->scene11_var11 = 1.0; + g_vars->scene11_var12 = 1.9849218750000000; + g_vars->scene11_var13 = 0; + g_vars->scene11_var14 = 0; + g_vars->scene11_var15 = 0; + g_vars->scene11_var16 = 0; + g_vars->scene11_var17 = 0; + g_vars->scene11_var18 = 0; + + Scene *oldsc = g_fp->_currentScene; + + g_fp->_currentScene = sc; + + int swingie = g_fp->getObjectState(sO_Swingie); + + if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSwinging) + || swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSwingingWithBoot)) { + g_vars->scene11_var19 = 1; + g_vars->scene11_var20 = 0; + + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 1); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 1); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 0); + + ((MctlCompound *)getCurrSceneSc2MotionController())->replaceNodeX(805, 905); + + getSc2MctlCompoundBySceneId(sc->_sceneId)->replaceNodeX(303, 353); + } else if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots) + || swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) { + g_vars->scene11_var19 = 0; + g_vars->scene11_var20 = 1; + + g_vars->scene11_swingie->changeStatics2(ST_SWR_STAND3); + + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 1); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 0); + + ((MctlCompound *)getCurrSceneSc2MotionController())->replaceNodeX(905, 805); + } else { + g_vars->scene11_var19 = 0; + g_vars->scene11_var20 = 0; + + if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting)) { + g_vars->scene11_swingie->_movement = 0; + g_vars->scene11_swingie->_statics = g_vars->scene11_swingie->getStaticsById(ST_SWR_SIT); + g_vars->scene11_swingie->setOXY(144, 389); + + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 0); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 1); + } else { + g_vars->scene11_swingie->_movement = 0; + g_vars->scene11_swingie->_statics = g_vars->scene11_swingie->getStaticsById(ST_SWR_SITBALD); + g_vars->scene11_swingie->setOXY(144, 415); + + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 0); + getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 1); + } + } + + if (!g_vars->scene11_var19) { + g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_STATIC); + g_vars->scene11_dudeOnSwing->setOXY(691, 371); + g_vars->scene11_dudeOnSwing->_priority = 20; + + g_vars->scene11_dudeOnSwing->_flags |= 4; + } + + g_fp->_currentScene = oldsc; + + g_fp->initArcadeKeys("SC_11"); + g_fp->setArcadeOverlay(PIC_CSR_ARCADE5); +} + +} // End of namespace Fullpipe diff --git a/engines/fullpipe/scenes/sceneDbg.cpp b/engines/fullpipe/scenes/sceneDbg.cpp index 518ef0d13b..4a3751940f 100644 --- a/engines/fullpipe/scenes/sceneDbg.cpp +++ b/engines/fullpipe/scenes/sceneDbg.cpp @@ -25,6 +25,7 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/statics.h" #include "fullpipe/input.h" diff --git a/engines/fullpipe/scenes/sceneIntro.cpp b/engines/fullpipe/scenes/sceneIntro.cpp index 368ca43abd..c9f19f3724 100644 --- a/engines/fullpipe/scenes/sceneIntro.cpp +++ b/engines/fullpipe/scenes/sceneIntro.cpp @@ -24,6 +24,7 @@ #include "fullpipe/constants.h" #include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" #include "fullpipe/scenes.h" #include "fullpipe/modal.h" #include "fullpipe/statics.h" -- cgit v1.2.3 From 4eec1a491c31ff0c98457d5f248b583b52964b38 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 00:14:13 +0200 Subject: FULLPIPE: Implement scene11_setupMusic() --- engines/fullpipe/init.cpp | 2 +- engines/fullpipe/objectnames.h | 2 +- engines/fullpipe/scenes.cpp | 2 +- engines/fullpipe/scenes/scene11.cpp | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp index 8526c2114b..4cf5fbef61 100644 --- a/engines/fullpipe/init.cpp +++ b/engines/fullpipe/init.cpp @@ -60,7 +60,7 @@ void FullpipeEngine::initObjectStates() { setObjectState(sO_Pipe_9, getObjectEnumState(sO_Pipe_9, sO_WithJug)); setObjectState(sO_Inflater, getObjectEnumState(sO_Inflater, sO_WithGum)); setObjectState(sO_Swingie, getObjectEnumState(sO_Swingie, sO_IsSwinging)); - setObjectState(sO_DudeJumped, getObjectEnumState(sO_DudeJumped, sO_No)); + setObjectState(sO_DudeHasJumped, getObjectEnumState(sO_DudeHasJumped, sO_No)); setObjectState(sO_Bridge, getObjectEnumState(sO_Bridge, sO_Convoluted)); setObjectState(sO_Guardian, getObjectEnumState(sO_Guardian, sO_OnRight)); setObjectState(sO_Grandma, getObjectEnumState(sO_Grandma, sO_In_14)); diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index b4564d4c5d..07526d0a35 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -78,7 +78,7 @@ namespace Fullpipe { #define sO_Grandpa "\xc4\xe5\xe4\xf3\xf8\xea\xe0" // "Дедушка" #define sO_Plank_25 "\xc4\xee\xf1\xea\xe0_25" // "Доска_25" #define sO_Plank_34 "\xc4\xee\xf1\xea\xe0_34" // "Доска_34" -#define sO_DudeJumped "\xc4\xff\xe4\xff \xef\xf0\xfb\xe3\xe0\xeb" // "Дядя прыгал" +#define sO_DudeHasJumped "\xc4\xff\xe4\xff \xef\xf0\xfb\xe3\xe0\xeb" // "Дядя прыгал" #define sO_Dude "\xc4\xff\xe4\xff" // "Дядя" #define sO_GuvTheDrawer "\xc4\xff\xe4\xff-\xff\xf9\xe8\xea" // "Дядя-ящик" #define sO_DudeSwinged "\xc4\xff\xe4\xff_\xea\xe0\xf2\xe0\xeb\xf1\xff" // "Дядя_катался" diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 341913ba6b..921cdfd1d1 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -427,7 +427,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { scene->initObjectCursors("SC_11"); setSceneMusicParameters(sceneVar); insertMessageHandler(sceneHandler11, 2, 2); - scene11_sub_41A980(); + scene11_setupMusic(); _updateCursorCallback = scene11_updateCursor; break; diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp index 7ac92c7cf3..d38bc9cee1 100644 --- a/engines/fullpipe/scenes/scene11.cpp +++ b/engines/fullpipe/scenes/scene11.cpp @@ -40,6 +40,11 @@ void scene11_dudeSwingCallback(int *arg) { warning("STUB: scene11_dudeSwingCallback()"); } +void scene11_setupMusic() { + if (g_fp->getObjectState(sO_DudeHasJumped) == g_fp->getObjectEnumState(sO_DudeHasJumped, sO_Yes)) + g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_11"), "MUSIC2", 1); +} + void scene11_initScene(Scene *sc) { g_vars->scene11_swingie = sc->getStaticANIObject1ById(ANI_SWINGER, -1); g_vars->scene11_boots = sc->getStaticANIObject1ById(ANI_BOOTS_11, -1); -- cgit v1.2.3 From f58cdb98b33e9c4464ff5bf5b30b51e4c4716c5b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 22:12:05 +0200 Subject: FULLPIPE: Implement scene15_init() --- engines/fullpipe/constants.h | 9 ++++ engines/fullpipe/module.mk | 1 + engines/fullpipe/objectnames.h | 4 ++ engines/fullpipe/scenes.cpp | 9 ++++ engines/fullpipe/scenes.h | 9 ++++ engines/fullpipe/scenes/scene15.cpp | 98 +++++++++++++++++++++++++++++++++++++ 6 files changed, 130 insertions(+) create mode 100644 engines/fullpipe/scenes/scene15.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 63ab988543..aa1eb58875 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -500,6 +500,15 @@ namespace Fullpipe { #define ST_SWR_SITBALD 1153 #define ST_SWR_STAND3 3014 +// Scene 15 +#define ANI_BOOT_15 4779 +#define ANI_GRANDMA_ASS 1265 +#define PIC_SC15_LADDER 3253 +#define QU_SC15_ENTERLIFT 2811 +#define QU_SC15_EXITLIFT 2812 +#define ST_GMS_BOOT 1270 +#define ST_GMS_BOOTLESS2 3316 + } // End of namespace Fullpipe #endif /* FULLPIPE_CONSTANTS_H */ diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 230cfe6cb4..15bf9c942d 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -34,6 +34,7 @@ MODULE_OBJS = \ scenes/scene08.o \ scenes/scene10.o \ scenes/scene11.o \ + scenes/scene15.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index 07526d0a35..87442d990a 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -48,6 +48,10 @@ namespace Fullpipe { #define sO_InSock "\xc2 \xed\xee\xf1\xea\xe5" // "В носке" #define sO_InGlasses "\xc2 \xee\xf7\xea\xe0\xf5" // "В очках" #define sO_In_14 "\xc2_14" // "В_14" +#define sO_In_15 "\xc2_15" // "В_15" +#define sO_In_15_1 "\xc2_15_1" // "В_15_1" +#define sO_In_15_2 "\xc2_15_2" // "В_15_2" +#define sO_In_15_3 "\xc2_15_3" // "В_15_3" #define sO_In_32_Lies "\xc2_32 \xeb\xe5\xe6\xe8\xf2" // "В_32 лежит" #define sO_In_32_Stands "\xc2_32 \xf2\xee\xf0\xf7\xe8\xf2" // "В_32 торчит" #define sO_In_33 "\xc2_33" // "В_33" diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 921cdfd1d1..4a378101e9 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -186,6 +186,15 @@ Vars::Vars() { scene11_var19 = 0; scene11_var20 = 0; + scene15_var01 = 0; + scene15_var02 = 0; + scene15_var03 = 0; + scene15_var04 = 0; + scene15_var05 = 0; + scene15_plusminus = 0; + scene15_ladder = 0; + scene15_boot = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index d492a6afe6..4031b472b1 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -238,6 +238,15 @@ public: int scene11_var19; int scene11_var20; + int scene15_var01; + int scene15_var02; + int scene15_var03; + int scene15_var04; + int scene15_var05; + StaticANIObject *scene15_plusminus; + PictureObject *scene15_ladder; + StaticANIObject *scene15_boot; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp new file mode 100644 index 0000000000..f580831de9 --- /dev/null +++ b/engines/fullpipe/scenes/scene15.cpp @@ -0,0 +1,98 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" + +#include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" +#include "fullpipe/scenes.h" +#include "fullpipe/statics.h" + +#include "fullpipe/interaction.h" +#include "fullpipe/behavior.h" + + +namespace Fullpipe { + +void scene15_initScene(Scene *sc) { + g_vars->scene15_var01 = 200; + g_vars->scene15_var02 = 200; + g_vars->scene15_var03 = 300; + g_vars->scene15_var04 = 300; + g_vars->scene15_var05 = 0; + + StaticANIObject *grandma = sc->getStaticANIObject1ById(ANI_GRANDMA_ASS, -1); + + Scene *oldsc = g_fp->_currentScene; + g_fp->_currentScene = sc; + + int grandmaState = g_fp->getObjectState(sO_Grandma); + + if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(97, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_1)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(86, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_2)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(71, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_3)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(49, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_WithoutBoot)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(97, 399); + grandma->changeStatics2(ST_GMS_BOOTLESS2); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else { + grandma->hide(); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsOpened)); + } + + g_vars->scene15_plusminus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1); + + if (g_fp->getObjectState(sO_Gurad_2) == g_fp->getObjectEnumState(sO_Gurad_2, sO_Off)) + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_MINUS); + else + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_PLUS); + + g_vars->scene15_ladder = sc->getPictureObjectById(PIC_SC15_LADDER, 0); + g_vars->scene15_boot = sc->getStaticANIObject1ById(ANI_BOOT_15, -1); + + if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_Available)) + g_vars->scene15_boot->_flags &= 0xFFFB; + + g_fp->_currentScene = oldsc; + + g_fp->lift_setButton(sO_Level5, ST_LBN_5N); + g_fp->lift_sub5(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT); +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From 575f93156cb5c70fc4d95942b40e179f294eb094 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 22:14:26 +0200 Subject: FULLPIPE: Implement scene15_updateCursor() --- engines/fullpipe/constants.h | 1 + engines/fullpipe/scenes/scene15.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index aa1eb58875..b7edab6019 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -504,6 +504,7 @@ namespace Fullpipe { #define ANI_BOOT_15 4779 #define ANI_GRANDMA_ASS 1265 #define PIC_SC15_LADDER 3253 +#define PIC_SC15_LTRUBA 1261 #define QU_SC15_ENTERLIFT 2811 #define QU_SC15_EXITLIFT 2812 #define ST_GMS_BOOT 1270 diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp index f580831de9..56a496ed00 100644 --- a/engines/fullpipe/scenes/scene15.cpp +++ b/engines/fullpipe/scenes/scene15.cpp @@ -95,4 +95,13 @@ void scene15_initScene(Scene *sc) { g_fp->lift_sub5(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT); } +int scene15_updateCursor() { + g_fp->updateCursorCommon(); + + if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC15_LTRUBA) + g_fp->_cursorId = PIC_CSR_GOL; + + return g_fp->_cursorId; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From bfb5f3521aa80a9e4a6a088160a51cc0c2e4ea16 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 22:47:53 +0200 Subject: FULLPIPE: Implement sceneHandler15() --- engines/fullpipe/constants.h | 8 +++ engines/fullpipe/scenes.cpp | 2 + engines/fullpipe/scenes.h | 2 + engines/fullpipe/scenes/scene15.cpp | 109 ++++++++++++++++++++++++++++++++++++ 4 files changed, 121 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index b7edab6019..e2dff762ea 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -503,10 +503,18 @@ namespace Fullpipe { // Scene 15 #define ANI_BOOT_15 4779 #define ANI_GRANDMA_ASS 1265 +#define MSG_SC15_ASSDRYG 4755 +#define MSG_SC15_LADDERTOBACK 3259 +#define MSG_SC15_PULL 2940 +#define MSG_SC15_STOPCHANTING 4753 +#define PIC_SC15_DTRUBA 1263 #define PIC_SC15_LADDER 3253 #define PIC_SC15_LTRUBA 1261 #define QU_SC15_ENTERLIFT 2811 #define QU_SC15_EXITLIFT 2812 +#define SND_15_001 3798 +#define SND_15_006 3808 +#define SND_15_011 4754 #define ST_GMS_BOOT 1270 #define ST_GMS_BOOTLESS2 3316 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 4a378101e9..63d6d0ab4a 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -191,6 +191,8 @@ Vars::Vars() { scene15_var03 = 0; scene15_var04 = 0; scene15_var05 = 0; + scene15_var06 = 0; + scene15_var07 = 0; scene15_plusminus = 0; scene15_ladder = 0; scene15_boot = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 4031b472b1..e9c9ada637 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -243,6 +243,8 @@ public: int scene15_var03; int scene15_var04; int scene15_var05; + int scene15_var06; + int scene15_var07; StaticANIObject *scene15_plusminus; PictureObject *scene15_ladder; StaticANIObject *scene15_boot; diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp index 56a496ed00..04c3466e3c 100644 --- a/engines/fullpipe/scenes/scene15.cpp +++ b/engines/fullpipe/scenes/scene15.cpp @@ -104,4 +104,113 @@ int scene15_updateCursor() { return g_fp->_cursorId; } +int sceneHandler15(ExCommand *cmd) { + if (cmd->_messageKind != 17) + return 0; + + switch(cmd->_messageNum) { + case MSG_LIFT_CLOSEDOOR: + g_fp->lift_closedoorSeq(); + break; + + case MSG_LIFT_EXITLIFT: + g_fp->lift_exitSeq(cmd); + break; + + case MSG_LIFT_STARTEXITQUEUE: + g_fp->lift_startExitQueue(); + break; + + case MSG_SC4_HIDEBOOT: + g_vars->scene15_boot->_flags &= 0xFFFB; + break; + + case MSG_SC15_STOPCHANTING: + g_fp->stopAllSoundInstances(SND_15_001); + + g_vars->scene15_var05 = 120; + break; + + case MSG_SC15_ASSDRYG: + if (g_fp->_rnd->getRandomNumber(1)) + g_fp->playSound(SND_15_011, 0); + else + g_fp->playSound(SND_15_006, 0); + + break; + + case MSG_SC15_LADDERTOBACK: + g_vars->scene15_ladder->_priority = 60; + break; + + case MSG_LIFT_GO: + g_fp->lift_goAnimation(); + break; + + case MSG_LIFT_CLICKBUTTON: + g_fp->lift_animation3(); + break; + + case MSG_SC15_PULL: + if (g_vars->scene15_plusminus->_statics->_staticsId == ST_PMS_MINUS) + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_PLUS); + else + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_MINUS); + + break; + + case 64: + g_fp->lift_sub05(cmd); + break; + + case 29: + { + if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC15_LADDER) { + handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC15_DTRUBA, 0), cmd->_keyCode); + cmd->_messageKind = 0; + + return 0; + } + + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY); + + if (ani && ani->_id == ANI_LIFTBUTTON) { + g_fp->lift_sub1(ani); + + cmd->_messageKind = 0; + } + break; + } + + case 30: + // nop + break; + + case 33: + if (g_fp->_aniMan2) { + int x = g_fp->_aniMan2->_ox; + + g_vars->scene15_var06 = x; + g_vars->scene15_var07 = g_fp->_aniMan2->_oy; + + if (x < g_fp->_sceneRect.left + g_vars->scene15_var01) + g_fp->_currentScene->_x = x - g_vars->scene15_var03 - g_fp->_sceneRect.left; + + if (x > g_fp->_sceneRect.right - g_vars->scene15_var01) + g_fp->_currentScene->_x = x + g_vars->scene15_var03 - g_fp->_sceneRect.right; + } + + if (g_vars->scene15_var05 > 0) { + g_vars->scene15_var05--; + + if (!g_vars->scene15_var05) + g_fp->playSound(SND_15_001, 1); + } + + g_fp->_behaviorManager->updateBehaviors(); + } + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From af5b8cccf61527735fcb67bf8434a0ac75132b3e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 22:49:09 +0200 Subject: FULLPIPE: Plug scene15 in --- engines/fullpipe/scenes.cpp | 2 ++ engines/fullpipe/scenes.h | 4 ++++ 2 files changed, 6 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 63d6d0ab4a..d61d48b629 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -475,6 +475,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { scene14_sub_41D2B0(); _updateCursorCallback = scene14_updateCursor; break; +#endif case SC_15: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_15"); @@ -487,6 +488,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = scene15_updateCursor; break; +#if 0 case SC_16: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_16"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index e9c9ada637..941cbc9150 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -72,6 +72,10 @@ void scene10_initScene(Scene *sc); int sceneHandler10(ExCommand *cmd); int scene10_updateCursor(); +int scene15_updateCursor(); +void scene15_initScene(Scene *sc); +int sceneHandler15(ExCommand *cmd); + void sceneDbgMenu_initScene(Scene *sc); int sceneHandlerDbgMenu(ExCommand *cmd); -- cgit v1.2.3 From 49473972ce8b6b3ca9ba786911d7456fc596bcdb Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 23:00:05 +0200 Subject: FULLPIPE: Renames in scene15. This completes scene --- engines/fullpipe/scenes.cpp | 8 +------- engines/fullpipe/scenes.h | 8 +------- engines/fullpipe/scenes/scene15.cpp | 25 +++++++++---------------- 3 files changed, 11 insertions(+), 30 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index d61d48b629..fdfee9753f 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -186,13 +186,7 @@ Vars::Vars() { scene11_var19 = 0; scene11_var20 = 0; - scene15_var01 = 0; - scene15_var02 = 0; - scene15_var03 = 0; - scene15_var04 = 0; - scene15_var05 = 0; - scene15_var06 = 0; - scene15_var07 = 0; + scene15_chantingCountdown = 0; scene15_plusminus = 0; scene15_ladder = 0; scene15_boot = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 941cbc9150..8c4257f633 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -242,13 +242,7 @@ public: int scene11_var19; int scene11_var20; - int scene15_var01; - int scene15_var02; - int scene15_var03; - int scene15_var04; - int scene15_var05; - int scene15_var06; - int scene15_var07; + int scene15_chantingCountdown; StaticANIObject *scene15_plusminus; PictureObject *scene15_ladder; StaticANIObject *scene15_boot; diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp index 04c3466e3c..8310fc8607 100644 --- a/engines/fullpipe/scenes/scene15.cpp +++ b/engines/fullpipe/scenes/scene15.cpp @@ -37,11 +37,7 @@ namespace Fullpipe { void scene15_initScene(Scene *sc) { - g_vars->scene15_var01 = 200; - g_vars->scene15_var02 = 200; - g_vars->scene15_var03 = 300; - g_vars->scene15_var04 = 300; - g_vars->scene15_var05 = 0; + g_vars->scene15_chantingCountdown = 0; StaticANIObject *grandma = sc->getStaticANIObject1ById(ANI_GRANDMA_ASS, -1); @@ -128,7 +124,7 @@ int sceneHandler15(ExCommand *cmd) { case MSG_SC15_STOPCHANTING: g_fp->stopAllSoundInstances(SND_15_001); - g_vars->scene15_var05 = 120; + g_vars->scene15_chantingCountdown = 120; break; case MSG_SC15_ASSDRYG: @@ -190,20 +186,17 @@ int sceneHandler15(ExCommand *cmd) { if (g_fp->_aniMan2) { int x = g_fp->_aniMan2->_ox; - g_vars->scene15_var06 = x; - g_vars->scene15_var07 = g_fp->_aniMan2->_oy; + if (x < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left; - if (x < g_fp->_sceneRect.left + g_vars->scene15_var01) - g_fp->_currentScene->_x = x - g_vars->scene15_var03 - g_fp->_sceneRect.left; - - if (x > g_fp->_sceneRect.right - g_vars->scene15_var01) - g_fp->_currentScene->_x = x + g_vars->scene15_var03 - g_fp->_sceneRect.right; + if (x > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right; } - if (g_vars->scene15_var05 > 0) { - g_vars->scene15_var05--; + if (g_vars->scene15_chantingCountdown > 0) { + g_vars->scene15_chantingCountdown--; - if (!g_vars->scene15_var05) + if (!g_vars->scene15_chantingCountdown) g_fp->playSound(SND_15_001, 1); } -- cgit v1.2.3 From 2ad2eb12eea831ef0a781d837b772f8ac196ee76 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 18:30:19 +0200 Subject: FULLPIPE: Implement scene12_init() --- engines/fullpipe/module.mk | 1 + engines/fullpipe/scenes.cpp | 3 +++ engines/fullpipe/scenes.h | 3 +++ engines/fullpipe/scenes/scene12.cpp | 47 +++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 engines/fullpipe/scenes/scene12.cpp (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 15bf9c942d..6f8fbe2c71 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -34,6 +34,7 @@ MODULE_OBJS = \ scenes/scene08.o \ scenes/scene10.o \ scenes/scene11.o \ + scenes/scene12.o \ scenes/scene15.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index fdfee9753f..ebdcf398de 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -186,6 +186,9 @@ Vars::Vars() { scene11_var19 = 0; scene11_var20 = 0; + scene12_fly = 0; + scene12_flyCountdown = 0; + scene15_chantingCountdown = 0; scene15_plusminus = 0; scene15_ladder = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 8c4257f633..53cabed166 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -242,6 +242,9 @@ public: int scene11_var19; int scene11_var20; + int scene12_fly; + int scene12_flyCountdown; + int scene15_chantingCountdown; StaticANIObject *scene15_plusminus; PictureObject *scene15_ladder; diff --git a/engines/fullpipe/scenes/scene12.cpp b/engines/fullpipe/scenes/scene12.cpp new file mode 100644 index 0000000000..60059519e6 --- /dev/null +++ b/engines/fullpipe/scenes/scene12.cpp @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "fullpipe/fullpipe.h" + +#include "fullpipe/objects.h" +#include "fullpipe/objectnames.h" +#include "fullpipe/constants.h" +#include "fullpipe/motion.h" +#include "fullpipe/scenes.h" +#include "fullpipe/scene.h" +#include "fullpipe/floaters.h" + +namespace Fullpipe { + +void scene12_initScene() { + GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("SC_12"); + g_fp->_floaters->init(var); + + g_vars->scene12_fly = g_fp->getObjectState("Муха_12"); + + if (g_vars->scene12_fly) + g_vars->scene12_flyCountdown = 600 * g_fp->_rnd->getRandomNumber(32767) / 0x7fff + 600; + + g_fp->setObjectState("Муха_12", g_fp->_rnd->getRandomNumber(1)); +} + +} // End of namespace Fullpipe -- cgit v1.2.3 From ee8d6c47237a1c297cc84496e21f7e2cee52b915 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 18:47:51 +0200 Subject: FULLPIPE: Implement sceneHandler12() --- engines/fullpipe/scenes/scene12.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene12.cpp b/engines/fullpipe/scenes/scene12.cpp index 60059519e6..c5e03917d5 100644 --- a/engines/fullpipe/scenes/scene12.cpp +++ b/engines/fullpipe/scenes/scene12.cpp @@ -29,6 +29,9 @@ #include "fullpipe/scenes.h" #include "fullpipe/scene.h" #include "fullpipe/floaters.h" +#include "fullpipe/messages.h" +#include "fullpipe/statics.h" +#include "fullpipe/behavior.h" namespace Fullpipe { @@ -44,4 +47,35 @@ void scene12_initScene() { g_fp->setObjectState("Муха_12", g_fp->_rnd->getRandomNumber(1)); } +void sceneHandler12_updateFloaters() { + warning("STUB: sceneHandler12_updateFloaters()"); +} + +int sceneHandler12(ExCommand *cmd) { + int res = 0; + + if (cmd->_messageKind == 17 && cmd->_messageNum == 33) { + if (g_fp->_aniMan2) { + if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300; + + if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300; + + res = 1; + } + + g_vars->scene12_flyCountdown--; + + if (!g_vars->scene12_flyCountdown) + sceneHandler12_updateFloaters(); + + g_fp->_floaters->update(); + + g_fp->_behaviorManager->updateBehaviors(); + } + + return res; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From d509744df58a0c6941677279f1525015caf88392 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 18:52:36 +0200 Subject: FULLPIPE: Plug scene12 in --- engines/fullpipe/scenes.cpp | 2 ++ engines/fullpipe/scenes.h | 3 +++ engines/fullpipe/scenes/scene12.cpp | 6 +++--- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index ebdcf398de..89b0b2d31f 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -438,6 +438,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { scene11_setupMusic(); _updateCursorCallback = scene11_updateCursor; break; +#endif case SC_12: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_12"); @@ -450,6 +451,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { _updateCursorCallback = defaultUpdateCursor; break; +#if 0 case SC_13: sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_13"); scene->preloadMovements(sceneVar); diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 53cabed166..270c2038b0 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -72,6 +72,9 @@ void scene10_initScene(Scene *sc); int sceneHandler10(ExCommand *cmd); int scene10_updateCursor(); +void scene12_initScene(Scene *sc); +int sceneHandler12(ExCommand *ex); + int scene15_updateCursor(); void scene15_initScene(Scene *sc); int sceneHandler15(ExCommand *cmd); diff --git a/engines/fullpipe/scenes/scene12.cpp b/engines/fullpipe/scenes/scene12.cpp index c5e03917d5..da685a1863 100644 --- a/engines/fullpipe/scenes/scene12.cpp +++ b/engines/fullpipe/scenes/scene12.cpp @@ -35,16 +35,16 @@ namespace Fullpipe { -void scene12_initScene() { +void scene12_initScene(Scene *sc) { GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("SC_12"); g_fp->_floaters->init(var); - g_vars->scene12_fly = g_fp->getObjectState("Муха_12"); + g_vars->scene12_fly = g_fp->getObjectState(sO_Fly_12); if (g_vars->scene12_fly) g_vars->scene12_flyCountdown = 600 * g_fp->_rnd->getRandomNumber(32767) / 0x7fff + 600; - g_fp->setObjectState("Муха_12", g_fp->_rnd->getRandomNumber(1)); + g_fp->setObjectState(sO_Fly_12, g_fp->_rnd->getRandomNumber(1)); } void sceneHandler12_updateFloaters() { -- cgit v1.2.3 From 8600bdecd379f26b65e9aaabda3a19f8e81cbde6 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 24 Dec 2013 18:53:44 +0200 Subject: FULLPIPE: Catch unplugged scenes --- engines/fullpipe/scenes.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 89b0b2d31f..b4f95d3715 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -792,6 +792,8 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { default: _behaviorManager->initBehavior(0, 0); + + error("Unknown scene %d", entrance->_sceneId); break; } -- cgit v1.2.3 From 0e14a8ecbef2f402a06b6f518b33d1d56d96f3e1 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 25 Dec 2013 13:58:07 +0200 Subject: FULLPIPE: Implement sceneHandler12_updateFloaters() --- engines/fullpipe/scenes/scene12.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene12.cpp b/engines/fullpipe/scenes/scene12.cpp index da685a1863..65f50b465a 100644 --- a/engines/fullpipe/scenes/scene12.cpp +++ b/engines/fullpipe/scenes/scene12.cpp @@ -48,7 +48,11 @@ void scene12_initScene(Scene *sc) { } void sceneHandler12_updateFloaters() { - warning("STUB: sceneHandler12_updateFloaters()"); + g_fp->_floaters->genFlies(g_fp->_currentScene, 397, -50, 100, 6); + + g_fp->_floaters->_array2[0]->countdown = g_fp->_rnd->getRandomNumber(6) + 4; + g_fp->_floaters->_array2[0]->val6 = 397; + g_fp->_floaters->_array2[0]->val7 = -50; } int sceneHandler12(ExCommand *cmd) { -- cgit v1.2.3 From 6bbec02a6e45a728b2c0fde9ce96ef8cd4304bb4 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 25 Dec 2013 17:53:15 +0200 Subject: FULLPIPE: Add a new debug command, "scene" This can be used to view the current scene, or teleport to another one --- engines/fullpipe/console.cpp | 21 +++++++++++++++++++-- engines/fullpipe/console.h | 2 ++ engines/fullpipe/fullpipe.h | 1 + engines/fullpipe/scenes.cpp | 9 +++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/console.cpp b/engines/fullpipe/console.cpp index 587f3dc6e6..06235d3eab 100644 --- a/engines/fullpipe/console.cpp +++ b/engines/fullpipe/console.cpp @@ -20,12 +20,29 @@ * */ +#include "fullpipe/constants.h" #include "fullpipe/fullpipe.h" +#include "fullpipe/gameloader.h" +#include "fullpipe/scene.h" namespace Fullpipe { -Console::Console(FullpipeEngine *vm) : GUI::Debugger() { - _vm = vm; +Console::Console(FullpipeEngine *vm) : GUI::Debugger(), _vm(vm) { + DCmd_Register("scene", WRAP_METHOD(Console, Cmd_Scene)); +} + +bool Console::Cmd_Scene(int argc, const char **argv) { + if (argc != 2) { + int sceneTag = _vm->_currentScene->_sceneId; + DebugPrintf("Current scene: %d (scene tag: %d)\n", _vm->getSceneFromTag(sceneTag), sceneTag); + DebugPrintf("Use %s to change the current scene\n", argv[0]); + return true; + } else { + int scene = _vm->convertScene(atoi(argv[1])); + _vm->_gameLoader->loadScene(scene); + _vm->_gameLoader->gotoScene(scene, TrubaLeft); + return false; + } } } // End of namespace Fullpipe diff --git a/engines/fullpipe/console.h b/engines/fullpipe/console.h index 9c03081b2b..af2b5114ac 100644 --- a/engines/fullpipe/console.h +++ b/engines/fullpipe/console.h @@ -33,6 +33,8 @@ public: private: FullpipeEngine *_vm; + + bool Cmd_Scene(int argc, const char **argv); }; } // End of namespace Fullpipe diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index 75a7630456..5e4389af7b 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -238,6 +238,7 @@ public: Scene *accessScene(int sceneId); void setSceneMusicParameters(GameVar *var); int convertScene(int scene); + int getSceneFromTag(int tag); NGIArchive *_currArchive; diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index b4f95d3715..96d9cba54f 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -214,6 +214,15 @@ int FullpipeEngine::convertScene(int scene) { return scenes[scene - 1]; } +int FullpipeEngine::getSceneFromTag(int tag) { + for (int i = 0; i < ARRAYSIZE(scenes); i++) { + if (scenes[i] == tag) + return i + 1; + } + + return 1; +} + bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) { GameVar *sceneVar; Common::Point sceneDim; -- cgit v1.2.3 From d5f2acb3b24680b3ad0e5c885fb6112c28c1a31b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 25 Dec 2013 23:49:18 +0200 Subject: FULLPIPE: Started implementing sceneHandler11() --- engines/fullpipe/scenes/scene11.cpp | 190 ++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp index d38bc9cee1..240eccf61b 100644 --- a/engines/fullpipe/scenes/scene11.cpp +++ b/engines/fullpipe/scenes/scene11.cpp @@ -141,4 +141,194 @@ void scene11_initScene(Scene *sc) { g_fp->setArcadeOverlay(PIC_CSR_ARCADE5); } +int sceneHandler11(ExCommand *cmd) { +#if 0 + if (cmd->_messageKind != 17) + return 0; + + switch (cmd->_messageNum) { + case MSG_CMN_WINARCADE: + sceneHandler11_winArcade(); + break; + + case MSG_SC11_SITSWINGER: + if (g_fp->getObjectState(sO_Swingie) == getObjectEnumState(sO_Swingie, sO_IsStandingInBoots) + || g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) { + g_fp->setObjectState(sO_Swingie, g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting)); + } + break; + + case MSG_SC11_MANCRY: + playSound(g_vars->scene11_var07, 0); + g_vars->scene11_var07 = 0; + break; + + case MSG_SC11_RESTARTMAN: + sceneHandler11_restartMan(); + break; + + case MSG_SC11_HITMAN: + sceneHandler11_hitMan(); + break; + + case MSG_SC11_MANTOSWING: + sceneHandler11_manToSwing(); + break; + + case MSG_SC11_PUTBOOT: + sceneHandler11_putBoot(); + break; + + case MSG_SC11_SHOWSWING: + sceneHandler11_showSwing(); + break; + + case 107: + if (g_vars->scene11_var02) + sceneHandler11_sub01(); + break; + + case 33: + { + if (!g_fp->_aniMan2) + goto LABEL_27; + + int x = g_fp->_aniMan2->_ox; + g_vars->scene11_var21 = g_fp->_aniMan2->_ox; + int y = g_fp->_aniMan2->_oy; + g_vars->scene11_var22 = g_fp->_aniMan2->_oy; + if (g_vars->scene11_var03) { + if (x > g_fp->_sceneRect.right - 200) + OffsetRect(&g_fp->_sceneRect, x - g_fp->_sceneRect.right + 200, 0); + goto LABEL_26; + } + if (g_vars->scene11_var04) { + g_fp->_currentScene->bg._x = g_fp->_sceneWidth - x; + if (g_vars->scene11_var21 < 910) + g_vars->scene11_var04 = 0; + LABEL_26: + v2 = 1; + LABEL_27: + if (g_vars->scene11_var20) { + if (g_fp->_sceneRect.left >= 534 && g_vars->scene11_var06 < 534) + sceneHandler11_sub06(); + g_vars->scene11_var06 = g_fp->_sceneRect.left; + } + if (!g_vars->scene11_var02) + goto LABEL_50; + v6 = g_vars->scene11_var16; + if (g_vars->scene11_var16 <= 0 || g_vars->scene11_var15 - g_vars->scene11_var16 <= 72) { + v7 = g_vars->scene11_var18; + } else { + sceneHandler11_sub02(); + v7 = 0; + v6 = 0; + g_vars->scene11_var18 = 0; + g_vars->scene11_var16 = 0; + } + if (!g_vars->scene11_var02) + goto LABEL_50; + if (g_vars->scene11_var17 == v7 || v6 <= 0 || g_vars->scene11_var15 - v6 <= 2) { + LABEL_49: + if (g_vars->scene11_var02) { + LABEL_61: + g_fp->_behaviorManager_updateBehaviors(); + g_fp->startSceneTrack(); + return v2; + } + LABEL_50: + if (g_vars->scene11_var19 + || 0.0 == g_vars->scene11_var10 + && (v8 = g_vars->scene11_dudeOnSwing->_movement) != 0 + && v8->_currDynamicPhaseIndex == 45 + && (g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_STATIC), !g_vars->scene11_var02) + && g_vars->scene11_var19) { + if (!g_vars->scene11_swingie->_movement) { + if (g_vars->scene11_boots->_flags & 4 && g_vars->scene11_boots->_statics->_staticsId == ST_BTS11_2) { + sceneHandler11_sub07(); + BehaviorManager_updateBehaviors(&g_behaviorManager); + startSceneTrack(); + return v2; + } + g_vars->scene11_swingie->startAnim(MV_SWR_SWING, 0, -1); + } + } + goto LABEL_61; + } + if (v7 == 1) { + if (!g_vars->scene11_var17) { + sceneHandler11_sub03(); + LABEL_48: + g_vars->scene11_var16 = g_vars->scene11_var15; + goto LABEL_49; + } + } else { + if (v7 != 2) + goto LABEL_48; + if (!g_vars->scene11_var17) { + sceneHandler11_sub04(); + goto LABEL_48; + } + } + sceneHandler11_sub02(); + goto LABEL_48; + } + if (x >= g_fp->_sceneRect.left + 200) { + if (x <= g_fp->_sceneRect.right - 200) { + LABEL_18: + if (y < g_fp->_sceneRect.top + 200) { + g_fp->_currentScene->bg._y = y - g_fp->_sceneRect.top - 300; + y = g_vars->scene11_var22; + x = g_vars->scene11_var21; + } + if (y > g_fp->_sceneRect.bottom - 300) { + g_fp->_currentScene->bg._y = y - g_fp->_sceneRect.bottom + 300; + x = g_vars->scene11_var21; + } + if (x >= 940) + g_vars->scene11_var04 = 1; + goto LABEL_26; + } + g_fp->_currentScene->bg._x = x - g_fp->_sceneRect.right + 300; + } else { + g_fp->_currentScene->bg._x = x - g_fp->_sceneRect.left - 300; + } + y = g_vars->scene11_var22; + x = g_vars->scene11_var21; + goto LABEL_18; + } + + break; + + case 29: + if (g_vars->scene11_var19) { + if (g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y) == g_vars->scene11_swingie && cmd->_keyCode == ANI_INV_BOOT) + sceneHandler11_putBoot(); + } else { + if (!g_vars->scene11_var02) + goto LABEL_69; + sceneHandler11_sub05(); + g_vars->scene11_var16 = g_vars->scene11_var15; + } + if (!g_vars->scene11_var02) { + LABEL_69: + v10 = (GameObject *)Scene_getStaticANIObjectAtPos(g_fp->_currentScene, cmd->_sceneClickX, cmd->_sceneClickY); + if (!v10 || !canInteractAny(&g_fp->_aniMan->go, v10, cmd->_keyCode)) { + v11 = Scene_getPictureObjectIdAtPos(g_fp->_currentScene, cmd->_sceneClickX, cmd->_sceneClickY); + v12 = (GameObject *)Scene_getPictureObjectById(g_fp->_currentScene, v11, 0); + if (!v12 || !canInteractAny(g_fp->_aniMan, v12, cmd->_keyCode)) { + if ((v13 = cmd->_sceneClickX, g_fp->_sceneRect.right - v13 < 47) && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1 || v13 - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0) { + processArcade(cmd); + return 0; + } + } + } + return 0; + } + } +#endif + + return 0; +} + } // End of namespace Fullpipe -- cgit v1.2.3 From 925c839a07930ac02626efbd3fee6d1881446e16 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 26 Dec 2013 00:23:51 +0200 Subject: FULLPIPE: Remove obsolete comment --- engines/fullpipe/motion.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index f680492458..45ff4ae5f0 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -1226,7 +1226,6 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int if (_items2[idx]->_subItems[idxsub]._staticsId1 != obj->_statics->_staticsId) movInfo1.flags |= 2; - // FIXME: This somehow corrupts the heap (reported by MSVC) buildMovInfo1SubItems(&movInfo1, &tempLinkList, &linkInfoSource, &linkInfoDest); MessageQueue *mq = buildMovInfo1MessageQueue(&movInfo1); -- cgit v1.2.3