[Scummvm-cvs-logs] scummvm master -> 52ec63441535c6207fed95964d99347fc51f5541

sev- sev at scummvm.org
Sun Jan 5 12:21:27 CET 2014


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

Summary:
0066d02706 FULLPIPE: Initial code for scene25
68fea7ef51 FULLPIPE: Plug scene25 in
a7b03000f5 FULLPIPE: Implement scene25_updateCursor() and setupWater()
2c4c18ade4 FULLPIPE: Implement sceneHandler25()
52ec634415 FULLPIPE: More code to scene25


Commit: 0066d0270698faece9a155ef1bd6f49fb847125f
    https://github.com/scummvm/scummvm/commit/0066d0270698faece9a155ef1bd6f49fb847125f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-05T03:20:47-08:00

Commit Message:
FULLPIPE: Initial code for scene25

Changed paths:
  A engines/fullpipe/scenes/scene25.cpp
    engines/fullpipe/init.cpp
    engines/fullpipe/objectnames.h



diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp
index d933e0f..f661340 100644
--- a/engines/fullpipe/init.cpp
+++ b/engines/fullpipe/init.cpp
@@ -94,7 +94,7 @@ void FullpipeEngine::initObjectStates() {
 	setObjectState(sO_Valve4_26, getObjectEnumState(sO_Valve4_26, sO_Closed));
 	setObjectState(sO_Valve5_26, getObjectEnumState(sO_Valve5_26, sO_Opened));
 	setObjectState(sO_Pool, getObjectEnumState(sO_Pool, sO_Overfull));
-	setObjectState(sO_Plank_25, getObjectEnumState(sO_Plank_25, sO_NearDudesStairs));
+	setObjectState(sO_Board_25, getObjectEnumState(sO_Board_25, sO_NearDudesStairs));
 	setObjectState(sO_Driver, getObjectEnumState(sO_Driver, sO_WithSteering));
 	setObjectState(sO_Janitress, getObjectEnumState(sO_Janitress, sO_WithMop));
 	setObjectState(sO_LeftPipe_29, getObjectEnumState(sO_LeftPipe_29, sO_IsClosed));
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 884271b..c33750f 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -39,6 +39,7 @@ namespace Fullpipe {
 #define sO_WithoutHandle "\xc1\xe5\xe7 \xf0\xf3\xf7\xea\xe8"	// "Без ручки"
 #define sO_WithoutStool "\xc1\xe5\xe7 \xf2\xe0\xe1\xf3\xf0\xe5\xf2\xea\xe8"	// "Без табуретки"
 #define sO_WithoutDrawer "\xc1\xe5\xe7 \xff\xf9\xe8\xea\xe0"	// "Без ящика"
+#define sO_Nearby "\xc1\xeb\xe8\xe7\xea\xee"	// "Близко"
 #define sO_Blocked "\xc1\xeb\xee\xea\xe8\xf0\xee\xe2\xe0\xed"	// "Блокирован"
 #define sO_BlockedShe "\xc1\xeb\xee\xea\xe8\xf0\xee\xe2\xe0\xed\xe0"	// "Блокирована"
 #define sO_Awaken "\xc1\xee\xe4\xf0\xf1\xf2\xe2\xf3\xe5\xf2"	// "Бодрствует"
@@ -78,10 +79,11 @@ namespace Fullpipe {
 #define sO_Jug "\xc3\xee\xf0\xf8\xee\xea"	// "Горшок"
 #define sO_Strolling "\xc3\xf3\xeb\xff\xe5\xf2"	// "Гуляет"
 #define sO_Yes "\xc4\xe0"	// "Да"
+#define sO_FarAway "\xc4\xe0\xeb\xe5\xea\xee"	// "Далеко"
 #define sO_Girl "\xc4\xe5\xe2\xee\xf7\xea\xe0"	// "Девочка"
 #define sO_Elephantine "\xc4\xe5\xe2\xee\xf7\xea\xe0-\xf1\xeb\xee\xed\xe8\xea"	// "Девочка-слоник"
 #define sO_Grandpa "\xc4\xe5\xe4\xf3\xf8\xea\xe0"	// "Дедушка"
-#define sO_Plank_25 "\xc4\xee\xf1\xea\xe0_25"	// "Доска_25"
+#define sO_Board_25 "\xc4\xee\xf1\xea\xe0_25"	// "Доска_25"
 #define sO_Plank_34 "\xc4\xee\xf1\xea\xe0_34"	// "Доска_34"
 #define sO_DudeHasJumped "\xc4\xff\xe4\xff \xef\xf0\xfb\xe3\xe0\xeb"	// "Дядя прыгал"
 #define sO_Dude "\xc4\xff\xe4\xff"	// "Дядя"
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
new file mode 100644
index 0000000..c156850
--- /dev/null
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -0,0 +1,91 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/motion.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+
+
+namespace Fullpipe {
+
+void scene25_initScene(Scene *sc, int entranceId) {
+	g_vars->scene25_var01 = 200;
+	g_vars->scene25_var02 = 200;
+	g_vars->scene25_var03 = 300;
+	g_vars->scene25_var04 = 300;
+	g_vars->scene25_water = Scene_getStaticANIObject1ById(sc, ANI_WATER25, -1);
+	g_vars->scene25_board = Scene_getStaticANIObject1ById(sc, ANI_BOARD25, -1);
+	g_vars->scene25_drop = Scene_getStaticANIObject1ById(sc, ANI_DROP_25, -1);
+	g_vars->scene25_water->setAlpha(0xa0);
+	g_vars->scene25_drop->setAlpha(0xa0);
+	g_vars->scene25_var05 = 0;
+
+	if (g_fp->getObjectState(sO_Pool) < g_fp->getObjectEnumState(sO_Pool, sO_HalfFull)) {
+		g_vars->scene25_var06 = 0;
+
+		g_vars->scene25_water->hide();
+	} else {
+		g_vars->scene25_var06 = 1;
+
+		playSound(SND_25_006, 1);
+	}
+
+	int boardState = g_fp->getObjectState(sO_Board_25);
+
+	if (entranceId == TrubaRight) {
+		if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_FarAway)) {
+			scene25_showBoardOnRightFar();
+
+			playSound(SND_25_029, 0);
+
+			g_vars->scene25_var07 = 0;
+		} else {
+			if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_Nearby)
+				|| boardState == g_fp->getObjectEnumState(sO_Board_25, sO_WithDudeOnRight))
+				scene25_showBoardOnRightClose();
+			g_vars->scene25_var07 = 0;
+		}
+	} else {
+		if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_WithDudeOnLeft)) {
+			if (!getGameLoaderInventory()->getCountItemsWithId(ANI_INV_BOARD)) {
+				getGameLoaderInventory()->addItem(ANI_INV_BOARD, 1);
+				getGameLoaderInventory()->rebuildItemRects();
+			}
+		} else {
+			g_vars->scene25_var07 = 1;
+		}
+	}
+
+	g_vars->scene25_var08 = 0;
+	g_vars->scene25_var09 = 0;
+}
+
+} // End of namespace Fullpipe


Commit: 68fea7ef51b48a41ed057aefdcb1bc5f1f35fd90
    https://github.com/scummvm/scummvm/commit/68fea7ef51b48a41ed057aefdcb1bc5f1f35fd90
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-05T03:20:47-08:00

Commit Message:
FULLPIPE: Plug scene25 in

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene25.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 9eb3147..cd51fea 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -861,6 +861,14 @@ namespace Fullpipe {
 #define ST_DRP24_EMPTY 3507
 #define ST_WTR24_FLOWLOWER 1843
 
+// Scene 25
+#define ANI_BOARD25 1898
+#define ANI_DROP_25 3499
+#define ANI_INV_BOARD 1872
+#define ANI_WATER25 1856
+#define SND_25_006 4059
+#define SND_25_029 5174
+
 // Scene 30
 #define ANI_LEG 2322
 #define MSG_SC30_UPDATEPATH 2358
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 5d426ee..3d781e6 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -45,6 +45,7 @@ MODULE_OBJS = \
 	scenes/scene22.o \
 	scenes/scene23.o \
 	scenes/scene24.o \
+	scenes/scene25.o \
 	scenes/scene30.o \
 	scenes/scene31.o \
 	scenes/scene36.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 5864238..67035b8 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -281,6 +281,19 @@ Vars::Vars() {
 	scene24_jet = 0;
 	scene24_drop = 0;
 
+	scene25_var01 = 0;
+	scene25_var02 = 0;
+	scene25_var03 = 0;
+	scene25_var04 = 0;
+	scene25_water = 0;
+	scene25_board = 0;
+	scene25_drop = 0;
+	scene25_var05 = 0;
+	scene25_var06 = 0;
+	scene25_var07 = 0;
+	scene25_var08 = 0;
+	scene25_var09 = 0;
+
 	scene30_leg = 0;
 	scene30_liftFlag = 1;
 
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 4e341d3..a7653d0 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -395,6 +395,19 @@ public:
 	StaticANIObject *scene24_jet;
 	StaticANIObject *scene24_drop;
 
+	int scene25_var01;
+	int scene25_var02;
+	int scene25_var03;
+	int scene25_var04;
+	StaticANIObject *scene25_water;
+	StaticANIObject *scene25_board;
+	StaticANIObject *scene25_drop;
+	int scene25_var05;
+	int scene25_var06;
+	int scene25_var07;
+	int scene25_var08;
+	int scene25_var09;
+
 	StaticANIObject *scene30_leg;
 	int scene30_liftFlag;
 
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
index c156850..a38c104 100644
--- a/engines/fullpipe/scenes/scene25.cpp
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -36,14 +36,22 @@
 
 namespace Fullpipe {
 
+void scene25_showBoardOnRightFar() {
+	warning("STUB: scene25_showBoardOnRightFar()");
+}
+
+void scene25_showBoardOnRightClose() {
+	warning("STUB: scene25_showBoardOnRightClose()");
+}
+
 void scene25_initScene(Scene *sc, int entranceId) {
 	g_vars->scene25_var01 = 200;
 	g_vars->scene25_var02 = 200;
 	g_vars->scene25_var03 = 300;
 	g_vars->scene25_var04 = 300;
-	g_vars->scene25_water = Scene_getStaticANIObject1ById(sc, ANI_WATER25, -1);
-	g_vars->scene25_board = Scene_getStaticANIObject1ById(sc, ANI_BOARD25, -1);
-	g_vars->scene25_drop = Scene_getStaticANIObject1ById(sc, ANI_DROP_25, -1);
+	g_vars->scene25_water = sc->getStaticANIObject1ById(ANI_WATER25, -1);
+	g_vars->scene25_board = sc->getStaticANIObject1ById(ANI_BOARD25, -1);
+	g_vars->scene25_drop = sc->getStaticANIObject1ById(ANI_DROP_25, -1);
 	g_vars->scene25_water->setAlpha(0xa0);
 	g_vars->scene25_drop->setAlpha(0xa0);
 	g_vars->scene25_var05 = 0;
@@ -55,7 +63,7 @@ void scene25_initScene(Scene *sc, int entranceId) {
 	} else {
 		g_vars->scene25_var06 = 1;
 
-		playSound(SND_25_006, 1);
+		g_fp->playSound(SND_25_006, 1);
 	}
 
 	int boardState = g_fp->getObjectState(sO_Board_25);
@@ -64,7 +72,7 @@ void scene25_initScene(Scene *sc, int entranceId) {
 		if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_FarAway)) {
 			scene25_showBoardOnRightFar();
 
-			playSound(SND_25_029, 0);
+			g_fp->playSound(SND_25_029, 0);
 
 			g_vars->scene25_var07 = 0;
 		} else {


Commit: a7b03000f5ff1e97348725a6db062954ab19e436
    https://github.com/scummvm/scummvm/commit/a7b03000f5ff1e97348725a6db062954ab19e436
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-05T03:20:47-08:00

Commit Message:
FULLPIPE: Implement scene25_updateCursor() and setupWater()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index cd51fea..906f5b4 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -865,9 +865,17 @@ namespace Fullpipe {
 #define ANI_BOARD25 1898
 #define ANI_DROP_25 3499
 #define ANI_INV_BOARD 1872
+#define ANI_INV_BROOM 1774
+#define ANI_INV_LOPAT 1920
+#define ANI_INV_SWAB 1917
 #define ANI_WATER25 1856
+#define MV_BRD25_RIGHT 1899
+#define rMV_BRD25_RIGHT 1903
+#define QU_DRP25_TOFLOOR 3502
+#define QU_DRP25_TOWATER 3504
 #define SND_25_006 4059
 #define SND_25_029 5174
+#define ST_DRP25_EMPTY 3501
 
 // Scene 30
 #define ANI_LEG 2322
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
index a38c104..7f747d7 100644
--- a/engines/fullpipe/scenes/scene25.cpp
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -37,11 +37,13 @@
 namespace Fullpipe {
 
 void scene25_showBoardOnRightFar() {
-	warning("STUB: scene25_showBoardOnRightFar()");
+	g_vars->scene25_board->show1(453, 557, MV_BRD25_RIGHT, 0);
+	g_vars->scene25_board->_priority = 28;
 }
 
 void scene25_showBoardOnRightClose() {
-	warning("STUB: scene25_showBoardOnRightClose()");
+	g_vars->scene25_board->show1(632, 557, rMV_BRD25_RIGHT, 0);
+	g_vars->scene25_board->_priority = 28;
 }
 
 void scene25_initScene(Scene *sc, int entranceId) {
@@ -96,4 +98,34 @@ void scene25_initScene(Scene *sc, int entranceId) {
 	g_vars->scene25_var09 = 0;
 }
 
+int scene25_updateCursor() {
+	g_fp->updateCursorCommon();
+
+	if (g_vars->scene25_var06) {
+		int inv = getGameLoaderInventory()->getSelectedItemId();
+
+		if (g_fp->_objectIdAtCursor == ANI_WATER25) {
+			if ((g_vars->scene25_var07 && (!inv || inv == ANI_INV_BOARD)) || (g_vars->scene25_var05 && (inv == ANI_INV_LOPAT || !inv)))
+				g_fp->_cursorId = (g_fp->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN : PIC_CSR_ITN_INV; // FIXME check
+		} else if (g_fp->_objectIdAtCursor == ANI_BOARD25 && (!inv || inv == ANI_INV_SWAB || inv == ANI_INV_BROOM || inv == ANI_INV_LOPAT)) {
+			g_fp->_cursorId = (g_fp->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN : PIC_CSR_ITN_INV;
+		}
+	}
+
+	return g_fp->_cursorId;
+}
+
+void scene25_setupWater(Scene *a1, int entranceId) {
+	if (g_vars->scene25_var06) {
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 0);
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 1);
+
+		if (entranceId != TrubaRight)
+			g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_25"), "MUSIC2", 0);
+	} else {
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 1);
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 0);
+	}
+}
+
 } // End of namespace Fullpipe


Commit: 2c4c18ade454ebc0faa37d18536a64a5f6430c15
    https://github.com/scummvm/scummvm/commit/2c4c18ade454ebc0faa37d18536a64a5f6430c15
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-05T03:20:47-08:00

Commit Message:
FULLPIPE: Implement sceneHandler25()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 906f5b4..1c7779a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -869,11 +869,24 @@ namespace Fullpipe {
 #define ANI_INV_LOPAT 1920
 #define ANI_INV_SWAB 1917
 #define ANI_WATER25 1856
+#define MSG_BRD_TURN 4877
+#define MSG_SC25_ENTERMAN 1861
+#define MSG_SC25_ENTERTRUBA 4214
+#define MSG_SC25_STARTBEARDEDS 3423
+#define MSG_SC25_STOPBEARDEDS 3424
+#define MSG_SC25_TOLADDER 4215
 #define MV_BRD25_RIGHT 1899
 #define rMV_BRD25_RIGHT 1903
+#define MV_WTR25_FLOW 1857
+#define PIC_SC25_LADDERDOWN 1855
+#define PIC_SC25_LADDERUP 1854
+#define PIC_SC25_RTRUBA 1853
 #define QU_DRP25_TOFLOOR 3502
 #define QU_DRP25_TOWATER 3504
 #define SND_25_006 4059
+#define SND_25_025 4874
+#define SND_25_026 4875
+#define SND_25_027 4876
 #define SND_25_029 5174
 #define ST_DRP25_EMPTY 3501
 
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 67035b8..7d6b2e2 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -293,6 +293,9 @@ Vars::Vars() {
 	scene25_var07 = 0;
 	scene25_var08 = 0;
 	scene25_var09 = 0;
+	scene25_var10 = 0;
+	scene25_var11 = 0;
+	scene25_var12 = 0;
 
 	scene30_leg = 0;
 	scene30_liftFlag = 1;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index a7653d0..d01fd62 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -407,6 +407,9 @@ public:
 	int scene25_var07;
 	int scene25_var08;
 	int scene25_var09;
+	int scene25_var10;
+	int scene25_var11;
+	int scene25_var12;
 
 	StaticANIObject *scene30_leg;
 	int scene30_liftFlag;
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
index 7f747d7..9ff710b 100644
--- a/engines/fullpipe/scenes/scene25.cpp
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -128,4 +128,249 @@ void scene25_setupWater(Scene *a1, int entranceId) {
 	}
 }
 
+void sceneHandler25_stopBearders() {
+	warning("STUB: sceneHandler25_stopBearders()");
+}
+
+void sceneHandler25_startBearders() {
+	warning("STUB: sceneHandler25_startBearders()");
+}
+
+void sceneHandler25_enterMan() {
+	warning("STUB: sceneHandler25_enterMan()");
+}
+
+void sceneHandler25_enterTruba() {
+	warning("STUB: sceneHandler25_enterTruba()");
+}
+
+void sceneHandler25_toLadder() {
+	warning("STUB: sceneHandler25_toLadder()");
+}
+
+void sceneHandler25_animateBearders() {
+	warning("STUB: sceneHandler25_animateBearders()");
+}
+
+void sceneHandler25_sneeze() {
+	warning("STUB: sceneHandler25_sneeze()");
+}
+
+void sceneHandler25_rowShovel() {
+	warning("STUB: sceneHandler25_rowShovel()");
+}
+
+void sceneHandler25_rowHand() {
+	warning("STUB: sceneHandler25_rowHand()");
+}
+
+void sceneHandler25_putBoard() {
+	warning("STUB: sceneHandler25_putBoard()");
+}
+
+void sceneHandler25_tryWater() {
+	warning("STUB: sceneHandler25_tryWater()");
+}
+
+void sceneHandler25_tryRow(int code) {
+	warning("STUB: sceneHandler25_tryRow()");
+}
+
+void sceneHandler25_ladderUp() {
+	warning("STUB: sceneHandler25_ladderUp()");
+}
+
+void sceneHandler25_backToPipe() {
+	warning("STUB: sceneHandler25_backToPipe()");
+}
+
+void sceneHandler25_sub01() {
+	warning("STUB: sceneHandler25_sub01()");
+}
+
+bool sceneHandler25_sub02(ExCommand *cmd) {
+	warning("STUB: sceneHandler25_sub02()");
+
+	return false;
+}
+
+void sceneHandler25_sub03() {
+	warning("STUB: sceneHandler25_sub03()");
+}
+
+void sceneHandler25_sub04() {
+	warning("STUB: sceneHandler25_sub04()");
+}
+
+int sceneHandler25(ExCommand *cmd) {
+	if (cmd->_messageKind != 17)
+		return 0;
+
+	switch (cmd->_messageNum) {
+	case MSG_SC25_STOPBEARDEDS:
+		sceneHandler25_stopBearders();
+		break;
+
+	case MSG_SC25_STARTBEARDEDS:
+		sceneHandler25_startBearders();
+		break;
+
+	case MSG_SC25_ENTERMAN:
+		sceneHandler25_enterMan();
+		break;
+
+	case MSG_SC25_ENTERTRUBA:
+		sceneHandler25_enterTruba();
+		break;
+
+	case MSG_SC25_TOLADDER:
+		sceneHandler25_toLadder();
+		break;
+
+	case MSG_BRD_TURN:
+		switch (g_fp->_rnd->getRandomNumber(3)) {
+		case 0:
+			g_fp->playSound(SND_25_025, 0);
+			break;
+
+		case 1:
+			g_fp->playSound(SND_25_026, 0);
+			break;
+
+		default:
+			g_fp->playSound(SND_25_027, 0);
+			break;
+		}
+		break;
+
+	case 33:
+        if (g_fp->_aniMan2) {
+			int x = g_fp->_aniMan2->_ox;
+			int y = g_fp->_aniMan2->_oy;
+
+			if (x < g_fp->_sceneRect.left + g_vars->scene25_var01)
+				g_fp->_currentScene->_x = x - g_vars->scene25_var03 - g_fp->_sceneRect.left;
+
+			if (x > g_fp->_sceneRect.right - g_vars->scene25_var01)
+				g_fp->_currentScene->_x = x + g_vars->scene25_var03 - g_fp->_sceneRect.right;
+
+			if (!g_vars->scene25_var06) {
+				if (y < g_fp->_sceneRect.top + g_vars->scene25_var02)
+					g_fp->_currentScene->_y = y - g_vars->scene25_var04 - g_fp->_sceneRect.top;
+
+				if (y > g_fp->_sceneRect.bottom - g_vars->scene25_var02)
+					g_fp->_currentScene->_y = y + g_vars->scene25_var04 - g_fp->_sceneRect.bottom;
+			}
+        }
+
+        if (g_vars->scene25_var08) {
+			g_vars->scene25_var09++;
+
+			if (g_vars->scene25_var09 >= 120)
+				sceneHandler25_animateBearders();
+        }
+
+        g_fp->_behaviorManager->updateBehaviors();
+        g_fp->startSceneTrack();
+
+        if (g_vars->scene25_var06 && !g_vars->scene25_water->_movement)
+			g_vars->scene25_water->startAnim(MV_WTR25_FLOW, 0, -1);
+
+        if (g_vars->scene25_var05 && !g_fp->_aniMan->_movement && g_vars->scene25_var12)
+			sceneHandler25_sneeze();
+
+        g_vars->scene25_var12 = 1;
+
+        if (g_vars->scene25_board->_flags & 4) {
+			if (!g_vars->scene25_board->_movement) {
+				if (g_vars->scene25_board->_statics->_staticsId & 0x4000)
+					g_vars->scene25_board->startAnim(rMV_BRD25_RIGHT, 0, -1);
+				else
+					g_vars->scene25_board->startAnim(MV_BRD25_RIGHT, 0, -1);
+			}
+        }
+		break;
+
+	case 29:
+		{
+			int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+			if (!g_vars->scene25_var06) {
+				if ((picId == PIC_SC25_LADDERUP || picId == PIC_SC25_LADDERDOWN) && sceneHandler25_sub02(cmd))
+					cmd->_messageKind = 0;
+
+				break;
+			}
+
+			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+			if (ani) {
+				if (g_fp->_aniMan != ani) {
+					if (g_fp->_aniMan->isIdle()) {
+						if (!(g_fp->_aniMan->_flags & 0x100)) {
+							if (ani->_id == ANI_WATER25) {
+								if (g_vars->scene25_var05) {
+									if (cmd->_keyCode == ANI_INV_LOPAT)
+										sceneHandler25_rowShovel();
+
+									if (!cmd->_keyCode)
+										sceneHandler25_rowHand();
+								} else {
+									if (cmd->_keyCode == ANI_INV_BOARD)
+										sceneHandler25_putBoard();
+
+									if (!cmd->_keyCode)
+										sceneHandler25_tryWater();
+								}
+							} else if (ani->_id == ANI_BOARD25) {
+								sceneHandler25_tryRow(cmd->_keyCode);
+								break;
+							}
+							break;
+						}
+					}
+				}
+			}
+
+			if (picId == PIC_SC25_LADDERUP && sceneHandler25_sub02(cmd))
+				cmd->_messageKind = 0;
+
+			if (!g_fp->_aniMan->isIdle() || (g_fp->_aniMan->_flags & 0x100))
+				break;
+
+			if (g_vars->scene25_var05) {
+				if (picId == PIC_SC25_RTRUBA && !cmd->_keyCode) {
+					sceneHandler25_enterTruba();
+					break;
+				}
+			} else {
+				if (picId != PIC_SC25_RTRUBA) {
+					if (picId == PIC_SC25_LADDERUP && !cmd->_keyCode)
+						sceneHandler25_ladderUp();
+					break;
+				}
+
+				if (!cmd->_keyCode) {
+					sceneHandler25_backToPipe();
+					break;
+				}
+			}
+			if (g_vars->scene25_var05) {
+				if (picId != PIC_SC25_LADDERUP || cmd->_keyCode)
+					break;
+
+				sceneHandler25_toLadder();
+				break;
+			}
+
+			if (picId == PIC_SC25_LADDERUP && !cmd->_keyCode)
+				sceneHandler25_ladderUp();
+
+			break;
+		}
+	}
+
+	return 0;
+}
+
 } // End of namespace Fullpipe


Commit: 52ec63441535c6207fed95964d99347fc51f5541
    https://github.com/scummvm/scummvm/commit/52ec63441535c6207fed95964d99347fc51f5541
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-05T03:20:47-08:00

Commit Message:
FULLPIPE: More code to scene25

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 1c7779a..1dfe6ba 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -883,12 +883,19 @@ namespace Fullpipe {
 #define PIC_SC25_RTRUBA 1853
 #define QU_DRP25_TOFLOOR 3502
 #define QU_DRP25_TOWATER 3504
+#define QU_SC25_BACKTOTRUBA 2061
+#define QU_SC25_ENTERUP_FLOOR 1904
+#define QU_SC25_ENTERUP_WATER 1895
+#define QU_SC25_LADDERUP 1925
+#define QU_SC25_PUTBOARD 1896
+#define QU_SC25_TRYWATER 1906
 #define SND_25_006 4059
 #define SND_25_025 4874
 #define SND_25_026 4875
 #define SND_25_027 4876
 #define SND_25_029 5174
 #define ST_DRP25_EMPTY 3501
+#define ST_MAN_LADDERDOWN_R 3419
 
 // Scene 30
 #define ANI_LEG 2322
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
index 9ff710b..37f837a 100644
--- a/engines/fullpipe/scenes/scene25.cpp
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -137,7 +137,13 @@ void sceneHandler25_startBearders() {
 }
 
 void sceneHandler25_enterMan() {
-	warning("STUB: sceneHandler25_enterMan()");
+	if (g_vars->scene25_var06) {
+		chainQueue(QU_SC25_ENTERUP_WATER, 1);
+
+		getCurrSceneSc2MotionController()->clearEnabled();
+	} else {
+		chainQueue(QU_SC25_ENTERUP_FLOOR, 1);
+	}
 }
 
 void sceneHandler25_enterTruba() {
@@ -165,11 +171,26 @@ void sceneHandler25_rowHand() {
 }
 
 void sceneHandler25_putBoard() {
-	warning("STUB: sceneHandler25_putBoard()");
+	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+		g_fp->_aniMan->setOXY(281, 481);
+
+		chainQueue(QU_SC25_PUTBOARD, 1);
+
+		g_vars->scene25_var05 = 1;
+		g_vars->scene25_var12 = 0;
+		g_vars->scene25_var07 = 0;
+	}
 }
 
 void sceneHandler25_tryWater() {
-	warning("STUB: sceneHandler25_tryWater()");
+	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+
+		chainQueue(QU_SC25_TRYWATER, 1);
+	}
 }
 
 void sceneHandler25_tryRow(int code) {
@@ -177,11 +198,20 @@ void sceneHandler25_tryRow(int code) {
 }
 
 void sceneHandler25_ladderUp() {
-	warning("STUB: sceneHandler25_ladderUp()");
+	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+
+		chainQueue(QU_SC25_LADDERUP, 1);
+	}
 }
 
 void sceneHandler25_backToPipe() {
-	warning("STUB: sceneHandler25_backToPipe()");
+	if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == (ST_MAN_RIGHT|0x4000)) {
+		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000);
+
+		chainQueue(QU_SC25_BACKTOTRUBA, 1);
+	}
 }
 
 void sceneHandler25_sub01() {
@@ -198,8 +228,8 @@ void sceneHandler25_sub03() {
 	warning("STUB: sceneHandler25_sub03()");
 }
 
-void sceneHandler25_sub04() {
-	warning("STUB: sceneHandler25_sub04()");
+void sceneHandler25_sub04(int value) {
+	g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value);
 }
 
 int sceneHandler25(ExCommand *cmd) {






More information about the Scummvm-git-logs mailing list