[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