diff options
author | Eugene Sandulenko | 2013-11-21 21:04:24 -0800 |
---|---|---|
committer | Eugene Sandulenko | 2013-11-22 00:45:32 -0700 |
commit | 8ae2cf1ed418cec0cd3dec6758900068ad173c02 (patch) | |
tree | 89d5b4cadae365f2d710192e1ece83fa9ed13512 | |
parent | dc2685ddef6466f462638e8e9d835651d94918d1 (diff) | |
download | scummvm-rg350-8ae2cf1ed418cec0cd3dec6758900068ad173c02.tar.gz scummvm-rg350-8ae2cf1ed418cec0cd3dec6758900068ad173c02.tar.bz2 scummvm-rg350-8ae2cf1ed418cec0cd3dec6758900068ad173c02.zip |
FULLPIPE: Implement switchScene04
-rw-r--r-- | engines/fullpipe/constants.h | 30 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 5 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 6 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 300 |
4 files changed, 251 insertions, 90 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index a2e8121f8f..fd1a0112b0 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -48,6 +48,9 @@ namespace Fullpipe { #define ANI_SC4_BOOT 1035 #define ANI_SPEAKER_4 3275 #define ANI_SPRING 542 +#define MSG_CLICKBOTTLE 569 +#define MSG_CLICKBUTTON 609 +#define MSG_CLICKPLANK 549 #define MSG_CMN_WINARCADE 4778 #define MSG_DISABLESAVES 5201 #define MSG_ENABLESAVES 5202 @@ -57,13 +60,16 @@ namespace Fullpipe { #define MSG_INTR_GETUPMAN 5135 #define MSG_INTR_SWITCHTO1 5145 #define MSG_INTR_SWITCHTO2 5134 +#define MSG_KOZAWRESTART 546 #define MSG_LIFT_CLICKBUTTON 2780 #define MSG_LIFT_CLOSEDOOR 5194 #define MSG_LIFT_EXITLIFT 5187 #define MSG_LIFT_GO 1065 #define MSG_LIFT_STARTEXITQUEUE 5186 +#define MSG_LOWERPLANK 540 #define MSG_MANSHADOWSOFF 5196 #define MSG_MANSHADOWSON 5197 +#define MSG_RAISEPLANK 547 #define MSG_RESTARTGAME 4767 #define MSG_SC1_SHOWOSK 1019 #define MSG_SC1_SHOWOSK2 468 @@ -78,10 +84,30 @@ namespace Fullpipe { #define MSG_SC3_TAKEEGG 1583 #define MSG_SC3_TESTFAT 1582 #define MSG_SC3_UTRUBACLICK 1103 +#define MSG_SC4_COINOUT 2895 +#define MSG_SC4_COINPUT 1032 +#define MSG_SC4_CLICKLADDER 1439 +#define MSG_SC4_DROPBOTTLE 2896 +#define MSG_SC4_HANDOVER 2960 +#define MSG_SC4_HIDEBOOT 4563 +#define MSG_SC4_KOZAWFALL 2858 +#define MSG_SC4_MANFROMBOTTLE 2854 +#define MSG_SC4_MANTOBOTTLE 2852 +#define PIC_SC4_LADDER 1438 +#define MSG_GOTOLADDER 618 +#define MSG_SHAKEBOTTLE 584 +#define MSG_SHOOTKOZAW 557 +#define MSG_SHOWCOIN 1033 +#define MSG_STARTHAND 612 +#define MSG_TAKEBOTTLE 614 +#define MSG_TAKEKOZAW 611 +#define MSG_TESTPLANK 538 +#define MSG_UPDATEBOTTLE 613 #define MV_EGTR_FATASK 5332 #define MV_IN1MAN_SLEEP 5111 #define MV_KZW_JUMP 558 #define MV_KZW_JUMPROTATE 561 +#define MV_MAN_GOD 481 #define MV_MAN_GOLADDER 451 #define MV_MAN_GOLADDER2 2844 #define MV_MAN_LOOKUP 4773 @@ -142,6 +168,7 @@ namespace Fullpipe { #define PIC_SC4_BOTTLE 568 #define PIC_SC4_BOTTLE2 2936 #define PIC_SC4_DOWNTRUBA 619 +#define PIC_SC4_LADDER 1438 #define PIC_SC4_LRTRUBA 616 #define PIC_SC4_MASK 585 #define PIC_SC4_PLANK 5183 @@ -207,9 +234,12 @@ namespace Fullpipe { #define SC_MAP 5222 #define SC_TEST 903 #define SC_TITLES 5166 +#define SND_4_010 3125 +#define SND_4_012 3127 #define SND_CMN_031 3516 #define SND_CMN_070 5199 #define SND_INTR_019 5220 +#define ST_CLK_CLOSED 590 #define ST_DYAS_LIES 318 #define ST_EGTR_MID1 2863 #define ST_EGTR_MID2 2869 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 801734eff8..6771fe8ec8 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -73,6 +73,9 @@ Vars::Vars() { scene04_soundPlaying = false; scene04_dynamicPhaseIndex = 0; + scene04_sceneClickX = 0; + scene04_sceneClickY = 0; + scene04_var01 = 0; scene04_var02 = 0; scene04_var04 = 0; @@ -91,6 +94,8 @@ Vars::Vars() { scene04_var17 = 0; scene04_var18 = 0; scene04_var19 = 0; + scene04_var20 = 0; + scene04_var24 = 0; selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 0ed1b82a7e..4131fbb676 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -97,6 +97,10 @@ public: bool scene04_coinPut; bool scene04_soundPlaying; int scene04_dynamicPhaseIndex; + int scene04_sceneClickX; + int scene04_sceneClickY; + int scene04_dudePosX; + int scene04_dudePosY; int scene04_var01; int scene04_var02; @@ -116,6 +120,8 @@ public: int scene04_var17; int scene04_var18; int scene04_var19; + int scene04_var20; + StaticANIObject *scene04_var24; PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index c51a6d7a11..119fed5041 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -32,6 +32,7 @@ #include "fullpipe/scene.h" #include "fullpipe/interaction.h" #include "fullpipe/gameloader.h" +#include "fullpipe/behavior.h" namespace Fullpipe { @@ -211,14 +212,129 @@ int scene04_updateCursor() { return g_fullpipe->_cursorId; } +void sceneHandlers_sub01(ExCommand *ex) { + warning("sceneHandlers_sub01()"); +} + +void sceneHandler04_clickBottle() { + warning("sceneHandler04_clickBottle()"); +} + +void sceneHandler04_clickButton() { + warning("sceneHandler04_clickButton()"); +} + +void sceneHandler04_clickLadder() { + warning("sceneHandler04_clickLadder()"); +} + +void sceneHandler04_clickPlank() { + warning("sceneHandler04_clickPlank()"); +} + +void sceneHandler04_dropBottle() { + warning("sceneHandler04_dropBottle()"); +} + +void sceneHandler04_gotoLadder(int par) { + warning("sceneHandler04_gotoLadder()"); +} + +void sceneHandler04_lowerPlank() { + warning("sceneHandler04_lowerPlank()"); +} + +void sceneHandler04_manFromBottle() { + warning("sceneHandler04_manFromBottle()"); +} + +void sceneHandler04_manToBottle() { + warning("sceneHandler04_manToBottle()"); +} + +void sceneHandler04_raisePlank() { + warning("sceneHandler04_raisePlank()"); +} + +void sceneHandler04_shootKozyawka() { + warning("sceneHandler04_shootKozyawka()"); +} + +void sceneHandler04_showCoin() { + warning("sceneHandler04_showCoin()"); +} + +void sceneHandler04_stopSound() { + warning("sceneHandler04_stopSound()"); +} + +void sceneHandler04_sub1(ExCommand *ex) { + warning("sceneHandler04_sub1()"); +} + +void sceneHandler04_sub3() { + warning("sceneHandler04_sub3()"); +} + +void sceneHandler04_sub4() { + warning("sceneHandler04_sub4()"); +} + +void sceneHandler04_sub5() { + warning("sceneHandler04_sub5()"); +} + +void sceneHandler04_sub6() { + warning("sceneHandler04_sub6()"); +} + +void sceneHandler04_sub7() { + warning("sceneHandler04_sub7()"); +} + +void sceneHandler04_sub8(ExCommand *ex) { + warning("sceneHandler04_sub8()"); +} + +void sceneHandler04_sub9(StaticANIObject *ani) { + warning("sceneHandler04_sub9()"); +} + +void sceneHandler04_sub15() { + warning("sceneHandler04_sub15()"); +} + +void sceneHandler04_sub17() { + warning("sceneHandler04_sub17()"); +} + +void sceneHandler04_takeBottle() { + warning("sceneHandler04_takeBottle()"); +} + +void sceneHandler04_takeKozyawka() { + warning("sceneHandler04_takeKozyawka()"); +} + +void sceneHandler04_testPlank(ExCommand *ex) { + warning("sceneHandler04_testPlank()"); +} + +void sceneHandler04_updateBottle() { + warning("sceneHandler04_updateBottle()"); +} + +void sceneHandler04_winArcade() { + warning("sceneHandler04_winArcade()"); +} + int sceneHandler04(ExCommand *ex) { -#if 0 if (ex->_messageKind != 17) return 0; switch (ex->_messageNum) { case MSG_UPDATEBOTTLE: - sceneHandler04_msgUpdateBottle(); + sceneHandler04_updateBottle(); break; case MSG_CLICKBOTTLE: @@ -226,7 +342,7 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_SHOOTKOZAW: - sceneHandler04_chootKozyawka(); + sceneHandler04_shootKozyawka(); break; case MSG_SHAKEBOTTLE: @@ -277,120 +393,129 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_TESTPLANK: - sceneHandler04_testPlank((int)ex); + sceneHandler04_testPlank(ex); break; case 33: - g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; - g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; + { + g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; + g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; - int res = 0; + int res = 0; - if (g_fullpipe->_aniMan2) { - if (g_fullpipe->_aniMan->_ox < g_fullpipe->_sceneRect.left + 200) { - g_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.left - 300; - g_fullpipe->_aniMan->_ox = g_vars->scene04_dudePosX; - } - if (g_fullpipe->_aniMan->_ox > g_fullpipe->_sceneRect.right - 200) { - g_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.right + 300; - } + 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_fullpipe->_aniMan->_ox > g_fullpipe->_sceneRect.right - 200) { + g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.right + 300; + } - res = 1; + 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_fullpipe->_sceneRect.left > 380) - g_currentScene->bg.x = 380 - g_fullpipe->_sceneRect.left; + 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_fullpipe->_sceneRect.left > 380) + g_fullpipe->_currentScene->_x = 380 - g_fullpipe->_sceneRect.left; + } } } + } else { + if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id == MV_MAN_GOD) + g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; } - } else { - v7 = ; - if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id == MV_MAN_GOD) - g_fullpipe->_aniMan2 = g_fullpipe->_aniMan; - } - sceneHandler04_sub4(); + sceneHandler04_sub4(); - if (g_vars->scene04_var07 && !g_vars->scene04_var09) - sceneHandler04_sub5(); + if (g_vars->scene04_var07 && !g_vars->scene04_var09) + sceneHandler04_sub5(); - if (g_vars->scene04_var12) - sceneHandler04_sub6(); + if (g_vars->scene04_var12) + sceneHandler04_sub6(); - if (g_vars->scene04_var08) - sceneHandler04_clickLadder(); + if (g_vars->scene04_var08) + sceneHandler04_clickLadder(); - if (g_vars->scene04_var10 && g_vars->scene04_hand->_movement) - sceneHandler04_sub1(0); + if (g_vars->scene04_var10 && g_vars->scene04_hand->_movement) + sceneHandler04_sub1(0); - if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying) - sceneHandler04_sub7(); + if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying) + sceneHandler04_sub7(); - if (g_vars->scene04_var01) { - if (!g_vars->scene04_soundPlaying) { - startSceneTrack(); + if (g_vars->scene04_var01) { + if (!g_vars->scene04_soundPlaying) { + g_fullpipe->startSceneTrack(); + g_fullpipe->_behaviorManager->updateBehaviors(); + return res; + } + + g_vars->scene04_var14++; + + if (g_vars->scene04_var14 > 600) + sceneHandler04_sub17(); + } + + if (g_vars->scene04_soundPlaying) { g_fullpipe->_behaviorManager->updateBehaviors(); + return res; } - v11 = __OFSUB__(g_vars->scene04_var14 + 1, 600); - v9 = g_vars->scene04_var14 == 599; - v10 = g_vars->scene04_var14++ - 599 < 0; - if (!((unsigned __int8)(v10 ^ v11) | v9)) - sceneHandler04_sub17(); - } + g_fullpipe->startSceneTrack(); - if (g_vars->scene04_soundPlaying) { g_fullpipe->_behaviorManager->updateBehaviors(); return res; } - startSceneTrack(); + case 29: + { + int picid = g_fullpipe->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY); - g_fullpipe->_behaviorManager->updateBehaviors(); + if (g_vars->scene04_var10) { + sceneHandler04_sub1(ex); - return res; + break; + } - case 29: - v12 = Scene_getPictureObjectIdAtPos(g_currentScene, ex->msg.sceneClickX, ex->msg.sceneClickY); - LOWORD(sceneHandler_pic) = v12; - if (g_vars->scene04_var10) { - sceneHandler04_sub1(ex); - break; - } + if (picid == PIC_SC4_LADDER) { + if (!g_vars->scene04_var04) { + g_vars->scene04_sceneClickX = ex->_sceneClickX; + g_vars->scene04_sceneClickY = ex->_sceneClickY; - if (v12 == PIC_SC4_LADDER) { - if (!g_vars->scene04_var04) { - dword_476CB8 = ex->msg.sceneClickX; - dword_476CBC = ex->msg.sceneClickY; - sceneHandler04_clickLadder(); - ex->msg.messageKind = 0; + sceneHandler04_clickLadder(); + + ex->_messageKind = 0; + + break; + } + + sceneHandler04_gotoLadder(0); break; } - sceneHandler04_gotoLadder(0); - break; - } - v13 = Scene_getStaticANIObjectAtPos(g_currentScene, ex->msg.sceneClickX, ex->msg.sceneClickY); - v14 = (GameObject *)v13; - if (v13 && v13->GameObject.id == ANI_PLANK - || Scene_getPictureObjectIdAtPos(g_currentScene, ex->msg.sceneClickX, ex->msg.sceneClickY) == PIC_SC4_PLANK) { - sceneHandler04_clickPlank(); - ex->msg.messageKind = 0; - } else if (g_vars->scene04_var01) { - sceneHandler04_sub8(ex); - } else if (!v14 || !canInteractAny(&g_fullpipe->_aniMan->GameObject, v14, LOWORD(ex->msg.keyCode))) { - v15 = (GameObject *)Scene_getPictureObjectById(g_currentScene, sceneHandler_pic, 0); - if (!v15 || !canInteractAny(&g_fullpipe->_aniMan->GameObject, v15, LOWORD(ex->msg.keyCode))) { - if ((v16 = ex->msg.sceneClickX, g_fullpipe->_sceneRect.right - v16 < 47) && g_fullpipe->_sceneRect.right < g_sceneWidth - 1 - || v16 - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0) - sceneHandlers_sub01(ex); + StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY); + + if ((ani && ani->_id == ANI_PLANK) || picid == PIC_SC4_PLANK) { + sceneHandler04_clickPlank(); + + ex->_messageKind = 0; + } else if (g_vars->scene04_var01) { + sceneHandler04_sub8(ex); + } else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) { + 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)) + sceneHandlers_sub01(ex); + } } } @@ -414,7 +539,7 @@ int sceneHandler04(ExCommand *ex) { break; case MSG_SC4_COINOUT: - StaticANIObject_changeStatics2(g_vars->scene04_clock, ST_CLK_CLOSED); + g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED); g_vars->scene04_coinPut = 0; sceneHandler04_stopSound(); @@ -451,7 +576,7 @@ int sceneHandler04(ExCommand *ex) { case MSG_SC4_MANFROMBOTTLE: sceneHandler04_manFromBottle(); - return v2; + break; case MSG_SC4_CLICKLADDER: sceneHandler04_clickLadder(); @@ -463,11 +588,11 @@ int sceneHandler04(ExCommand *ex) { case MSG_SHOWCOIN: sceneHandler04_showCoin(); - return v2; + break; case MSG_TAKEBOTTLE: sceneHandler04_takeBottle(); - return v2; + break; case MSG_GOTOLADDER: sceneHandler04_gotoLadder(0); @@ -479,11 +604,6 @@ int sceneHandler04(ExCommand *ex) { } return 0; - -#endif - warning("STUB: sceneHandler04()"); - - return 0; } } // End of namespace Fullpipe |