diff options
author | Eugene Sandulenko | 2013-11-21 19:11:34 -0800 |
---|---|---|
committer | Eugene Sandulenko | 2013-11-22 00:45:32 -0700 |
commit | 13529e06fde001244cc7c20e5b9f630a6ecb0823 (patch) | |
tree | 91f7a14f1966cb524a9133adfe242eb33c66000a /engines/fullpipe | |
parent | af4d1227b183c724c2b8de078abf0c7ca33e00de (diff) | |
download | scummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.tar.gz scummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.tar.bz2 scummvm-rg350-13529e06fde001244cc7c20e5b9f630a6ecb0823.zip |
FULLPIPE: Further work on sceneSwitcher04
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 480 |
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()"); |