[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