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

sev- sev at scummvm.org
Mon Dec 30 23:18:26 CET 2013


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

Summary:
e7551f14fd FULLPIPE: Implement BehaviorManager::setBehaviorEnabled()
3c64176719 FULLPIPE: Started implementation of MovGraph2::genMovement()
c4c21c6702 FULLPIPE: Started scene14
bcb48c9d17 FULLPIPE: Plug scene14 in
574707f9dd FULLPIPE: Implement scene14_setupMusic() and scene14_updateCursor()
bfc5e7aa9f FULLPIPE: Implement sceneHandler14()
a36344b168 FULLPIPE: Enable scene14


Commit: e7551f14fd4b5f3f3d59c84ca5f1cac4e3ac888f
    https://github.com/scummvm/scummvm/commit/e7551f14fd4b5f3f3d59c84ca5f1cac4e3ac888f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T12:21:52-08:00

Commit Message:
FULLPIPE: Implement BehaviorManager::setBehaviorEnabled()

Changed paths:
    engines/fullpipe/behavior.cpp



diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp
index ccca012..208df90 100644
--- a/engines/fullpipe/behavior.cpp
+++ b/engines/fullpipe/behavior.cpp
@@ -180,7 +180,15 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, int delay, B
 }
 
 bool BehaviorManager::setBehaviorEnabled(StaticANIObject *obj, int aniId, int quId, int flag) {
-	warning("STUB: BehaviorManager::setBehaviorEnabled()");
+	BehaviorEntryInfo *entry = getBehaviorEntryInfoByMessageQueueDataId(obj, aniId, quId);
+
+	if (entry) {
+		if (flag)
+			entry->_flags &= 0xFFFFFFFE;
+		else
+			entry->_flags |= 1;
+	} else
+		return false;
 
 	return true;
 }


Commit: 3c641767195431b0292b5c5294ab1906614a83ce
    https://github.com/scummvm/scummvm/commit/3c641767195431b0292b5c5294ab1906614a83ce
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T12:56:04-08:00

Commit Message:
FULLPIPE: Started implementation of MovGraph2::genMovement()

Changed paths:
    engines/fullpipe/motion.cpp



diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 8c924e7..3d515da 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -1379,8 +1379,232 @@ int MovGraph2::findLink(Common::Array<MovGraphLink *> *linkList, int idx, Common
 		return node3->_x >= node2->_x;
 }
 
-MessageQueue *MovGraph2::genMovement(MovInfo1 *movinfo) {
-	warning("STUB: MovGraph2::genMovement()");
+MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
+#if 0
+	v69 = 0;
+	v70 = 0;
+
+	if (!(info->_flags & 2)) {
+		v6 = sizeof(MovGraph2Item) * info->field_0 + 184 * info->subIndex;
+		v7 = this->items2.m_pData;
+		v69 = *(int *)((char *)&v7->subItems[0].walk[0].mx + v6);
+		v70 = *(int *)((char *)&v7->subItems[0].walk[0].my + v6);
+	}
+	v59 = 0;
+	v64 = 0;
+	if (!(info->_flags & 4)) {
+		v8 = sizeof(MovGraph2Item) * info->field_0 + 184 * info->subIndex;
+		v9 = this->items2.m_pData;
+		v59 = *(Message **)((char *)&v9->subItems[0].walk[2].mx + v8);
+		v64 = *(int *)((char *)&v9->subItems[0].walk[2].my + v8);
+	}
+	v11 = info->_flags & 1;
+	v12 = info->subIndex;
+	v13 = info->pt2.y - info->pt1.y - v64 - v70;
+	v14 = info->field_0;
+	y = info->pt2.y - info->pt1.y - v64 - v70;
+	x = info->pt2.x - (_DWORD)v59 - v69 - info->pt1.x;
+	v10 = x;
+	v16 = _mgm->calcLength(&point, _items2[v14].subItems[v12].walk[1].mov, x, y, &v65, &a2, v11);
+	v17 = v16->x;
+	x1 = v16->x;
+	v18 = v16->y;
+	v19 = info->flags & 1;
+	y1 = v18;
+	flag = v19;
+	if (!v19) {
+		v20 = info->subIndex;
+		if (v20 == 1 || !v20) {
+			v21 = 23 * v20;
+			v22 = 31 * info->field_0;
+			a2 = -1;
+			v17 = v65 * this->items2.m_pData[24 * v22 / 0x2E8u].subItems[8 * v21 / 0xB8u].walk[1].mx;
+			v10 = v17;
+			x1 = v17;
+			x = v17;
+			info->pt2.x = (int)((char *)&v59->obj.vmt + v17 + v69 + info->pt1.x);
+		}
+	}
+	if (!flag) {
+		v23 = info->subIndex;
+		if (v23 == 2 || v23 == 3) {
+			v24 = 23 * v23;
+			v25 = 31 * info->field_0;
+			a2 = -1;
+			v18 = v65 * this->items2.m_pData[24 * v25 / 0x2E8u].subItems[8 * v24 / 0xB8u].walk[1].my;
+			v26 = v18 + info->pt1.y;
+			y1 = v18;
+			v13 = v18;
+			info->pt2.y = v70 + v64 + v26;
+		}
+	}
+	cnt = 0;
+	v60 = 0;
+	if (!(info->flags & 2)) {
+		cnt = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[offsetof(MovGraph2Item, objectId)].mov, -1, 1);
+		v27 = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[offsetof(MovGraph2Item, objectId)].mov, -1, 2);
+		v18 = y1;
+		v17 = x1;
+		v10 = x;
+		v60 = (Message *)v27;
+	}
+	if (v65 > 1) {
+		v28 = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].mov, -1, 1);
+		cnt += (v65 - 1) * v28;
+		v29 = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].mov, -1, 2);
+		v17 = x1;
+		v10 = x;
+		v60 = (Message *)((char *)v60 + (v65 - 1) * v29);
+		v18 = y1;
+	}
+	if (v65 > 0) {
+		cnt += Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].mov, a2, 1);
+		v30 = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].mov, a2, 2);
+		v17 = x1;
+		v10 = x;
+		v60 = (Message *)((char *)v60 + v30);
+		v18 = y1;
+	}
+	if (!(info->flags & 4)) {
+		cnt += Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[2].mov, -1, 1);
+		v31 = Movement_countPhasesWithFlag(this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[2].mov, -1, 2);
+		v17 = x1;
+		v10 = x;
+		v60 = (Message *)((char *)v60 + v31);
+		v18 = y1;
+	}
+	v32 = v10 - v17;
+	v33 = v13 - v18;
+	x = v32;
+	v74 = v33;
+	if (cnt)
+		x1 = (signed __int64)((double)x / (double)cnt);
+	else
+		x1 = 0;
+	if (v60)
+		y1 = (signed __int64)((double)v74 / (double)(signed int)v60);
+	else
+		y1 = 0;
+	v34 = v32 - cnt * x1;
+	v35 = v33 - (_DWORD)v60 * y1;
+	y2 = v34;
+	v76 = v35;
+	if (v34)
+		x2 = v34 / abs(v34);
+	else
+		x2 = 0;
+	if (v35)
+		v72 = v35 / abs(v35);
+	else
+		v72 = 0;
+	v38 = GlobalMessageQueueList_compact(&g_globalMessageQueueList);
+	res = MessageQueue_ctor1(v36, v38);
+	mq = res;
+	v39 = info->flags & 2;
+	if ((_BYTE)v39) {
+		v45 = new ExCommand(
+							LOWORD(this->items2.m_pData[info->field_0].objectId),
+							5,
+							this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].movementId,
+							info->pt1.x,
+							info->pt1.y,
+							0,
+							1,
+							0,
+							0,
+							0);
+		v46 = info->distance1;
+		v45->msg._field_14 = v46;
+		v41 = (int)&res->exCommands.obj.vmt;
+		v47 = v45->_excFlags | 2;
+		v45->msg._keyCode = this->items2.m_pData[info->field_0].obj->go._okeyCode;
+		v45->msg._field_24 = 1;
+		v45->_excFlags = v47;
+	} else {
+		v40 = ExCommand_ctor(
+							 (ExCommand *)v61,
+							 LOWORD(this->items2.m_pData[info->field_0].objectId),
+							 5,
+							 this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[offsetof(MovGraph2Item, objectId)].movementId,
+							 info->pt1.x,
+							 info->pt1.y,
+							 0,
+							 1,
+							 0,
+							 0,
+							 0);
+		v41 = (int)&res->exCommands.obj.vmt;
+		v40->msg._field_14 = info->distance1;
+		v42 = info->field_0;
+		v43 = info->field_0;
+
+		LOWORD(v43) = *(_WORD *)(*((_DWORD *)&this->items2.m_pData->obj + 6 * (32 * v43 - v42)) + 4);
+		v44 = v40->_excFlags;
+		v40->msg._keyCode = (unsigned __int16)v43;
+		v40->msg._field_24 = 1;
+		v40->_excFlags = v44 | 2;
+		CPtrList::AddTail(&res->exCommands, v40);
+		v45 = MGM_buildExCommand2(
+								  (MGM *)&this->movGraph.mgm,
+								  this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[offsetof(MovGraph2Item, objectId)].mov,
+								  LOWORD(this->items2.m_pData[info->field_0].objectId),
+								  x1,
+								  y1,
+								  &x2,
+								  &y2,
+								  -1);
+		v45->_parId = res->_id;
+		v45->msg._keyCode = this->items2.m_pData[info->field_0].obj->go._okeyCode;
+	}
+	CPtrList::AddTail(v41, v45);
+	v48 = v65;
+	v49 = 0;
+	for (i = 0; i < v65; ++i) {
+		if (v49 == v48 - 1)
+			v50 = a2;
+		else
+			v50 = -1;
+		v51 = MGM_buildExCommand2(
+								  (MGM *)&this->movGraph.mgm,
+								  this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[1].mov,
+								  LOWORD(this->items2.m_pData[info->field_0].objectId),
+								  x1,
+								  y1,
+								  &x2,
+								  &y2,
+								  v50);
+		res = mq;
+		v51->_parId = mq->_id;
+		v51->msg._keyCode = this->items2.m_pData[info->field_0].obj->go._okeyCode;
+		CPtrList::AddTail(v41, v51);
+		v48 = v65;
+		v49 = i + 1;
+	}
+	if (!(info->flags & 4)) {
+		v52 = MGM_buildExCommand2(
+								  (MGM *)&this->movGraph.mgm,
+								  this->items2.m_pData[info->field_0].subItems[info->subIndex].walk[2].mov,
+								  LOWORD(this->items2.m_pData[info->field_0].objectId),
+								  x1,
+								  y1,
+								  &x2,
+								  &y2,
+								  -1);
+		v52->_parId = res->_id;
+		v52->msg._keyCode = this->items2.m_pData[info->field_0].obj->go._okeyCode;
+		CPtrList::AddTail(v41, v52);
+	}
+    v54 = ExCommand_ctor(v53, LOWORD(this->items2.m_pData[info->field_0].objectId), 5, -1, info->pt2.x, info->pt2.y, 0, 1, 0, 0, 0);
+	v54->msg._field_14 = info->distance2;
+	v55 = info->field_0;
+	v56 = this->items2.m_pData;
+	v54->msg._keyCode = v56[v55].obj->go._okeyCode;
+	v57 = v54->_excFlags | 2;
+	v54->msg._field_24 = 0;
+	v54->_excFlags = v57;
+	CPtrList::AddTail(v41, v54);
+	return res;
+#endif
 
 	return 0;
 }


Commit: c4c21c6702ec5b74c83186a8e57f772dc6668c70
    https://github.com/scummvm/scummvm/commit/c4c21c6702ec5b74c83186a8e57f772dc6668c70
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T13:18:52-08:00

Commit Message:
FULLPIPE: Started scene14

Changed paths:
  A engines/fullpipe/scenes/scene14.cpp



diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
new file mode 100644
index 0000000..ecd89c0
--- /dev/null
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -0,0 +1,84 @@
+/* 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 scene14_initScene(Scene *sc) {
+	g_vars->scene14_grandma = Scene_getStaticANIObject1ById(sc, ANI_GRANDMA, -1);
+	g_vars->scene14_var01 = 200;
+	g_vars->scene14_var02 = 200;
+	g_vars->scene14_var03 = 0;
+	g_vars->scene14_var04 = 0;
+	g_vars->scene14_var05 = 0;
+	g_vars->scene14_var06 = 0;
+	g_vars->scene14_var07 = 300;
+	g_vars->scene14_var08 = 300;
+	g_vars->scene14_pink = 0;
+	g_vars->scene14_var10 = 0;
+	g_vars->scene14_var11.clear();
+	g_vars->scene14_var12.clear();
+
+	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_14)) {
+		g_vars->scene14_var13 = 1;
+
+		StaticANIObject *ball = sc->getStaticANIObject1ById(ANI_BALL14, -1);
+
+		if (ball) {
+			ball->_flags &= 0xFFFB;
+			g_vars->scene14_var11.push_back(ball);
+		}
+		
+		for (uint i = 0; i < 3; i++) {
+			ball = new StaticANIObject(ball); // create a copy
+
+			ball->_flags &= 0xFFFB;
+			g_vars->scene14_var11.push_back(ball);
+
+			sc->addStaticANIObject(ball, 1);
+		}
+	} else {
+		g_vars->scene14_var13 = 0;
+		g_vars->scene14_grandma->hide();
+	}
+
+	g_fp->lift_setButton(sO_Level4, ST_LBN_4N);
+	g_fp->lift_sub5(sc, QU_SC14_ENTERLIFT, QU_SC14_EXITLIFT);
+
+	g_fp->initArcadeKeys("SC_14");
+	g_fp->setArcadeOverlay(PIC_CSR_ARCADE6);
+}
+
+} // End of namespace Fullpipe


Commit: bcb48c9d17a6c8f5f16d1ccf367bb13bcf93f1d4
    https://github.com/scummvm/scummvm/commit/bcb48c9d17a6c8f5f16d1ccf367bb13bcf93f1d4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T13:25:53-08:00

Commit Message:
FULLPIPE: Plug scene14 in

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 83721ed..d6e97ab 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -578,6 +578,12 @@ namespace Fullpipe {
 #define ST_STR_LEFT 1175
 #define ST_STR_RIGHT 1174
 
+// Scene 14
+#define ANI_BALL14 1246
+#define ANI_GRANDMA 1227
+#define QU_SC14_ENTERLIFT 1225
+#define QU_SC14_EXITLIFT 1226
+
 // Scene 15
 #define ANI_BOOT_15 4779
 #define ANI_INV_BOOT 881
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 22b69ce..f73a82d 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -36,6 +36,7 @@ MODULE_OBJS = \
 	scenes/scene11.o \
 	scenes/scene12.o \
 	scenes/scene13.o \
+	scenes/scene14.o \
 	scenes/scene15.o \
 	scenes/scene24.o \
 	scenes/sceneDbg.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index d1a5eff..b06d78c 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -198,6 +198,21 @@ Vars::Vars() {
 	scene13_guardDirection = false;
 	scene13_dudeX = 0;
 
+	scene14_grandma = 0;
+	scene14_var01 = 0;
+	scene14_var02 = 0;
+	scene14_var03 = 0;
+	scene14_var04 = 0;
+	scene14_var05 = 0;
+	scene14_var06 = 0;
+	scene14_var07 = 0;
+	scene14_var08 = 0;
+	scene14_pink = 0;
+	scene14_var10 = 0;
+	scene14_var11.clear();
+	scene14_var12.clear();
+	scene14_var13 = 0;
+
 	scene15_chantingCountdown = 0;
 	scene15_plusminus = 0;
 	scene15_ladder = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e75cec0..ea0c8e2 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -269,6 +269,21 @@ public:
 	bool scene13_guardDirection;
 	int scene13_dudeX;
 
+	StaticANIObject *scene14_grandma;
+	int scene14_var01;
+	int scene14_var02;
+	int scene14_var03;
+	int scene14_var04;
+	int scene14_var05;
+	int scene14_var06;
+	int scene14_var07;
+	int scene14_var08;
+	StaticANIObject *scene14_pink;
+	int scene14_var10;
+	Common::List<StaticANIObject *> scene14_var11;
+	Common::List<StaticANIObject *> scene14_var12;
+	int scene14_var13;
+
 	int scene15_chantingCountdown;
 	StaticANIObject *scene15_plusminus;
 	PictureObject *scene15_ladder;
diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
index ecd89c0..afc303b 100644
--- a/engines/fullpipe/scenes/scene14.cpp
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -37,7 +37,7 @@
 namespace Fullpipe {
 
 void scene14_initScene(Scene *sc) {
-	g_vars->scene14_grandma = Scene_getStaticANIObject1ById(sc, ANI_GRANDMA, -1);
+	g_vars->scene14_grandma = sc->getStaticANIObject1ById(ANI_GRANDMA, -1);
 	g_vars->scene14_var01 = 200;
 	g_vars->scene14_var02 = 200;
 	g_vars->scene14_var03 = 0;


Commit: 574707f9dd65870e07daff42b015da8aa38f6b39
    https://github.com/scummvm/scummvm/commit/574707f9dd65870e07daff42b015da8aa38f6b39
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T13:34:18-08:00

Commit Message:
FULLPIPE: Implement scene14_setupMusic() and scene14_updateCursor()

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



diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
index afc303b..b0ad307 100644
--- a/engines/fullpipe/scenes/scene14.cpp
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -81,4 +81,29 @@ void scene14_initScene(Scene *sc) {
 	g_fp->setArcadeOverlay(PIC_CSR_ARCADE6);
 }
 
+void scene14_setupMusic() {
+	if (!g_vars->scene14_var13)
+		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_14"), "MUSIC2", 0);
+}
+
+int scene14_updateCursor() {
+	g_fp->updateCursorCommon();
+
+	if (g_vars->scene14_var03) {
+		if (g_vars->scene14_var04) {
+			g_fp->_cursorId = PIC_CSR_ARCADE2_D;
+		} else {
+			if (g_fp->_aniMan != g_fp->_objectAtCursor || g_fp->_aniMan->_movement || g_fp->_cursorId != PIC_CSR_DEFAULT) {
+				if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV) {
+					g_fp->_cursorId = PIC_CSR_DEFAULT;
+				}
+			} else {
+				g_fp->_cursorId = PIC_CSR_ITN;
+			}
+		}
+	}
+
+	return g_fp->_cursorId;
+}
+
 } // End of namespace Fullpipe


Commit: bfc5e7aa9f236da7fc7ca4b53030fe28b6b7486f
    https://github.com/scummvm/scummvm/commit/bfc5e7aa9f236da7fc7ca4b53030fe28b6b7486f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T14:15:48-08:00

Commit Message:
FULLPIPE: Implement sceneHandler14()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index d6e97ab..1b0808e 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -581,6 +581,22 @@ namespace Fullpipe {
 // Scene 14
 #define ANI_BALL14 1246
 #define ANI_GRANDMA 1227
+#define MSG_SC14_ENDARCADE 3250
+#define MSG_SC14_GMAJUMP 1250
+#define MSG_SC14_GMATOTRUBA 3249
+#define MSG_SC14_HIDEBALLLAST 3251
+#define MSG_SC14_HIDEPINK 3248
+#define MSG_SC14_MANKICKBALL 1257
+#define MSG_SC14_RESTORESCROLL 4769
+#define MSG_SC14_SCROLLLEFT 4768
+#define MSG_SC14_SHOWBALLFLY 1253
+#define MSG_SC14_SHOWBALLGMADIVE 1260
+#define MSG_SC14_SHOWBALLGMAHIT 1259
+#define MSG_SC14_SHOWBALLGMAHIT2 3245
+#define MSG_SC14_SHOWBALLLAST 3246
+#define MSG_SC14_SHOWBALLMAN 1254
+#define MSG_SC14_STARTARCADE 3252
+#define MV_MAN14_KICK 1237
 #define QU_SC14_ENTERLIFT 1225
 #define QU_SC14_EXITLIFT 1226
 
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index b06d78c..3c27e08 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -212,6 +212,12 @@ Vars::Vars() {
 	scene14_var11.clear();
 	scene14_var12.clear();
 	scene14_var13 = 0;
+	scene14_var14 = 0;
+	scene14_var15 = 0;
+	scene14_var16 = 0;
+	scene14_var17 = 0;
+	scene14_var18 = 0;
+	scene14_var19 = 0;
 
 	scene15_chantingCountdown = 0;
 	scene15_plusminus = 0;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index ea0c8e2..71d98ae 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -283,6 +283,12 @@ public:
 	Common::List<StaticANIObject *> scene14_var11;
 	Common::List<StaticANIObject *> scene14_var12;
 	int scene14_var13;
+	int scene14_var14;
+	int scene14_var15;
+	int scene14_var16;
+	int scene14_var17;
+	int scene14_var18;
+	int scene14_var19;
 
 	int scene15_chantingCountdown;
 	StaticANIObject *scene15_plusminus;
diff --git a/engines/fullpipe/scenes/scene14.cpp b/engines/fullpipe/scenes/scene14.cpp
index b0ad307..6bdf4d7 100644
--- a/engines/fullpipe/scenes/scene14.cpp
+++ b/engines/fullpipe/scenes/scene14.cpp
@@ -106,4 +106,302 @@ int scene14_updateCursor() {
 	return g_fp->_cursorId;
 }
 
+void sceneHandler14_showBallGrandmaHit2() {
+	warning("STUB: sceneHandler14_showBallGrandmaHit2()");
+}
+
+void sceneHandler14_showBallGrandmaDive() {
+	warning("STUB: sceneHandler14_showBallGrandmaDive()");
+}
+
+void sceneHandler14_showBallGrandmaHit() {
+	warning("STUB: sceneHandler14_showBallGrandmaHit()");
+}
+
+void sceneHandler14_showBallMan() {
+	warning("STUB: sceneHandler14_showBallMan()");
+}
+
+void sceneHandler14_manKickBall() {
+	warning("STUB: sceneHandler14_manKickBall()");
+}
+
+void sceneHandler14_showBallFly() {
+	warning("STUB: sceneHandler14_showBallFly()");
+}
+
+void sceneHandler14_grandmaJump() {
+	warning("STUB: sceneHandler14_grandmaJump()");
+}
+
+void sceneHandler14_winArcade() {
+	warning("STUB: sceneHandler14_winArcade()");
+}
+
+void sceneHandler14_showBallLast() {
+	warning("STUB: sceneHandler14_showBallLast()");
+}
+
+void sceneHandler14_hideBallLast() {
+	warning("STUB: sceneHandler14_hideBallLast()");
+}
+
+void sceneHandler14_startArcade() {
+	warning("STUB: sceneHandler14_startArcade()");
+}
+
+void sceneHandler14_endArcade() {
+	warning("STUB: sceneHandler14_endArcade()");
+}
+
+void sceneHandler14_sub01() {
+	warning("STUB: sceneHandler14_sub01()");
+}
+
+void sceneHandler14_sub02() {
+	warning("STUB: sceneHandler14_sub02()");
+}
+
+void sceneHandler14_sub03() {
+	warning("STUB: sceneHandler14_sub03()");
+}
+
+bool sceneHandler14_sub04(ExCommand *cmd) {
+	warning("STUB: sceneHandler14_sub04()");
+
+	return false;
+}
+
+void sceneHandler14_sub05() {
+	warning("STUB: sceneHandler14_sub05()");
+}
+
+void sceneHandler14_sub06() {
+	warning("STUB: sceneHandler14_sub06()");
+}
+
+void sceneHandler14_sub07() {
+	warning("STUB: sceneHandler14_sub07()");
+}
+
+void sceneHandler14_sub08() {
+	warning("STUB: sceneHandler14_sub08()");
+}
+
+void sceneHandler14_sub09() {
+	warning("STUB: sceneHandler14_sub09()");
+}
+
+void sceneHandler14_sub10() {
+	warning("STUB: sceneHandler14_sub10()");
+}
+
+void sceneHandler14_sub11() {
+	warning("STUB: sceneHandler14_sub11()");
+}
+
+void sceneHandler14_sub12() {
+	warning("STUB: sceneHandler14_sub12()");
+}
+
+void sceneHandler14_sub13() {
+	warning("STUB: sceneHandler14_sub13()");
+}
+
+int sceneHandler14(ExCommand *cmd) {
+	if (cmd->_messageKind != 17)
+		return 0;
+
+	switch(cmd->_messageNum) {
+	case MSG_SC14_SHOWBALLGMAHIT2:
+		sceneHandler14_showBallGrandmaHit2();
+		break;
+
+	case MSG_SC14_SHOWBALLGMADIVE:
+		sceneHandler14_showBallGrandmaDive();
+		break;
+
+	case MSG_LIFT_CLICKBUTTON:
+		g_fp->lift_animation3();
+		break;
+
+	case MSG_SC14_SHOWBALLGMAHIT:
+		sceneHandler14_showBallGrandmaHit();
+		break;
+
+	case MSG_SC14_SHOWBALLMAN:
+		sceneHandler14_showBallMan();
+		break;
+
+	case MSG_SC14_MANKICKBALL:
+		sceneHandler14_manKickBall();
+		break;
+
+	case MSG_SC14_SHOWBALLFLY:
+		sceneHandler14_showBallFly();
+		break;
+
+	case MSG_LIFT_GO:
+		g_fp->lift_goAnimation();
+		break;
+
+	case MSG_SC14_GMAJUMP:
+		sceneHandler14_grandmaJump();
+		break;
+
+	case MSG_LIFT_CLOSEDOOR:
+		g_fp->lift_closedoorSeq();
+		break;
+
+	case MSG_LIFT_EXITLIFT:
+		g_fp->lift_exitSeq(cmd);
+		break;
+
+	case MSG_LIFT_STARTEXITQUEUE:
+		g_fp->lift_startExitQueue();
+		break;
+
+	case MSG_SC14_RESTORESCROLL:
+		g_fp->_aniMan2 = g_fp->_aniMan;
+		g_fp->_scrollSpeed = 8;
+		break;
+
+	case MSG_CMN_WINARCADE:
+		sceneHandler14_winArcade();
+		break;
+
+	case MSG_SC14_SCROLLLEFT:
+		g_fp->_aniMan2 = 0;
+		g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
+		g_fp->_scrollSpeed = 24;
+		break;
+
+	case MSG_SC14_SHOWBALLLAST:
+		sceneHandler14_showBallLast();
+		break;
+
+	case MSG_SC14_HIDEBALLLAST:
+		sceneHandler14_hideBallLast();
+		break;
+
+	case MSG_SC14_HIDEPINK:
+		if (!g_vars->scene14_pink)
+			break;
+
+		g_vars->scene14_pink->hide();
+		break;
+
+	case MSG_SC14_GMATOTRUBA:
+		g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
+		break;
+
+	case MSG_SC14_STARTARCADE:
+		sceneHandler14_startArcade();
+		break;
+
+	case MSG_SC14_ENDARCADE:
+		sceneHandler14_endArcade();
+
+		g_vars->scene14_var13 = 0;
+		break;
+
+	case 64:
+		g_fp->lift_sub05(cmd);
+		break;
+
+	case 33:
+		{
+			Movement *mov = g_fp->_aniMan->_movement;
+
+			if (mov) {
+				g_vars->scene14_var14 = mov->_ox;
+				g_vars->scene14_var15 = mov->_oy;
+
+				if (mov->_id == MV_MAN14_KICK)
+					g_vars->scene14_var14 = mov->_ox + 2 * g_fp->_aniMan->_movement->_currDynamicPhaseIndex;
+			} else {
+				g_vars->scene14_var14 = g_fp->_aniMan->_ox;
+				g_vars->scene14_var15 = g_fp->_aniMan->_oy;
+			}
+
+			mov = g_vars->scene14_grandma->_movement;
+			if (mov) {
+				g_vars->scene14_var16 = mov->_ox;
+				g_vars->scene14_var17 = mov->_oy;
+			} else {
+				g_vars->scene14_var16 = g_vars->scene14_grandma->_ox;
+				g_vars->scene14_var17 = g_vars->scene14_grandma->_oy;
+			}
+
+			if (g_fp->_aniMan2) {
+				int x = g_fp->_aniMan2->_ox;
+				g_vars->scene14_var18 = x;
+				g_vars->scene14_var19 = g_fp->_aniMan2->_oy;
+
+				if (x < g_fp->_sceneRect.left + g_vars->scene14_var01) {
+					g_fp->_currentScene->_x = x - g_vars->scene14_var07 - g_fp->_sceneRect.left;
+					x = g_vars->scene14_var18;
+				}
+
+				if (x > g_fp->_sceneRect.right - g_vars->scene14_var01)
+					g_fp->_currentScene->_x = x + g_vars->scene14_var07 - g_fp->_sceneRect.right;
+			}
+
+			if (g_vars->scene14_var05)
+				sceneHandler14_sub01();
+
+			g_fp->_behaviorManager->updateBehaviors();
+			g_fp->startSceneTrack();
+			break;
+		}
+
+	case 30:
+		if (g_vars->scene14_var04) {
+			sceneHandler14_sub02();
+			break;
+		}
+
+		if (!g_vars->scene14_var03) {
+			break;
+		}
+		break;
+
+	case 29:
+        if (g_vars->scene14_var03) {
+			int pixel;
+
+			if (g_vars->scene14_var06 && g_fp->_aniMan->getPixelAtPos(cmd->_sceneClickX, cmd->_sceneClickY, &pixel) && !g_fp->_aniMan->_movement) {
+				sceneHandler14_sub03();
+				break;
+			}
+        } else {
+			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+			if (ani && ani->_id == ANI_LIFTBUTTON) {
+				g_fp->lift_sub1(ani);
+				cmd->_messageKind = 0;
+				break;
+			}
+
+			if (!sceneHandler14_sub04(cmd) && (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode))) {
+				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
+						g_fp->processArcade(cmd);
+						sceneHandler14_sub04(cmd);
+						break;
+					}
+				}
+			}
+        }
+		break;
+    }
+
+	return 0;
+}
+
 } // End of namespace Fullpipe


Commit: a36344b16862751b267d31e135f33016d310ce65
    https://github.com/scummvm/scummvm/commit/a36344b16862751b267d31e135f33016d310ce65
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2013-12-30T14:17:35-08:00

Commit Message:
FULLPIPE: Enable scene14

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



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 3c27e08..835f324 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -521,7 +521,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		_updateCursorCallback = defaultUpdateCursor;
 		break;
 
-#if 0
 	case SC_14:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_14");
 		scene->preloadMovements(sceneVar);
@@ -530,10 +529,9 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		scene->initObjectCursors("SC_14");
 		setSceneMusicParameters(sceneVar);
 		insertMessageHandler(sceneHandler14, 2, 2);
-		scene14_sub_41D2B0();
+		scene14_setupMusic();
 		_updateCursorCallback = scene14_updateCursor;
 		break;
-#endif
 
 	case SC_15:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_15");
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 71d98ae..93abacd 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -83,6 +83,11 @@ int sceneHandler12(ExCommand *ex);
 void scene13_initScene(Scene *sc);
 int sceneHandler13(ExCommand *ex);
 
+void scene14_initScene(Scene *sc);
+void scene14_setupMusic();
+int sceneHandler14(ExCommand *cmd);
+int scene14_updateCursor();
+
 int scene15_updateCursor();
 void scene15_initScene(Scene *sc);
 int sceneHandler15(ExCommand *cmd);






More information about the Scummvm-git-logs mailing list