[Scummvm-cvs-logs] scummvm master -> 70e471acd7edb03c32a9c33038558887d7e1e99d

sev- sev at scummvm.org
Fri Nov 22 08:46:19 CET 2013


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
af4d1227b1 FULLPIPE: Started work on sceneSwitcher04
13529e06fd FULLPIPE: Further work on sceneSwitcher04
dc2685ddef FULLPIPE: More work on sceneSwitcher04
8ae2cf1ed4 FULLPIPE: Implement switchScene04
b0ca746a18 FULLPIPE: More work on scene 4
70e471acd7 FULLPIPE: Continued work on scene 4


Commit: af4d1227b183c724c2b8de078abf0c7ca33e00de
    https://github.com/scummvm/scummvm/commit/af4d1227b183c724c2b8de078abf0c7ca33e00de
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:31-08:00

Commit Message:
FULLPIPE: Started work on sceneSwitcher04

Changed paths:
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 6a2b32a..a8bd75a 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -212,6 +212,264 @@ 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 (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;
+			}
+		} else {
+			if (v3 == MSG_CLICKPLANK) {
+				sceneHandler04_clickPlank();
+				return v2;
+			}
+			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);
+					}
+				}
+			}
+		}
+		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();
+			}
+			return v2;
+		}
+		if (v3 == MSG_SC4_HANDOVER) {
+			g_vars_scene04_var09 = 0;
+			g_vars_scene04_var19 = 1;
+			return v2;
+		}
+		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();
+				}
+			}
+			return v2;
+		}
+		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;
+			}
+		} 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;
+			}
+		}
+		v23 = 0;
+		goto LABEL_119;
+	}
+	if (v3 == MSG_SC4_MANFROMBOTTLE) {
+		sceneHandler04_manFromBottle();
+		return v2;
+	}
+	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;
+
+#endif
 	warning("STUB: sceneHandler04()");
 
 	return 0;


Commit: 13529e06fde001244cc7c20e5b9f630a6ecb0823
    https://github.com/scummvm/scummvm/commit/13529e06fde001244cc7c20e5b9f630a6ecb0823
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:32-08:00

Commit Message:
FULLPIPE: Further work on sceneSwitcher04

Changed paths:
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index a8bd75a..2d594df 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()");


Commit: dc2685ddef6466f462638e8e9d835651d94918d1
    https://github.com/scummvm/scummvm/commit/dc2685ddef6466f462638e8e9d835651d94918d1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:32-08:00

Commit Message:
FULLPIPE: More work on sceneSwitcher04

Changed paths:
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 741835f..0ed1b82 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -101,7 +101,7 @@ public:
 	int scene04_var01;
 	int scene04_var02;
 	int scene04_var04;
-	int scene04_var05;
+	StaticANIObject *scene04_var05;
 	int scene04_var06;
 	int scene04_var07;
 	int scene04_var08;
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 2d594df..c51a6d7 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -213,8 +213,6 @@ int scene04_updateCursor() {
 
 int sceneHandler04(ExCommand *ex) {
 #if 0
-	v2 = 0;
-
 	if (ex->_messageKind != 17)
 		return 0;
 
@@ -239,8 +237,10 @@ int sceneHandler04(ExCommand *ex) {
 	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;
@@ -263,8 +263,8 @@ int sceneHandler04(ExCommand *ex) {
 
 	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_kozyawkiObjList.push_back(g_vars->scene04_var05);
+			g_vars->scene04_var05->hide();
 			g_vars->scene04_var05 = 0;
 		}
 		if (g_vars->scene04_soundPlaying)
@@ -281,61 +281,62 @@ int sceneHandler04(ExCommand *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;
+		g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox;
+		g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_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;
+
+		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 (v5 > g_sceneRect.right - 200) {
-				g_currentScene->bg.x = v5 - g_sceneRect.right + 300;
-				v4 = g_aniMan;
-				v6 = g_sceneRect.left;
+			if (g_fullpipe->_aniMan->_ox > g_fullpipe->_sceneRect.right - 200) {
+				g_currentScene->_x = g_fullpipe->_aniMan->_ox - g_fullpipe->_sceneRect.right + 300;
 			}
+
 			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;
+				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;
 					}
 				}
 			}
 		} else {
-			v7 = v4->movement;
-			if (v7 && v7->GameObject.id == MV_MAN_GOD)
-				g_aniMan2 = v4;
+			v7 = ;
+			if (g_fullpipe->_aniMan->_movement && g_fullpipe->_aniMan->_movement->_id == MV_MAN_GOD)
+				g_fullpipe->_aniMan2 = g_fullpipe->_aniMan;
 		}
 
 		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)
+
+		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);
+				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;
@@ -344,13 +345,15 @@ int sceneHandler04(ExCommand *ex) {
 		}
 
 		if (g_vars->scene04_soundPlaying) {
-			BehaviorManager_updateBehaviors(&g_behaviorManager);
+			g_fullpipe->_behaviorManager->updateBehaviors();
+
 			return res;
 		}
 
 		startSceneTrack();
 
-		BehaviorManager_updateBehaviors(&g_behaviorManager);
+		g_fullpipe->_behaviorManager->updateBehaviors();
+
 		return res;
 
 	case 29:
@@ -382,11 +385,11 @@ int sceneHandler04(ExCommand *ex) {
 			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))) {
+		} 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_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)
+			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);
 			}
 		}


Commit: 8ae2cf1ed418cec0cd3dec6758900068ad173c02
    https://github.com/scummvm/scummvm/commit/8ae2cf1ed418cec0cd3dec6758900068ad173c02
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:32-08:00

Commit Message:
FULLPIPE: Implement switchScene04

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index a2e8121..fd1a011 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 801734e..6771fe8 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 0ed1b82..4131fbb 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 c51a6d7..119fed5 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


Commit: b0ca746a185a137be3848ebc1dec321243b485ec
    https://github.com/scummvm/scummvm/commit/b0ca746a185a137be3848ebc1dec321243b485ec
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:32-08:00

Commit Message:
FULLPIPE: More work on scene 4

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index fd1a011..0ca1dd5 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -118,6 +118,7 @@ namespace Fullpipe {
 #define MV_MAN_TOLADDER 448
 #define MV_MAN_TOLADDER2 2841
 #define MV_MAN_TURN_LU 486
+#define MV_PNK_WEIGHTRIGHT 502
 #define MV_SPK4_PLAY 3276
 #define PIC_CMN_EVAL 3468
 #define PIC_CSR_DEFAULT 4891
@@ -180,6 +181,7 @@ namespace Fullpipe {
 #define QU_INTR_FINISH 5138
 #define QU_INTR_GETUPMAN 5136
 #define QU_INTR_STARTINTRO 5133
+#define QU_PNK_CLICK 550
 #define QU_SC3_ENTERLIFT 2779
 #define QU_SC3_EXITLIFT 2808
 #define SC_1 301
@@ -236,6 +238,7 @@ namespace Fullpipe {
 #define SC_TITLES 5166
 #define SND_4_010 3125
 #define SND_4_012 3127
+#define SND_4_033 4990
 #define SND_CMN_031 3516
 #define SND_CMN_070 5199
 #define SND_INTR_019 5220
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 119fed5..6db3359 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -217,7 +217,8 @@ void sceneHandlers_sub01(ExCommand *ex) {
 }
 
 void sceneHandler04_clickBottle() {
-	warning("sceneHandler04_clickBottle()");
+	if (!g_vars->scene04_var02)
+		g_vars->scene04_var20 += 5;
 }
 
 void sceneHandler04_clickButton() {
@@ -228,8 +229,17 @@ void sceneHandler04_clickLadder() {
 	warning("sceneHandler04_clickLadder()");
 }
 
+void sceneHandler04_sub13() {
+	warning("sceneHandler04_sub13()");
+}
+
 void sceneHandler04_clickPlank() {
-	warning("sceneHandler04_clickPlank()");
+	if (sceneHandler04_friesAreWalking())
+		sceneHandler04_sub13();
+	else if (g_vars->scene04_var01)
+		g_fullpipe->playSound(SND_4_033, 0);
+	else if (!g_vars->scene04_soundPlaying)
+		chainQueue(QU_PNK_CLICK, 0);
 }
 
 void sceneHandler04_dropBottle() {


Commit: 70e471acd7edb03c32a9c33038558887d7e1e99d
    https://github.com/scummvm/scummvm/commit/70e471acd7edb03c32a9c33038558887d7e1e99d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-11-21T23:45:32-08:00

Commit Message:
FULLPIPE: Continued work on scene 4

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene04.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 0ca1dd5..087a768 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -46,6 +46,7 @@ namespace Fullpipe {
 #define ANI_PLANK 501
 #define ANI_SC2_BOX 1020
 #define ANI_SC4_BOOT 1035
+#define ANI_SC4_COIN 690
 #define ANI_SPEAKER_4 3275
 #define ANI_SPRING 542
 #define MSG_CLICKBOTTLE 569
@@ -107,9 +108,11 @@ namespace Fullpipe {
 #define MV_IN1MAN_SLEEP 5111
 #define MV_KZW_JUMP 558
 #define MV_KZW_JUMPROTATE 561
+#define MV_BDG_OPEN 1379
 #define MV_MAN_GOD 481
 #define MV_MAN_GOLADDER 451
 #define MV_MAN_GOLADDER2 2844
+#define MV_MAN_GOU 460
 #define MV_MAN_LOOKUP 4773
 #define MV_MAN_STARTLADDER 452
 #define MV_MAN_STARTLADDER2 2842
@@ -118,7 +121,9 @@ namespace Fullpipe {
 #define MV_MAN_TOLADDER 448
 #define MV_MAN_TOLADDER2 2841
 #define MV_MAN_TURN_LU 486
+#define MV_PNK_WEIGHTLEFT 541
 #define MV_PNK_WEIGHTRIGHT 502
+#define MV_SC4_COIN_default 1029
 #define MV_SPK4_PLAY 3276
 #define PIC_CMN_EVAL 3468
 #define PIC_CSR_DEFAULT 4891
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 4131fbb..277beb0 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -90,7 +90,7 @@ public:
 	Common::Point scene04_jumpRotateKozyawki[20];
 
 	Common::Array<StaticANIObject *> scene04_kozyawkiObjList;
-	Common::Array<PictureObject *> scene04_bottleObjList;
+	Common::Array<GameObject *> scene04_bottleObjList;
 	Common::Array<StaticANIObject *> scene04_kozyawkiAni;
 
 	int scene04_ladder;
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 6db3359..5e14547 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -251,7 +251,7 @@ void sceneHandler04_gotoLadder(int par) {
 }
 
 void sceneHandler04_lowerPlank() {
-	warning("sceneHandler04_lowerPlank()");
+	g_vars->scene04_plank->startAnim(MV_PNK_WEIGHTRIGHT, 0, -1);
 }
 
 void sceneHandler04_manFromBottle() {
@@ -259,11 +259,15 @@ void sceneHandler04_manFromBottle() {
 }
 
 void sceneHandler04_manToBottle() {
-	warning("sceneHandler04_manToBottle()");
+	g_vars->scene04_bottleObjList.push_back(g_fullpipe->_aniMan);
+	g_vars->scene04_var20 = 5;
+	g_vars->scene04_var06 += 9;
+	g_fullpipe->_aniMan2 = g_fullpipe->_aniMan;
+	g_vars->scene04_var10 = 1;
 }
 
 void sceneHandler04_raisePlank() {
-	warning("sceneHandler04_raisePlank()");
+	g_vars->scene04_plank->startAnim(MV_PNK_WEIGHTLEFT, 0, -1);
 }
 
 void sceneHandler04_shootKozyawka() {
@@ -271,7 +275,13 @@ void sceneHandler04_shootKozyawka() {
 }
 
 void sceneHandler04_showCoin() {
-	warning("sceneHandler04_showCoin()");
+	StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1);
+
+	if (ani) {
+		ani->show1(MV_BDG_OPEN, MV_MAN_GOU, MV_SC4_COIN_default, 0);
+
+		ani->_priority = 40;
+	}
 }
 
 void sceneHandler04_stopSound() {






More information about the Scummvm-git-logs mailing list