aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2013-11-21 19:11:34 -0800
committerEugene Sandulenko2013-11-22 00:45:32 -0700
commit13529e06fde001244cc7c20e5b9f630a6ecb0823 (patch)
tree91f7a14f1966cb524a9133adfe242eb33c66000a
parentaf4d1227b183c724c2b8de078abf0c7ca33e00de (diff)
downloadscummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.tar.gz
scummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.tar.bz2
scummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.zip
FULLPIPE: Further work on sceneSwitcher04
-rw-r--r--engines/fullpipe/scenes/scene04.cpp480
1 files changed, 244 insertions, 236 deletions
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index a8bd75adf7..2d594df462 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -214,260 +214,268 @@ int scene04_updateCursor() {
int sceneHandler04(ExCommand *ex) {
#if 0
v2 = 0;
- if (ex->msg.messageKind != 17)
- return v2;
- v3 = ex->messageNum;
- if (v3 <= (signed int)MSG_UPDATEBOTTLE) {
- if (v3 == MSG_UPDATEBOTTLE) {
- sceneHandler04_msgUpdateBottle();
- return v2;
+
+ if (ex->_messageKind != 17)
+ return 0;
+
+ switch (ex->_messageNum) {
+ case MSG_UPDATEBOTTLE:
+ sceneHandler04_msgUpdateBottle();
+ break;
+
+ case MSG_CLICKBOTTLE:
+ sceneHandler04_clickBottle();
+ break;
+
+ case MSG_SHOOTKOZAW:
+ sceneHandler04_chootKozyawka();
+ break;
+
+ case MSG_SHAKEBOTTLE:
+ if (!g_vars->scene04_var02)
+ ++g_vars->scene04_var20;
+ break;
+
+ case MSG_STARTHAND:
+ g_vars->scene04_var09 = 1;
+ g_vars->scene04_coinPut = 0;
+ if (g_vars->scene04_var10)
+ sceneHandler04_sub1(0);
+ sceneHandler04_sub15();
+ sceneHandler04_stopSound();
+ break;
+
+ case MSG_TAKEKOZAW:
+ sceneHandler04_takeKozyawka();
+ break;
+
+ case MSG_CLICKBUTTON:
+ sceneHandler04_clickButton();
+ break;
+
+ case MSG_CLICKPLANK:
+ sceneHandler04_clickPlank();
+ break;
+
+ case MSG_RAISEPLANK:
+ sceneHandler04_raisePlank();
+ break;
+
+ case MSG_KOZAWRESTART:
+ if (g_vars->scene04_var05) {
+ CObList::AddTail(&g_vars->scene04_kozyawkiObjList, g_vars->scene04_var05);
+ StaticANIObject_hide((StaticANIObject *)g_vars->scene04_var05);
+ g_vars->scene04_var05 = 0;
}
- if (v3 > (signed int)MSG_CLICKPLANK) {
- switch (v3) {
- case MSG_CLICKBOTTLE:
- sceneHandler04_clickBottle();
- break;
- case MSG_SHOOTKOZAW:
- sceneHandler04_chootKozyawka();
- break;
- case MSG_SHAKEBOTTLE:
- if (!g_vars_scene04_var02)
- ++g_vars_scene04_var20;
- break;
- case MSG_STARTHAND:
- g_vars_scene04_var09 = 1;
- g_vars_scene04_coinPut = 0;
- if (g_vars_scene04_var10)
- sceneHandler04_sub1(0);
- sceneHandler04_sub15();
- sceneHandler04_stopSound();
- break;
- case MSG_TAKEKOZAW:
- sceneHandler04_takeKozyawka();
- break;
- case MSG_CLICKBUTTON:
- sceneHandler04_clickButton();
- break;
- default:
- return v2;
+ if (g_vars->scene04_soundPlaying)
+ sceneHandler04_sub3();
+
+ break;
+
+ case MSG_LOWERPLANK:
+ sceneHandler04_lowerPlank();
+ break;
+
+ case MSG_TESTPLANK:
+ sceneHandler04_testPlank((int)ex);
+ break;
+
+ case 33:
+ v4 = g_aniMan;
+ v5 = g_aniMan->GameObject.ox;
+ g_vars->scene04_dudePosX = g_aniMan->GameObject.ox;
+ g_vars->scene04_dudePosY = g_aniMan->GameObject.oy;
+
+ int res = 0;
+ if (g_aniMan2) {
+ v6 = g_sceneRect.left;
+ if (v5 < g_sceneRect.left + 200) {
+ g_currentScene->bg.x = v5 - g_sceneRect.left - 300;
+ v5 = g_vars->scene04_dudePosX;
+ v4 = g_aniMan;
+ v6 = g_sceneRect.left;
}
- } else {
- if (v3 == MSG_CLICKPLANK) {
- sceneHandler04_clickPlank();
- return v2;
+ if (v5 > g_sceneRect.right - 200) {
+ g_currentScene->bg.x = v5 - g_sceneRect.right + 300;
+ v4 = g_aniMan;
+ v6 = g_sceneRect.left;
}
- if (v3 > (signed int)MSG_LOWERPLANK) {
- v17 = v3 - MSG_KOZAWRESTART;
- if (v17) {
- if (v17 == 1)
- sceneHandler04_raisePlank();
- } else {
- if (g_vars_scene04_var05) {
- CObList::AddTail(&g_vars_scene04_kozyawkiObjList, g_vars_scene04_var05);
- StaticANIObject_hide((StaticANIObject *)g_vars_scene04_var05);
- g_vars_scene04_var05 = 0;
- }
- if (g_vars_scene04_soundPlaying)
- sceneHandler04_sub3();
- }
- } else {
- if (v3 == MSG_LOWERPLANK) {
- sceneHandler04_lowerPlank();
- return v2;
- }
- if (v3 != 29) {
- if (v3 != 33) {
- if (v3 == MSG_TESTPLANK)
- sceneHandler04_testPlank((int)ex);
- return v2;
- }
- v4 = g_aniMan;
- v5 = g_aniMan->GameObject.ox;
- g_vars_scene04_dudePosX = g_aniMan->GameObject.ox;
- g_vars_scene04_dudePosY = g_aniMan->GameObject.oy;
- if (!g_aniMan2)
- goto LABEL_130;
- v6 = g_sceneRect.left;
- if (v5 < g_sceneRect.left + 200) {
- g_currentScene->bg.x = v5 - g_sceneRect.left - 300;
- v5 = g_vars_scene04_dudePosX;
- v4 = g_aniMan;
- v6 = g_sceneRect.left;
- }
- if (v5 > g_sceneRect.right - 200) {
- g_currentScene->bg.x = v5 - g_sceneRect.right + 300;
- v4 = g_aniMan;
- v6 = g_sceneRect.left;
- }
- v2 = 1;
- if (g_aniMan2) {
- if (g_vars_scene04_soundPlaying) {
- v8 = v4->movement;
- if (v8) {
- if (v8->GameObject.id == MV_MAN_TOLADDER) {
- g_aniMan2 = 0;
- if (v6 > 380)
- g_currentScene->bg.x = 380 - v6;
- }
- }
- }
- } else {
- LABEL_130:
- v7 = v4->movement;
- if (v7 && v7->GameObject.id == MV_MAN_GOD)
- g_aniMan2 = v4;
- }
- sceneHandler04_sub4();
- if (g_vars_scene04_var07 && !g_vars_scene04_var09)
- sceneHandler04_sub5();
- if (g_vars_scene04_var12)
- sceneHandler04_sub6();
- if (g_vars_scene04_var08)
- sceneHandler04_clickLadder();
- 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_var01) {
- if (!g_vars_scene04_soundPlaying)
- goto LABEL_46;
- 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();
- }
- if (g_vars_scene04_soundPlaying) {
- LABEL_47:
- BehaviorManager_updateBehaviors(&g_behaviorManager);
- return v2;
- }
- LABEL_46:
- startSceneTrack();
- goto LABEL_47;
- }
- v12 = Scene_getPictureObjectIdAtPos(g_currentScene, ex->msg.sceneClickX, ex->msg.sceneClickY);
- LOWORD(sceneHandler_pic) = v12;
- if (g_vars_scene04_var10) {
- sceneHandler04_sub1(ex);
- return v2;
- }
- 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;
- return v2;
- }
- goto LABEL_52;
- }
- 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_aniMan->GameObject, v14, LOWORD(ex->msg.keyCode))) {
- v15 = (GameObject *)Scene_getPictureObjectById(g_currentScene, sceneHandler_pic, 0);
- if (!v15 || !canInteractAny(&g_aniMan->GameObject, v15, LOWORD(ex->msg.keyCode))) {
- if ((v16 = ex->msg.sceneClickX, g_sceneRect.right - v16 < 47) && g_sceneRect.right < g_sceneWidth - 1
- || v16 - g_sceneRect.left < 47 && g_sceneRect.left > 0)
- sceneHandlers_sub01(ex);
+ res = 1;
+
+ if (g_vars->scene04_soundPlaying) {
+ v8 = v4->movement;
+ if (v8) {
+ if (v8->GameObject.id == MV_MAN_TOLADDER) {
+ g_aniMan2 = 0;
+ if (v6 > 380)
+ g_currentScene->bg.x = 380 - v6;
}
}
}
+ } else {
+ v7 = v4->movement;
+ if (v7 && v7->GameObject.id == MV_MAN_GOD)
+ g_aniMan2 = v4;
}
- return v2;
- }
- if (v3 > (signed int)MSG_SC4_MANFROMBOTTLE) {
- if (v3 > (signed int)MSG_SC4_HANDOVER) {
- if (v3 == MSG_SC4_HIDEBOOT) {
- GameObject_setFlags(&g_vars_scene04_boot->GameObject, g_vars_scene04_boot->GameObject.flags & 0xFFFB);
- } else if (v3 == MSG_CMN_WINARCADE) {
- sceneHandler04_winArcade();
+
+ sceneHandler04_sub4();
+ if (g_vars->scene04_var07 && !g_vars->scene04_var09)
+ sceneHandler04_sub5();
+ if (g_vars->scene04_var12)
+ sceneHandler04_sub6();
+ if (g_vars->scene04_var08)
+ sceneHandler04_clickLadder();
+ 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_var01) {
+ if (!g_vars->scene04_soundPlaying) {
+ startSceneTrack();
+
+ BehaviorManager_updateBehaviors(&g_behaviorManager);
+ return res;
}
- return v2;
+ 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();
}
- if (v3 == MSG_SC4_HANDOVER) {
- g_vars_scene04_var09 = 0;
- g_vars_scene04_var19 = 1;
- return v2;
+
+ if (g_vars->scene04_soundPlaying) {
+ BehaviorManager_updateBehaviors(&g_behaviorManager);
+ return res;
}
- v20 = v3 - MSG_SC4_KOZAWFALL;
- if (v20) {
- v21 = v20 - 37;
- if (v21) {
- if (v21 == 1) // MSG_SC4_DROPBOTTLE
- sceneHandler04_dropBottle();
- } else { // MSG_SC4_COINOUT
- StaticANIObject_changeStatics2(g_vars_scene04_clock, ST_CLK_CLOSED);
- g_vars_scene04_coinPut = 0;
- sceneHandler04_stopSound();
- if (g_vars_scene04_kozyawkiAni.m_nCount && !g_vars_scene04_var02) {
- g_vars_scene04_var09 = 1;
- if (g_vars_scene04_var10)
- sceneHandler04_sub1(0);
- sceneHandler04_sub15();
- }
+
+ startSceneTrack();
+
+ BehaviorManager_updateBehaviors(&g_behaviorManager);
+ return res;
+
+ 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 (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;
+
+ break;
}
- return v2;
+ sceneHandler04_gotoLadder(0);
+
+ break;
}
- if (g_vars_scene04_var11) {
- sceneHandler04_sub9((void *)dword_476E54);
- g_vars_scene04_var11 = 0;
- v22 = (ExCommand *)operator new(sizeof(ExCommand));
- if (v22) {
- v23 = ExCommand_ctor(v22, 0, 35, SND_4_010, 0, 0, 0, 1, 0, 0, 0);
- LABEL_119:
- v24 = v23->excFlags | 2;
- v23->msg.field_14 = 5;
- v23->excFlags = v24;
- ExCommand_postMessage(v23);
- return v2;
+ 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_aniMan->GameObject, v14, LOWORD(ex->msg.keyCode))) {
+ v15 = (GameObject *)Scene_getPictureObjectById(g_currentScene, sceneHandler_pic, 0);
+ if (!v15 || !canInteractAny(&g_aniMan->GameObject, v15, LOWORD(ex->msg.keyCode))) {
+ if ((v16 = ex->msg.sceneClickX, g_sceneRect.right - v16 < 47) && g_sceneRect.right < g_sceneWidth - 1
+ || v16 - g_sceneRect.left < 47 && g_sceneRect.left > 0)
+ sceneHandlers_sub01(ex);
}
- } else {
- v25 = (ExCommand *)operator new(sizeof(ExCommand));
- if (v25) {
- v23 = ExCommand_ctor(v25, 0, 35, SND_4_012, 0, 0, 0, 1, 0, 0, 0);
- goto LABEL_119;
+ }
+
+ break;
+
+ case MSG_SC4_HIDEBOOT:
+ g_vars->scene04_boot->_flags &= 0xfffb;
+ break;
+
+ case MSG_CMN_WINARCADE:
+ sceneHandler04_winArcade();
+ break;
+
+ case MSG_SC4_HANDOVER:
+ g_vars->scene04_var09 = 0;
+ g_vars->scene04_var19 = 1;
+ break;
+
+ case MSG_SC4_DROPBOTTLE:
+ sceneHandler04_dropBottle();
+ break;
+
+ case MSG_SC4_COINOUT:
+ StaticANIObject_changeStatics2(g_vars->scene04_clock, ST_CLK_CLOSED);
+ 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_var10)
+ sceneHandler04_sub1(0);
+
+ sceneHandler04_sub15();
+ }
+
+ break;
+
+ case MSG_SC4_KOZAWFALL:
+ {
+ ExCommand *exnew;
+
+ if (g_vars->scene04_var11) {
+ sceneHandler04_sub9(g_vars->scene04_var24);
+
+ g_vars->scene04_var11 = 0;
+
+ exnew = new ExCommand(0, 35, SND_4_010, 0, 0, 0, 1, 0, 0, 0);
+ } else {
+ exnew = new ExCommand(0, 35, SND_4_012, 0, 0, 0, 1, 0, 0, 0);
}
+
+ exnew->_field_14 = 5;
+ exnew->_excFlags |= 2;
+ exnew->postMessage();
+ break;
}
- v23 = 0;
- goto LABEL_119;
- }
- if (v3 == MSG_SC4_MANFROMBOTTLE) {
+
+ case MSG_SC4_MANFROMBOTTLE:
sceneHandler04_manFromBottle();
return v2;
+
+ case MSG_SC4_CLICKLADDER:
+ sceneHandler04_clickLadder();
+ break;
+
+ case MSG_SC4_MANTOBOTTLE:
+ sceneHandler04_manToBottle();
+ break;
+
+ case MSG_SHOWCOIN:
+ sceneHandler04_showCoin();
+ return v2;
+
+ case MSG_TAKEBOTTLE:
+ sceneHandler04_takeBottle();
+ return v2;
+
+ case MSG_GOTOLADDER:
+ sceneHandler04_gotoLadder(0);
+ break;
+
+ case MSG_SC4_COINPUT:
+ g_vars->scene04_coinPut = 1;
+ break;
}
- if (v3 > (signed int)MSG_SHOWCOIN) {
- if (v3 == MSG_SC4_CLICKLADDER) {
- sceneHandler04_clickLadder();
- } else if (v3 == MSG_SC4_MANTOBOTTLE) {
- sceneHandler04_manToBottle();
- }
- } else {
- if (v3 == MSG_SHOWCOIN) {
- sceneHandler04_showCoin();
- return v2;
- }
- v18 = v3 - MSG_TAKEBOTTLE;
- if (!v18) {
- sceneHandler04_takeBottle();
- return v2;
- }
- v19 = v18 - 4;
- if (!v19) { // MSG_GOTOLADDER
- LABEL_52:
- sceneHandler04_gotoLadder(0);
- return v2;
- }
- if (v19 == 414) // MSG_SC4_COINPUT
- g_vars_scene04_coinPut = 1;
- }
- return v2;
+
+ return 0;
#endif
warning("STUB: sceneHandler04()");