[Scummvm-cvs-logs] scummvm master -> cbf943c2c696a7d92141a9dff44bac09add4ef39

sev- sev at scummvm.org
Thu Dec 12 17:12:56 CET 2013


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

Summary:
9c7731d288 FULLPIPE: Implement sceneHandler04_clickLadder()
a40a50e7bb FULLPIPE: Implement sceneHandler04_walkClimbLadder() and sceneHandler04_downLadder()
52922fe97c FULLPIPE: Implement sceneHandler04_gotoLadder()
cbf943c2c6 FULLPIPE: Renames in scene04


Commit: 9c7731d288c4d5c7308507947e6e95320291a41a
    https://github.com/scummvm/scummvm/commit/9c7731d288c4d5c7308507947e6e95320291a41a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-12T08:12:10-08:00

Commit Message:
FULLPIPE: Implement sceneHandler04_clickLadder()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index c7969da..4d9718b 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -299,6 +299,7 @@ namespace Fullpipe {
 #define ST_MAN_RIGHT 325
 #define ST_MAN_SIT 1164
 #define ST_MAN_STANDLADDER 453
+#define ST_MAN_UP 449
 #define ST_PNK_WEIGHTLEFT 503
 #define ST_SPR_UP 544
 #define TrubaDown 697
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index c2f5ca3..742b023 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -809,4 +809,17 @@ bool chainQueue(int queueId, int flags) {
 	return true;
 }
 
+void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f14) {
+	ExCommand *ex = new ExCommand(parentId, 17, 64, 0, 0, 0, 1, 0, 0, 0);
+
+	ex->_keyCode = keyCode;
+	ex->_excFlags |= 3;
+	ex->_x = x;
+	ex->_y = y;
+	ex->_field_20 = f20;
+	ex->_field_14 = f14;
+
+	ex->postMessage();
+}
+
 } // End of namespace Fullpipe
diff --git a/engines/fullpipe/messages.h b/engines/fullpipe/messages.h
index 4109b3e..ca61dad 100644
--- a/engines/fullpipe/messages.h
+++ b/engines/fullpipe/messages.h
@@ -178,6 +178,7 @@ void updateGlobalMessageQueue(int id, int objid);
 void clearGlobalMessageQueueList1();
 
 bool chainQueue(int queueId, int flags);
+void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f16);
 
 } // End of namespace Fullpipe
 
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 0c55673..610b21b 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -274,8 +274,55 @@ void sceneHandler04_clickButton() {
 	}
 }
 
+void sceneHandler04_downLadder(int x, int y) {
+	warning("STUB: sceneHandler04_downLadder()");
+}
+
+void sceneHandler04_walkClimbLadder(ExCommand *ex) {
+	warning("STUB: sceneHandler04_walkClimbLadder()");
+}
+
 void sceneHandler04_clickLadder() {
-	warning("STUB: sceneHandler04_clickLadder()");
+	g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox;
+	g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy;
+
+	if (g_vars->scene04_needJumping) {
+		if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) {
+			g_vars->scene04_var08 = 1;
+		} else {
+			int h3 = 3 * g_vars->scene04_ladder->_height;
+			int half = abs(g_vars->scene04_ladder->_height) / 2;
+			int start = g_vars->scene04_ladder->_ladderY - g_vars->scene04_ladder->_ladder_field_24;
+			int min = 2 * h3 + start + half + 1;
+			int max =     h3 + start - half - 1;
+
+			if (g_vars->scene04_sceneClickY > max)
+				g_vars->scene04_sceneClickY = max;
+
+			if (g_vars->scene04_sceneClickY < min)
+				g_vars->scene04_sceneClickY = min;
+
+			sceneHandler04_downLadder(g_vars->scene04_sceneClickX, g_vars->scene04_sceneClickY);
+
+			g_vars->scene04_var08 = 0;
+		}
+	} else {
+		if (g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
+			if (abs(1095 - g_vars->scene04_dudePosX) > 1 || abs(434 - g_vars->scene04_dudePosY) > 1) {
+				MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->method34(g_fullpipe->_aniMan, 1095, 434, 1, ST_MAN_UP);
+				if (mq) {
+					ExCommand *ex = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+					ex->_excFlags = 3;
+					mq->addExCommandToEnd(ex);
+
+					postExCommand(g_fullpipe->_aniMan->_id, 2, 1095, 434, 0, -1);
+				}
+			} else {
+				sceneHandler04_walkClimbLadder(0);
+			}
+		}
+	}
 }
 
 void sceneHandler04_jumpOnLadder() {


Commit: a40a50e7bbfb1dedd647730657e88ac364ec0cfe
    https://github.com/scummvm/scummvm/commit/a40a50e7bbfb1dedd647730657e88ac364ec0cfe
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-12T08:12:10-08:00

Commit Message:
FULLPIPE: Implement sceneHandler04_walkClimbLadder() and sceneHandler04_downLadder()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 4d9718b..ec46e39 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -129,6 +129,7 @@ namespace Fullpipe {
 #define MV_MAN_TOLADDER 448
 #define MV_MAN_TOLADDER2 2841
 #define MV_MAN_TURN_LU 486
+#define MV_MAN_TURN_SUD 1089
 #define MV_PNK_WEIGHTLEFT 541
 #define MV_PNK_WEIGHTRIGHT 502
 #define MV_SC4_COIN_default 1029
@@ -293,6 +294,8 @@ namespace Fullpipe {
 #define ST_LBN_8P 2775
 #define ST_LBN_9N 2777
 #define ST_LBN_9P 2778
+#define ST_MAN_GOLADDER 450
+#define ST_MAN_GOLADDER2 2843
 #define ST_MAN_EMPTY 476
 #define ST_MAN_LADDERDOWN 521
 #define ST_MAN_ONPLANK 552
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 610b21b..11f1463 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -275,11 +275,70 @@ void sceneHandler04_clickButton() {
 }
 
 void sceneHandler04_downLadder(int x, int y) {
-	warning("STUB: sceneHandler04_downLadder()");
+	g_vars->scene04_ladder->method34(g_fullpipe->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0);
 }
 
 void sceneHandler04_walkClimbLadder(ExCommand *ex) {
-	warning("STUB: sceneHandler04_walkClimbLadder()");
+	MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact());
+
+	ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+	ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode;
+	ex1->_excFlags |= 2;
+
+	mq->addExCommandToEnd(ex1);
+
+	ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+	ex2->_keyCode = g_fullpipe->_aniMan->_okeyCode;
+	ex2->_excFlags |= 2;
+
+	mq->addExCommandToEnd(ex2);
+
+	ExCommand *ex3;
+
+	if (ex) {
+		ex3 = new ExCommand(ex);
+	} else {
+		ex3 = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0);
+		ex3->_excFlags |= 3;
+	}
+
+	mq->addExCommandToEnd(ex3);
+
+	mq->setFlags(mq->getFlags() | 1);
+
+	mq->chain(0);
+
+	g_vars->scene04_needJumping = 1;
+
+	g_vars->scene04_ladder = new MctlLadder;
+	g_vars->scene04_ladder->_objId = MV_MAN_TURN_SUD;
+	g_vars->scene04_ladder->_ladderY = 406;
+	g_vars->scene04_ladder->_ladder_field_14 = 12;
+	g_vars->scene04_ladder->_ladder_field_18 = 0;
+	g_vars->scene04_ladder->_height = -40;
+	g_vars->scene04_ladder->_ladder_field_20 = 0;
+	g_vars->scene04_ladder->_ladder_field_24 = -60;
+
+	g_vars->scene04_ladder->addObject(g_fullpipe->_aniMan);
+
+	if (g_vars->scene04_soundPlaying) {
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpStart = MV_MAN_STARTLADDER2;
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpGo = MV_MAN_GOLADDER2;
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpStop = MV_MAN_STOPLADDER2;
+		g_vars->scene04_ladder->_movements.front()->staticIds[2] = ST_MAN_GOLADDER2;
+	} else {
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpStart = MV_MAN_STARTLADDER;
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpGo = MV_MAN_GOLADDER;
+		g_vars->scene04_ladder->_movements.front()->movVars->varUpStop = MV_MAN_STOPLADDER;
+		g_vars->scene04_ladder->_movements.front()->staticIds[2] = ST_MAN_GOLADDER;
+	}
+
+	g_fullpipe->_aniMan->_priority = 12;
+
+	getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->clearEnabled();
+	getGameLoaderInteractionController()->disableFlag24();
 }
 
 void sceneHandler04_clickLadder() {


Commit: 52922fe97c1951b48da5abb616250193b6ea89eb
    https://github.com/scummvm/scummvm/commit/52922fe97c1951b48da5abb616250193b6ea89eb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-12T08:12:10-08:00

Commit Message:
FULLPIPE: Implement sceneHandler04_gotoLadder()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index ec46e39..1a59cce 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -122,6 +122,7 @@ namespace Fullpipe {
 #define MV_MAN_JUMPONPLANK 551
 #define MV_MAN_LOOKLADDER 520
 #define MV_MAN_LOOKUP 4773
+#define MV_MAN_PLANKTOLADDER 553
 #define MV_MAN_STARTLADDER 452
 #define MV_MAN_STARTLADDER2 2842
 #define MV_MAN_STOPLADDER 454
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 11f1463..5e974cc 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -459,8 +459,61 @@ void sceneHandler04_dropBottle() {
 	g_vars->scene04_hand->_priority = 15;
 }
 
-void sceneHandler04_gotoLadder(int par) {
-	warning("STUB: sceneHandler04_gotoLadder()");
+void sceneHandler04_gotoLadder(ExCommand *ex) {
+	MGM mgm;
+	MGMInfo mgminfo;
+
+	mgm.addItem(ANI_MAN);
+
+	mgminfo.ani = g_fullpipe->_aniMan;
+	mgminfo.staticsId2 = ST_MAN_UP;
+	mgminfo.x1 = 1095;
+	mgminfo.y1 = 434;
+	mgminfo.field_1C = 12;
+	mgminfo.field_10 = 1;
+	mgminfo.flags = 78;
+	mgminfo.movementId = MV_MAN_PLANKTOLADDER;
+
+	MessageQueue *mq = mgm.genMovement(&mgminfo);
+
+	if (mq) {
+		mq->deleteExCommandByIndex(mq->getCount() - 1, 1);
+
+		ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0);
+		ex1->_excFlags = 2;
+		ex1->_field_24 = 1;
+		ex1->_keyCode = -1;
+		mq->addExCommandToEnd(ex1);
+
+		ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0);
+		ex2->_excFlags = 2;
+		ex2->_field_24 = 1;
+		ex2->_keyCode = -1;
+		mq->addExCommandToEnd(ex2);
+
+		ExCommand *ex3 = new ExCommand(g_fullpipe->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
+		ex3->_field_14 = 256;
+		ex3->_messageNum = 0;
+		ex3->_excFlags |= 3;
+		mq->addExCommandToEnd(ex3);
+
+		if (ex) {
+			ExCommand *ex4 = new ExCommand(ex);
+
+			mq->addExCommandToEnd(ex4);
+		}
+
+		mq->setFlags(mq->getFlags() | 1);
+
+		if (mq->chain(g_fullpipe->_aniMan)) {
+			g_fullpipe->_aniMan->_priority = 12;
+			g_fullpipe->_aniMan->_flags |= 1;
+		} else {
+			delete mq;
+		}
+	}
+
+	g_vars->scene04_var04 = 0;
 }
 
 void sceneHandler04_lowerPlank() {


Commit: cbf943c2c696a7d92141a9dff44bac09add4ef39
    https://github.com/scummvm/scummvm/commit/cbf943c2c696a7d92141a9dff44bac09add4ef39
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-12T08:12:10-08:00

Commit Message:
FULLPIPE: Renames in scene04

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



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index ddc53df..37d1250 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -72,7 +72,7 @@ Vars::Vars() {
 	scene04_coinPut = false;
 	scene04_soundPlaying = false;
 	scene04_dynamicPhaseIndex = 0;
-	scene04_needJumping = false;
+	scene04_dudeOnLadder = false;
 
 	scene04_sceneClickX = 0;
 	scene04_sceneClickY = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index abe01cb..38f685e 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -99,7 +99,7 @@ public:
 
 	bool scene04_coinPut;
 	bool scene04_soundPlaying;
-	bool scene04_needJumping;
+	bool scene04_dudeOnLadder;
 
 	int scene04_dynamicPhaseIndex;
 	int scene04_sceneClickX;
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 5e974cc..07ac109 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -61,7 +61,7 @@ void scene04_speakerCallback(int *phase) {
 }
 
 void scene04_initScene(Scene *sc) {
-	g_vars->scene04_needJumping = false;
+	g_vars->scene04_dudeOnLadder = false;
 	g_vars->scene04_bottle = sc->getPictureObjectById(PIC_SC4_BOTTLE, 0);
 	g_vars->scene04_hand = sc->getStaticANIObject1ById(ANI_HAND, -1);
 	g_vars->scene04_plank = sc->getStaticANIObject1ById(ANI_PLANK, -1);
@@ -196,7 +196,7 @@ void scene04_initScene(Scene *sc) {
 }
 
 bool sceneHandler04_friesAreWalking() {
-	if (g_vars->scene04_needJumping && g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
+	if (g_vars->scene04_dudeOnLadder && g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
 		int col = g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan);
 		if (col >= 3 && col <= 6 ) {
 			Movement *koz;
@@ -310,7 +310,7 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) {
 
 	mq->chain(0);
 
-	g_vars->scene04_needJumping = 1;
+	g_vars->scene04_dudeOnLadder = 1;
 
 	g_vars->scene04_ladder = new MctlLadder;
 	g_vars->scene04_ladder->_objId = MV_MAN_TURN_SUD;
@@ -345,7 +345,7 @@ void sceneHandler04_clickLadder() {
 	g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox;
 	g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy;
 
-	if (g_vars->scene04_needJumping) {
+	if (g_vars->scene04_dudeOnLadder) {
 		if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) {
 			g_vars->scene04_var08 = 1;
 		} else {
@@ -426,7 +426,7 @@ void sceneHandler04_jumpOnLadder() {
 void sceneHandler04_clickPlank() {
 	if (sceneHandler04_friesAreWalking())
 		sceneHandler04_jumpOnLadder();
-	else if (g_vars->scene04_needJumping)
+	else if (g_vars->scene04_dudeOnLadder)
 		g_fullpipe->playSound(SND_4_033, 0);
 	else if (!g_vars->scene04_soundPlaying)
 		chainQueue(QU_PNK_CLICK, 0);
@@ -750,7 +750,7 @@ void sceneHandler04_sub9(StaticANIObject *ani) {
 void sceneHandler04_sub17() {
 	StaticANIObject *ball =  g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
 
-	if (g_vars->scene04_needJumping
+	if (g_vars->scene04_dudeOnLadder
 		 && (!ball || !(ball->_flags & 4))
 		 && g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan) > 3) {
 
@@ -977,7 +977,7 @@ int sceneHandler04(ExCommand *ex) {
 			if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying)
 				sceneHandler04_goClock();
 
-			if (g_vars->scene04_needJumping) {
+			if (g_vars->scene04_dudeOnLadder) {
 				if (!g_vars->scene04_soundPlaying) {
 					g_fullpipe->startSceneTrack();
 
@@ -1037,7 +1037,7 @@ int sceneHandler04(ExCommand *ex) {
 				sceneHandler04_clickPlank();
 
 				ex->_messageKind = 0;
-			} else if (g_vars->scene04_needJumping) {
+			} else if (g_vars->scene04_dudeOnLadder) {
 				sceneHandler04_sub8(ex);
 			} else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) {
 				PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picid, 0);






More information about the Scummvm-git-logs mailing list