[Scummvm-cvs-logs] scummvm master -> d75c4d7f447bc87ff0fcebc7c4abaa4e4f281f22
sev-
sev at scummvm.org
Sat Jan 4 23:54:13 CET 2014
This automated email contains information about 10 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8b78fb5642 FULLPIPE: Implement MGM::buildExCommand2()
fb234a2d0c FULLPIPE: Implement Movement::countPhasesWithFlag()
c174883e05 FULLPIPE: Implement doSomeAnimation()
d1ba9ef26a FULLPIPE: Rename in MovInfo1 struct
5afe7cfb7b FULLPIPE: Initial code for scene23
2f82ff1eee FULLPIPE: Plug scene23 in
7cb50d7066 FULLPIPE: Implement scene23_updateCursor()
b0ddd171cb FULLPIPE: Implement scene23_setGiraffeState()
d8c3c774d1 FULLPIPE: Implement sceneHandler23()
d75c4d7f44 FULLPIPE: Enable scene23
Commit: 8b78fb5642c3648c34d341edb868525beee040fe
https://github.com/scummvm/scummvm/commit/8b78fb5642c3648c34d341edb868525beee040fe
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:30-08:00
Commit Message:
FULLPIPE: Implement MGM::buildExCommand2()
Changed paths:
engines/fullpipe/messages.cpp
engines/fullpipe/messages.h
engines/fullpipe/motion.cpp
engines/fullpipe/motion.h
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index 68ec3dc..4665712 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -145,7 +145,7 @@ void ExCommand::firef34() {
}
}
-ExCommand2::ExCommand2(int messageKind, int parentId, const Common::Point **points, int pointsSize) : ExCommand(parentId, messageKind, 0, 0, 0, 0, 1, 0, 0, 0) {
+ExCommand2::ExCommand2(int messageKind, int parentId, Common::Point **points, int pointsSize) : ExCommand(parentId, messageKind, 0, 0, 0, 0, 1, 0, 0, 0) {
_objtype = kObjTypeExCommand2;
_pointsSize = pointsSize;
diff --git a/engines/fullpipe/messages.h b/engines/fullpipe/messages.h
index 04355b2..7f70838 100644
--- a/engines/fullpipe/messages.h
+++ b/engines/fullpipe/messages.h
@@ -85,7 +85,7 @@ class ExCommand2 : public ExCommand {
Common::Point **_points;
int _pointsSize;
- ExCommand2(int messageKind, int parentId, const Common::Point **points, int pointsSize);
+ ExCommand2(int messageKind, int parentId, Common::Point **points, int pointsSize);
ExCommand2(ExCommand2 *src);
virtual ~ExCommand2();
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 8e5e0c0..b24790c 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -1464,18 +1464,18 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
int v34 = dx1 - cntX * x1;
int v35 = dy1 - cntY * y1;
- int v72;
- int x2;
- int y2 = v34;
+ Common::Point x2;
+ Common::Point y2(v34, v35);
if (v34)
- x2 = v34 / abs(v34);
+ x2.x = v34 / abs(v34);
else
- x2 = 0;
+ x2.x = 0;
+
if (v35)
- v72 = v35 / abs(v35);
+ x2.y = v35 / abs(v35);
else
- v72 = 0;
+ x2.y = 0;
MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
ExCommand *ex;
@@ -1906,12 +1906,56 @@ Common::Point *MGM::calcLength(Common::Point *point, Movement *mov, int x, int y
return point;
}
-ExCommand2 *MGM::buildExCommand2(Movement *mov, int objId, int x1, int y1, int *x2, int *y2, int len) {
- ExCommand2 *ex2 = new ExCommand2(20, objId, 0, 0);
+ExCommand2 *MGM::buildExCommand2(Movement *mov, int objId, int x1, int y1, Common::Point *x2, Common::Point *y2, int len) {
+ uint cnt;
+
+ if (mov->_currMovement)
+ cnt = mov->_currMovement->_dynamicPhases.size();
+ else
+ cnt = mov->_dynamicPhases.size();
+
+ if (len > 0 && cnt > len)
+ cnt = len;
+
+ Common::Point **points = (Common::Point **)malloc(sizeof(Common::Point *) * cnt);
+
+ for (uint i = 0; i < cnt; i++) {
+ int flags = mov->getDynamicPhaseByIndex(i)->getDynFlags();
+
+ points[i] = new Common::Point;
+
+ if (flags & 1) {
+ points[i]->x = x1 + x2->x;
+
+ y2->x -= x2->x;
+
+ if (!y2->x)
+ x2->x = 0;
+ }
+
+ if (flags & 2) {
+ points[i]->y = y1 + x2->y;
+
+ y2->y -= x2->y;
+
+ if ( !y2->y )
+ x2->y = 0;
+ }
+ }
+
+ ExCommand2 *ex = new ExCommand2(20, objId, points, cnt);
+ ex->_excFlags = 2;
+ ex->_messageNum = mov->_id;
+ ex->_field_14 = len;
+ ex->_field_24 = 1;
+ ex->_keyCode = -1;
+
+ for (int i = 0; i < cnt; i++)
+ delete points[i];
- warning("STUB: MGM::buildExCommand2()");
+ free(points);
- return ex2;
+ return ex;
}
MovGraphLink::MovGraphLink() {
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index 2d39a27..713cafd 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -176,7 +176,7 @@ public:
void clearMovements2(int idx);
int recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop);
Common::Point *calcLength(Common::Point *point, Movement *mov, int x, int y, int *x1, int *y1, int flag);
- ExCommand2 *buildExCommand2(Movement *mov, int objId, int x1, int y1, int *x2, int *y2, int len);
+ ExCommand2 *buildExCommand2(Movement *mov, int objId, int x1, int y1, Common::Point *x2, Common::Point *y2, int len);
};
struct MctlLadderMovementVars {
Commit: fb234a2d0ce535a01fb564927735ede756a245f6
https://github.com/scummvm/scummvm/commit/fb234a2d0ce535a01fb564927735ede756a245f6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:30-08:00
Commit Message:
FULLPIPE: Implement Movement::countPhasesWithFlag()
Changed paths:
engines/fullpipe/statics.cpp
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 7178538..d734032 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -1529,9 +1529,22 @@ int Movement::calcDuration() {
}
int Movement::countPhasesWithFlag(int maxidx, int flag) {
- warning("STUB: Movement::countPhasesWithFlag()");
+ int res = 0;
+ int sz;
- return 0;
+ if (_currMovement)
+ sz = _currMovement->_dynamicPhases.size();
+ else
+ sz = _dynamicPhases.size();
+
+ if (maxidx < 0)
+ maxidx = sz;
+
+ for (int i = 0; i < maxidx && i < sz; i++)
+ if (getDynamicPhaseByIndex(i)->_dynFlags & flag)
+ res++;
+
+ return res;
}
void Movement::setDynamicPhaseIndex(int index) {
Commit: c174883e0559e4c7e0f26f3e024bc255f6dfefde
https://github.com/scummvm/scummvm/commit/c174883e0559e4c7e0f26f3e024bc255f6dfefde
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:30-08:00
Commit Message:
FULLPIPE: Implement doSomeAnimation()
Changed paths:
engines/fullpipe/motion.cpp
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index b24790c..2d26a3e 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -2214,7 +2214,11 @@ int startWalkTo(int objId, int objKey, int x, int y, int a5) {
}
int doSomeAnimation(int objId, int objKey, int a3) {
- warning("STUB: doSomeAnimation(%d, %d, %d)", objId, objKey, a3);
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(objId, objKey);
+ MctlCompound *cmp = getCurrSceneSc2MotionController();
+
+ if (ani && cmp)
+ return cmp->method3C(ani, a3);
return 0;
}
Commit: d1ba9ef26aa4cea884a3926f8a2874e7fe930d23
https://github.com/scummvm/scummvm/commit/d1ba9ef26aa4cea884a3926f8a2874e7fe930d23
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:30-08:00
Commit Message:
FULLPIPE: Rename in MovInfo1 struct
Changed paths:
engines/fullpipe/motion.cpp
engines/fullpipe/motion.h
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 2d26a3e..8d6fe4a 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -391,7 +391,7 @@ MctlConnectionPoint::~MctlConnectionPoint() {
}
MovInfo1::MovInfo1(MovInfo1 *src) {
- field_0 = src->field_0;
+ index = src->index;
pt1 = src->pt1;
pt2 = src->pt2;
distance1 = src->distance1;
@@ -404,7 +404,7 @@ MovInfo1::MovInfo1(MovInfo1 *src) {
}
void MovInfo1::clear() {
- field_0 = 0;
+ index = 0;
pt1.x = pt1.y = 0;
pt2.x = pt2.y = 0;
distance1 = 0;
@@ -896,10 +896,10 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
if (i >= movInfo->itemsCount - 2 || movInfo->items[i + 2]->subIndex != 10) {
movinfo.flags = 0;
- mg2i = &_items2[movInfo->field_0]->_subItems[movInfo->items[i]->subIndex]._turnS[movInfo->items[i + 1]->subIndex];
+ mg2i = &_items2[movInfo->index]->_subItems[movInfo->items[i]->subIndex]._turnS[movInfo->items[i + 1]->subIndex];
} else {
movinfo.flags = 2;
- mg2i = &_items2[movInfo->field_0]->_subItems[movInfo->items[i]->subIndex]._turn[movInfo->items[i + 1]->subIndex];
+ mg2i = &_items2[movInfo->index]->_subItems[movInfo->items[i]->subIndex]._turn[movInfo->items[i + 1]->subIndex];
}
if (i < movInfo->itemsCount - 2
|| (movInfo->items[i]->x == movInfo->items[i + 1]->x
@@ -909,10 +909,10 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
|| movInfo->items[i + 1]->x == -1
|| movInfo->items[i + 1]->y == -1) {
- ExCommand *ex = new ExCommand(_items2[movInfo->field_0]->_objectId, 1, mg2i->_movementId, 0, 0, 0, 1, 0, 0, 0);
+ ExCommand *ex = new ExCommand(_items2[movInfo->index]->_objectId, 1, mg2i->_movementId, 0, 0, 0, 1, 0, 0, 0);
ex->_excFlags |= 2;
- ex->_keyCode = _items2[movInfo->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[movInfo->index]->_obj->_okeyCode;
ex->_field_24 = 1;
ex->_field_14 = -1;
mq->addExCommandToEnd(ex);
@@ -924,7 +924,7 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
memset(&mgminfo, 0, sizeof(mgminfo));
- mgminfo.ani = _items2[movInfo->field_0]->_obj;
+ mgminfo.ani = _items2[movInfo->index]->_obj;
mgminfo.staticsId2 = mg2i->_mov->_staticsObj2->_staticsId;
mgminfo.x1 = movInfo->items[i + 1]->x;
mgminfo.y1 = movInfo->items[i + 1]->y;
@@ -967,13 +967,13 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
|| movInfo->items[i + 2]->subIndex == movInfo->items[i + 3]->subIndex) {
movinfo.flags &= 3;
} else {
- MG2I *m = &_items2[movInfo->field_0]->_subItems[movInfo->items[i + 2]->subIndex]._turnS[movInfo->items[i + 3]->subIndex];
+ MG2I *m = &_items2[movInfo->index]->_subItems[movInfo->items[i + 2]->subIndex]._turnS[movInfo->items[i + 3]->subIndex];
movinfo.pt2.x -= m->_mx;
movinfo.pt2.y -= m->_my;
movinfo.flags &= 3;
}
} else {
- MG2I *m = &_items2[movInfo->field_0]->_subItems[movInfo->items[i + 2]->subIndex]._turn[movInfo->items[i + 3]->subIndex];
+ MG2I *m = &_items2[movInfo->index]->_subItems[movInfo->items[i + 2]->subIndex]._turn[movInfo->items[i + 3]->subIndex];
if (movinfo.item1Index && movinfo.item1Index != 1) {
movinfo.pt2.y -= m->_my;
@@ -1384,16 +1384,16 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
int my1 = 0;
if (!(info->flags & 2)) {
- mx1 = _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._mx;
- my1 = _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._my;
+ mx1 = _items2[info->index]->_subItems[info->subIndex]._walk[0]._mx;
+ my1 = _items2[info->index]->_subItems[info->subIndex]._walk[0]._my;
}
int mx2 = 0;
int my2 = 0;
if (!(info->flags & 4)) {
- mx2 = _items2[info->field_0]->_subItems[info->subIndex]._walk[2]._mx;
- my2 = _items2[info->field_0]->_subItems[info->subIndex]._walk[2]._my;
+ mx2 = _items2[info->index]->_subItems[info->subIndex]._walk[2]._mx;
+ my2 = _items2[info->index]->_subItems[info->subIndex]._walk[2]._my;
}
Common::Point point;
@@ -1403,7 +1403,7 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
int a2;
int mgmLen;
- _mgm.calcLength(&point, _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov, x, y, &mgmLen, &a2, info->flags & 1);
+ _mgm.calcLength(&point, _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov, x, y, &mgmLen, &a2, info->flags & 1);
int x1 = point.x;
int y1 = point.y;
@@ -1411,7 +1411,7 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
if (!(info->flags & 1)) {
if (info->subIndex == 1 || info->subIndex == 0) {
a2 = -1;
- x1 = mgmLen * _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mx;
+ x1 = mgmLen * _items2[info->index]->_subItems[info->subIndex]._walk[1]._mx;
x = x1;
info->pt2.x = x1 + info->pt1.x + mx1 + mx2;
}
@@ -1420,7 +1420,7 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
if (!(info->flags & 1)) {
if (info->subIndex == 2 || info->subIndex == 3) {
a2 = -1;
- y1 = mgmLen * _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._my;
+ y1 = mgmLen * _items2[info->index]->_subItems[info->subIndex]._walk[1]._my;
y = y1;
info->pt2.y = y1 + info->pt1.y + my1 + my2;
}
@@ -1430,23 +1430,23 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
int cntY = 0;
if (!(info->flags & 2)) {
- cntX = _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._mov->countPhasesWithFlag(-1, 1);
- cntY = _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._mov->countPhasesWithFlag(-1, 2);
+ cntX = _items2[info->index]->_subItems[info->subIndex]._walk[0]._mov->countPhasesWithFlag(-1, 1);
+ cntY = _items2[info->index]->_subItems[info->subIndex]._walk[0]._mov->countPhasesWithFlag(-1, 2);
}
if (mgmLen > 1) {
- cntX += (mgmLen - 1) * _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(-1, 1);
- cntY += (mgmLen - 1) * _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(-1, 2);
+ cntX += (mgmLen - 1) * _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(-1, 1);
+ cntY += (mgmLen - 1) * _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(-1, 2);
}
if (mgmLen > 0) {
- cntX += _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(a2, 1);
- cntY += _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(a2, 2);
+ cntX += _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(a2, 1);
+ cntY += _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov->countPhasesWithFlag(a2, 2);
}
if (!(info->flags & 4)) {
- cntX += _items2[info->field_0]->_subItems[info->subIndex]._walk[2]._mov->countPhasesWithFlag(-1, 1);
- cntY += _items2[info->field_0]->_subItems[info->subIndex]._walk[2]._mov->countPhasesWithFlag(-1, 2);
+ cntX += _items2[info->index]->_subItems[info->subIndex]._walk[2]._mov->countPhasesWithFlag(-1, 1);
+ cntY += _items2[info->index]->_subItems[info->subIndex]._walk[2]._mov->countPhasesWithFlag(-1, 2);
}
int dx1 = x - x1;
@@ -1482,9 +1482,9 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
if (info->flags & 2) {
ex = new ExCommand(
- _items2[info->field_0]->_objectId,
+ _items2[info->index]->_objectId,
5,
- _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._movementId,
+ _items2[info->index]->_subItems[info->subIndex]._walk[1]._movementId,
info->pt1.x,
info->pt1.y,
0,
@@ -1495,14 +1495,14 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
ex->_field_14 = info->distance1;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
ex->_field_24 = 1;
ex->_excFlags |= 2;
} else {
ex = new ExCommand(
- _items2[info->field_0]->_objectId,
+ _items2[info->index]->_objectId,
5,
- _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._movementId,
+ _items2[info->index]->_subItems[info->subIndex]._walk[0]._movementId,
info->pt1.x,
info->pt1.y,
0,
@@ -1513,21 +1513,21 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
ex->_field_14 = info->distance1;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
ex->_field_24 = 1;
ex->_excFlags |= 2;
mq->addExCommandToEnd(ex);
ex = _mgm.buildExCommand2(
- _items2[info->field_0]->_subItems[info->subIndex]._walk[0]._mov,
- _items2[info->field_0]->_objectId,
+ _items2[info->index]->_subItems[info->subIndex]._walk[0]._mov,
+ _items2[info->index]->_objectId,
x1,
y1,
&x2,
&y2,
-1);
ex->_parId = mq->_id;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
}
mq->addExCommandToEnd(ex);
@@ -1541,37 +1541,37 @@ MessageQueue *MovGraph2::genMovement(MovInfo1 *info) {
par = -1;
ex = _mgm.buildExCommand2(
- _items2[info->field_0]->_subItems[info->subIndex]._walk[1]._mov,
- _items2[info->field_0]->_objectId,
+ _items2[info->index]->_subItems[info->subIndex]._walk[1]._mov,
+ _items2[info->index]->_objectId,
x1,
y1,
&x2,
&y2,
par);
ex->_parId = mq->_id;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
mq->addExCommandToEnd(ex);
}
if (!(info->flags & 4)) {
ex = _mgm.buildExCommand2(
- _items2[info->field_0]->_subItems[info->subIndex]._walk[2]._mov,
- _items2[info->field_0]->_objectId,
+ _items2[info->index]->_subItems[info->subIndex]._walk[2]._mov,
+ _items2[info->index]->_objectId,
x1,
y1,
&x2,
&y2,
-1);
ex->_parId = mq->_id;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
mq->addExCommandToEnd(ex);
}
- ex = new ExCommand(_items2[info->field_0]->_objectId, 5, -1, info->pt2.x, info->pt2.y, 0, 1, 0, 0, 0);
+ ex = new ExCommand(_items2[info->index]->_objectId, 5, -1, info->pt2.x, info->pt2.y, 0, 1, 0, 0, 0);
ex->_field_14 = info->distance2;
- ex->_keyCode = _items2[info->field_0]->_obj->_okeyCode;
+ ex->_keyCode = _items2[info->index]->_obj->_okeyCode;
ex->_field_24 = 0;
ex->_excFlags |= 2;
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index 713cafd..cecde70 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -374,7 +374,7 @@ struct MovInfo1Sub {
};
struct MovInfo1 {
- int field_0;
+ int index;
Common::Point pt1;
Common::Point pt2;
int distance1;
Commit: 5afe7cfb7bf21204ac4225c05e0fe4c6c074ef52
https://github.com/scummvm/scummvm/commit/5afe7cfb7bf21204ac4225c05e0fe4c6c074ef52
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:30-08:00
Commit Message:
FULLPIPE: Initial code for scene23
Changed paths:
A engines/fullpipe/scenes/scene23.cpp
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
new file mode 100644
index 0000000..8898d5f9
--- /dev/null
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -0,0 +1,133 @@
+/* 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 __thiscall scene23_initScene(Scene *sc) {
+ g_vars->scene23_var01 = 200;
+ g_vars->scene23_var02 = 200;
+ g_vars->scene23_var03 = 300;
+ g_vars->scene23_var04 = 300;
+ g_vars->scene23_calend0 = sc->getStaticANIObject1ById(ANI_CALENDWHEEL, 0);
+ g_vars->scene23_calend1 = sc->getStaticANIObject1ById(ANI_CALENDWHEEL, 1);
+ g_vars->scene23_calend2 = sc->getStaticANIObject1ById(ANI_CALENDWHEEL, 2);
+ g_vars->scene23_calend3 = sc->getStaticANIObject1ById(ANI_CALENDWHEEL, 3);
+ g_vars->scene23_var05 = 0;
+ g_vars->scene23_var06 = 0;
+ g_vars->scene23_var07 = 0;
+ g_vars->scene23_giraffeTop = sc->getStaticANIObject1ById(ANI_GIRAFFE_TOP, -1);
+ g_vars->scene23_giraffee = sc->getStaticANIObject1ById(ANI_GIRAFFEE, -1);
+
+ g_fp->_floaters->init(getGameLoaderGameVar()->getSubVarByName("SC_23"));
+
+ Scene *oldsc = g_fp->_currentScene;
+ g_fp->_currentScene = sc;
+
+ if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
+ sc->getPictureObjectById(PIC_SC23_BOXOPEN, 0)->_flags |= 4;
+ sc->getPictureObjectById(PIC_SC23_BOXCLOSED, 0)->_flags &= 0xFFFB;
+ sc->getPictureObjectById(PIC_SC23_BTN1, 0)->_flags |= 4;
+ sc->getPictureObjectById(PIC_SC23_BTN2, 0)->_flags |= 4;
+ sc->getPictureObjectById(PIC_SC23_BTN3, 0)->_flags |= 4;
+ sc->getPictureObjectById(PIC_SC23_BTN4, 0)->_flags |= 4;
+
+ if (g_vars->scene23_giraffee->_statics->_staticsId == ST_GRFG_EMPTY || !(g_vars->scene23_giraffee->_flags & 4)) {
+ g_vars->scene23_giraffee->changeStatics2(ST_GRFG_BALD);
+ g_vars->scene23_giraffee->_flags |= 4;
+ }
+ g_vars->scene23_calend0->show1(-1, -1, -1, 0);
+ g_vars->scene23_calend1->show1(-1, -1, -1, 0);
+ g_vars->scene23_calend2->show1(-1, -1, -1, 0);
+ g_vars->scene23_calend3->show1(-1, -1, -1, 0);
+
+ sc->getStaticANIObject1ById(ANI_LUK23_U, -1)->changeStatics2(ST_LUK23U_OPEN);
+ } else {
+ sc->getPictureObjectById(PIC_SC23_BOXOPEN, 0)->_flags &= 0xFFFB;
+ sc->getPictureObjectById(PIC_SC23_BOXCLOSED, 0)->_flags |= 4;
+ sc->getPictureObjectById(PIC_SC23_BTN1, 0)->_flags &= 0xFFFB;
+ sc->getPictureObjectById(PIC_SC23_BTN2, 0)->_flags &= 0xFFFB;
+ sc->getPictureObjectById(PIC_SC23_BTN3, 0)->_flags &= 0xFFFB;
+ sc->getPictureObjectById(PIC_SC23_BTN4, 0)->_flags &= 0xFFFB;
+
+ g_vars->scene23_giraffee->hide();
+ g_vars->scene23_calend0->hide();
+ g_vars->scene23_calend1->hide();
+ g_vars->scene23_calend2->hide();
+ g_vars->scene23_calend3->hide();
+
+ sc->getStaticANIObject1ById(ANI_LUK23_U, -1)->changeStatics2(ST_LUK23U_CLOSED);
+
+ g_fp->_floaters->genFlies(sc, 600, 90, 0, 0);
+ }
+
+ if (g_fp->getObjectState(sO_LowerHatch_23) == g_fp->getObjectEnumState(sO_LowerHatch_23, sO_Opened)) {
+ g_vars->scene23_giraffeTop->show1(-1, -1, -1, 0);
+ g_vars->scene23_giraffeTop->changeStatics2(ST_GRFU_UP);
+
+ if (g_fp->getObjectState(sO_LowerPipe_21) == g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
+ g_vars->scene23_giraffeTop->changeStatics2(ST_GRFU_KISS);
+ g_vars->scene23_giraffee->hide();
+ } else {
+ if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)
+ && (g_vars->scene23_giraffee->_flags & 4))
+ g_vars->scene23_giraffeTop->setOXY(614, 362);
+ else
+ g_vars->scene23_giraffeTop->setOXY(618, 350);
+
+ if (sceneHandler23_testCalendar())
+ g_vars->scene23_calend1->_statics = g_vars->scene23_calend1->getStaticsById(ST_CND_5);
+ }
+
+ sc->getStaticANIObject1ById(sc, ANI_LUK23_D, -1)->changeStatics2(ST_LUK23_OPEN);
+
+ if (g_fp->getObjectState(sO_Lever_23) == g_fp->getObjectEnumState(sO_Lever_23, sO_Taken))
+ sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
+
+ sc->getStaticANIObject1ById(ANI_HANDLE23, -1)->hide();
+ } else {
+ g_vars->scene23_giraffeTop->hide();
+
+ sc->getStaticANIObject1ById(ANI_LUK23_D, -1)->changeStatics2(ST_LUK23_WHANDLE2);
+
+ sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
+ }
+
+ StaticANIObject_hide();
+
+ g_fp->_currentScene = oldsc;
+}
+
+} // End of namespace Fullpipe
Commit: 2f82ff1eee40561c134f2035daf941fd78fcdb16
https://github.com/scummvm/scummvm/commit/2f82ff1eee40561c134f2035daf941fd78fcdb16
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:31-08:00
Commit Message:
FULLPIPE: Plug scene23 in
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/module.mk
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
engines/fullpipe/scenes/scene23.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index d75aa3d..b7ffcb8 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -776,6 +776,30 @@ namespace Fullpipe {
#define ST_GRFM_NORM 1983
#define ST_MSH_SIT 1756
+// Scene 23
+#define ANI_CALENDWHEEL 1702
+#define ANI_GIRAFFE_TOP 1645
+#define ANI_GIRAFFEE 1672
+#define ANI_HANDLE23 1978
+#define ANI_INV_LEVERHANDLE 1777
+#define ANI_LUK23_D 1813
+#define ANI_LUK23_U 1817
+#define PIC_SC23_BOXCLOSED 1728
+#define PIC_SC23_BOXOPEN 1723
+#define PIC_SC23_BTN1 1729
+#define PIC_SC23_BTN2 1730
+#define PIC_SC23_BTN3 1731
+#define PIC_SC23_BTN4 1732
+#define ST_CND_5 1713
+#define ST_GRFG_BALD 1675
+#define ST_GRFG_EMPTY 1674
+#define ST_GRFU_KISS 1681
+#define ST_GRFU_UP 1648
+#define ST_LUK23_OPEN 1816
+#define ST_LUK23_WHANDLE2 1977
+#define ST_LUK23U_CLOSED 1819
+#define ST_LUK23U_OPEN 1820
+
// Scene 24
#define ANI_DROP_24 3505
#define ANI_INV_HAMMER 884
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 6562e9a..5d426ee 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -43,6 +43,7 @@ MODULE_OBJS = \
scenes/scene20.o \
scenes/scene21.o \
scenes/scene22.o \
+ scenes/scene23.o \
scenes/scene24.o \
scenes/scene30.o \
scenes/scene31.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 34a8de6..ba6f887 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -264,6 +264,20 @@ Vars::Vars() {
scene22_craneIsOut = true;
scene22_numBagFalls = 1;
+ scene23_var01 = 0;
+ scene23_var02 = 0;
+ scene23_var03 = 0;
+ scene23_var04 = 0;
+ scene23_calend0 = 0;
+ scene23_calend1 = 0;
+ scene23_calend2 = 0;
+ scene23_calend3 = 0;
+ scene23_var05 = 0;
+ scene23_var06 = 0;
+ scene23_var07 = 0;
+ scene23_giraffeTop = 0;
+ scene23_giraffee = 0;
+
scene24_jetIsOn = false;
scene24_flowIsLow = false;
scene24_waterIsOn = false;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 7852d96..e2c5696 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -373,6 +373,20 @@ public:
bool scene22_craneIsOut;
int scene22_numBagFalls;
+ int scene23_var01;
+ int scene23_var02;
+ int scene23_var03;
+ int scene23_var04;
+ StaticANIObject *scene23_calend0;
+ StaticANIObject *scene23_calend1;
+ StaticANIObject *scene23_calend2;
+ StaticANIObject *scene23_calend3;
+ int scene23_var05;
+ int scene23_var06;
+ int scene23_var07;
+ StaticANIObject *scene23_giraffeTop;
+ StaticANIObject *scene23_giraffee;
+
bool scene24_jetIsOn;
bool scene24_flowIsLow;
bool scene24_waterIsOn;
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
index 8898d5f9..5facd76 100644
--- a/engines/fullpipe/scenes/scene23.cpp
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -32,11 +32,17 @@
#include "fullpipe/interaction.h"
#include "fullpipe/behavior.h"
-
+#include "fullpipe/floaters.h"
namespace Fullpipe {
-void __thiscall scene23_initScene(Scene *sc) {
+bool sceneHandler23_testCalendar() {
+ warning("STUB: sceneHandler23_testCalendar()");
+
+ return false;
+}
+
+void scene23_initScene(Scene *sc) {
g_vars->scene23_var01 = 200;
g_vars->scene23_var02 = 200;
g_vars->scene23_var03 = 300;
@@ -51,7 +57,7 @@ void __thiscall scene23_initScene(Scene *sc) {
g_vars->scene23_giraffeTop = sc->getStaticANIObject1ById(ANI_GIRAFFE_TOP, -1);
g_vars->scene23_giraffee = sc->getStaticANIObject1ById(ANI_GIRAFFEE, -1);
- g_fp->_floaters->init(getGameLoaderGameVar()->getSubVarByName("SC_23"));
+ g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_23"));
Scene *oldsc = g_fp->_currentScene;
g_fp->_currentScene = sc;
@@ -111,7 +117,7 @@ void __thiscall scene23_initScene(Scene *sc) {
g_vars->scene23_calend1->_statics = g_vars->scene23_calend1->getStaticsById(ST_CND_5);
}
- sc->getStaticANIObject1ById(sc, ANI_LUK23_D, -1)->changeStatics2(ST_LUK23_OPEN);
+ sc->getStaticANIObject1ById(ANI_LUK23_D, -1)->changeStatics2(ST_LUK23_OPEN);
if (g_fp->getObjectState(sO_Lever_23) == g_fp->getObjectEnumState(sO_Lever_23, sO_Taken))
sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
@@ -125,8 +131,6 @@ void __thiscall scene23_initScene(Scene *sc) {
sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
}
- StaticANIObject_hide();
-
g_fp->_currentScene = oldsc;
}
Commit: 7cb50d7066ebebde5f9682f384cedd87462f6ccf
https://github.com/scummvm/scummvm/commit/7cb50d7066ebebde5f9682f384cedd87462f6ccf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:31-08:00
Commit Message:
FULLPIPE: Implement scene23_updateCursor()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene23.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b7ffcb8..7d74a1a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -790,6 +790,7 @@ namespace Fullpipe {
#define PIC_SC23_BTN2 1730
#define PIC_SC23_BTN3 1731
#define PIC_SC23_BTN4 1732
+#define PIC_SC23_LADDERU 3411
#define ST_CND_5 1713
#define ST_GRFG_BALD 1675
#define ST_GRFG_EMPTY 1674
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
index 5facd76..6d7d074 100644
--- a/engines/fullpipe/scenes/scene23.cpp
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -134,4 +134,22 @@ void scene23_initScene(Scene *sc) {
g_fp->_currentScene = oldsc;
}
+int scene23_updateCursor() {
+ g_fp->updateCursorCommon();
+
+ if (g_fp->_objectIdAtCursor == PIC_SC23_LADDERU) {
+ if (g_vars->scene23_var05)
+ return g_fp->_cursorId;
+
+ g_fp->_cursorId = getGameLoaderInventory()->getSelectedItemId() ? PIC_CSR_GOU : PIC_CSR_ITN; // FIXME check
+ }
+
+ if (g_fp->_objectIdAtCursor == PIC_SC23_BTN1 || g_fp->_objectIdAtCursor == PIC_SC23_BTN2
+ || g_fp->_objectIdAtCursor == PIC_SC23_BTN3 || g_fp->_objectIdAtCursor == PIC_SC23_BTN4
+ || g_fp->_objectIdAtCursor == ANI_CALENDWHEEL)
+ g_fp->_cursorId = PIC_CSR_LIFT;
+
+ return g_fp->_cursorId;
+}
+
} // End of namespace Fullpipe
Commit: b0ddd171cb69fde214897c078a1d809570355da8
https://github.com/scummvm/scummvm/commit/b0ddd171cb69fde214897c078a1d809570355da8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:31-08:00
Commit Message:
FULLPIPE: Implement scene23_setGiraffeState()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene23.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 7d74a1a..4a285e7 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -791,6 +791,8 @@ namespace Fullpipe {
#define PIC_SC23_BTN3 1731
#define PIC_SC23_BTN4 1732
#define PIC_SC23_LADDERU 3411
+#define QU_GRFU_TURN_UD 1664
+#define QU_GRFU_TURN_UL 1662
#define ST_CND_5 1713
#define ST_GRFG_BALD 1675
#define ST_GRFG_EMPTY 1674
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
index 6d7d074..f381e1d 100644
--- a/engines/fullpipe/scenes/scene23.cpp
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -134,6 +134,13 @@ void scene23_initScene(Scene *sc) {
g_fp->_currentScene = oldsc;
}
+void scene23_setGiraffeState() {
+ if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UL, 0);
+ g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UD, 0);
+ }
+}
+
int scene23_updateCursor() {
g_fp->updateCursorCommon();
Commit: d8c3c774d1ef88e388037a903620716b42510d03
https://github.com/scummvm/scummvm/commit/d8c3c774d1ef88e388037a903620716b42510d03
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:31-08:00
Commit Message:
FULLPIPE: Implement sceneHandler23()
Changed paths:
engines/fullpipe/constants.h
engines/fullpipe/scenes/scene22.cpp
engines/fullpipe/scenes/scene23.cpp
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 4a285e7..8d2941e 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -784,12 +784,24 @@ namespace Fullpipe {
#define ANI_INV_LEVERHANDLE 1777
#define ANI_LUK23_D 1813
#define ANI_LUK23_U 1817
+#define MSG_SC23_CLICKBTN1 1736
+#define MSG_SC23_CLICKBTN2 1737
+#define MSG_SC23_CLICKBTN3 1738
+#define MSG_SC23_CLICKBTN4 1739
+#define MSG_SC23_FROMSTOOL 3339
+#define MSG_SC23_HIDEGIRAFFEE 4650
+#define MSG_SC23_ONSTOOL 3334
+#define MSG_SC23_SPINWHEEL1 1740
+#define MSG_SC23_SPINWHEEL2 1741
+#define MSG_SC23_SPINWHEEL3 1742
+#define MSG_SC23_SPINWHEEL4 1743
#define PIC_SC23_BOXCLOSED 1728
#define PIC_SC23_BOXOPEN 1723
#define PIC_SC23_BTN1 1729
#define PIC_SC23_BTN2 1730
#define PIC_SC23_BTN3 1731
#define PIC_SC23_BTN4 1732
+#define PIC_SC23_LADDER 1628
#define PIC_SC23_LADDERU 3411
#define QU_GRFU_TURN_UD 1664
#define QU_GRFU_TURN_UL 1662
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 2f8bb26..657fe12 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -104,7 +104,7 @@ void sceneHandler22_showStool() {
chainQueue(QU_SC22_SHOWSTOOL, 0);
}
-void sceneHandler22and23_hideStool() {
+void sceneHandler22_hideStool() {
g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
}
@@ -312,7 +312,7 @@ int sceneHandler22(ExCommand *cmd) {
break;
case MSG_SC22_HIDESTOOL:
- sceneHandler22and23_hideStool();
+ sceneHandler22_hideStool();
break;
case MSG_SC22_FROMSTOOL:
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
index f381e1d..161b38b 100644
--- a/engines/fullpipe/scenes/scene23.cpp
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -159,4 +159,188 @@ int scene23_updateCursor() {
return g_fp->_cursorId;
}
+void sceneHandler23_showStool() {
+ warning("STUB: sceneHandler23_showStool()");
+}
+
+void sceneHandler23_hideStool() {
+ g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
+}
+
+void sceneHandler23_spinWheel1() {
+ warning("STUB: sceneHandler23_spinWheel1()");
+}
+
+void sceneHandler23_spinWheel2() {
+ warning("STUB: sceneHandler23_spinWheel2()");
+}
+
+void sceneHandler23_spinWheel3() {
+ warning("STUB: sceneHandler23_spinWheel3()");
+}
+
+void sceneHandler23_spinWheel4() {
+ warning("STUB: sceneHandler23_spinWheel4()");
+}
+
+void sceneHandler23_pushButton(ExCommand *cmd) {
+ warning("STUB: sceneHandler23_pushButton(cmd)");
+}
+
+void sceneHandler23_sendClick(StaticANIObject *ani) {
+ warning("STUB: sceneHandler23_sendClick(ani)");
+}
+
+void sceneHandler23_checkReachingTop() {
+ warning("STUB: sceneHandler23_checkReachingTop()");
+}
+
+void sceneHandler23_exitCalendar() {
+ warning("STUB: sceneHandler23_exitCalendar()");
+}
+
+void sceneHandler23_lowerFromCalendar(ExCommand *cmd) {
+ warning("STUB: sceneHandler23_lowerFromCalendar(cmd)");
+}
+
+void sceneHandler23_fromStool(ExCommand *cmd) {
+ warning("STUB: sceneHandler23_fromStool(cmd)");
+}
+
+int sceneHandler23(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_SC23_FROMSTOOL:
+ g_vars->scene23_var06 = 0;
+
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
+
+ g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+ break;
+
+ case MSG_SC23_HIDEGIRAFFEE:
+ g_vars->scene23_giraffee->queueMessageQueue(0);
+ g_vars->scene23_giraffee->_flags &= 0xFFFB;
+ break;
+
+ case MSG_SC23_ONSTOOL:
+ g_vars->scene23_var06 = 1;
+
+ getCurrSceneSc2MotionController()->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+
+ g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+ break;
+
+ case MSG_SC22_SHOWSTOOL:
+ sceneHandler23_showStool();
+ break;
+
+ case MSG_SC22_HIDESTOOL:
+ sceneHandler23_hideStool();
+ break;
+
+ case MSG_SC23_SPINWHEEL1:
+ sceneHandler23_spinWheel1();
+ break;
+
+ case MSG_SC23_SPINWHEEL2:
+ sceneHandler23_spinWheel2();
+ break;
+
+ case MSG_SC23_SPINWHEEL3:
+ sceneHandler23_spinWheel3();
+ break;
+
+ case MSG_SC23_SPINWHEEL4:
+ sceneHandler23_spinWheel4();
+ break;
+
+ case MSG_SC23_CLICKBTN1:
+ case MSG_SC23_CLICKBTN2:
+ case MSG_SC23_CLICKBTN3:
+ case MSG_SC23_CLICKBTN4:
+ sceneHandler23_pushButton(cmd);
+ break;
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x < g_fp->_sceneRect.left + g_vars->scene23_var01)
+ g_fp->_currentScene->_x = x - g_vars->scene23_var03 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - g_vars->scene23_var01)
+ g_fp->_currentScene->_x = x + g_vars->scene23_var03 - g_fp->_sceneRect.right;
+ }
+
+ g_fp->_floaters->update();
+ g_fp->_behaviorManager->updateBehaviors();
+
+ g_fp->startSceneTrack();
+
+ break;
+
+ case 29:
+ {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ int picId;
+
+ if (ani && ani->_id == ANI_CALENDWHEEL) {
+ sceneHandler23_sendClick(ani);
+ cmd->_messageKind = 0;
+ }
+
+ sceneHandler23_checkReachingTop();
+
+ if (g_vars->scene23_var05) {
+ picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+ if (picId == PIC_SC23_LADDER) {
+ sceneHandler23_exitCalendar();
+
+ cmd->_messageKind = 0;
+ break;
+ }
+
+ if (cmd->_sceneClickY > 450) {
+ sceneHandler23_lowerFromCalendar(cmd);
+
+ cmd->_messageKind = 0;
+ break;
+ }
+ break;
+ }
+
+ if (!g_vars->scene23_var06) {
+ picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+ if (picId == PIC_SC23_LADDERU && !g_vars->scene23_var05) {
+ sceneHandler23_pushButton(cmd);
+
+ cmd->_messageKind = 0;
+ break;
+ }
+ break;
+ }
+
+ if (ani && ani->_id == ANI_HANDLE23) {
+ handleObjectInteraction(g_fp->_aniMan, ani, cmd->_keyCode);
+ cmd->_messageKind = 0;
+ } else {
+ sceneHandler23_fromStool(cmd);
+
+ cmd->_messageKind = 0;
+ }
+
+ break;
+ }
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe
Commit: d75c4d7f447bc87ff0fcebc7c4abaa4e4f281f22
https://github.com/scummvm/scummvm/commit/d75c4d7f447bc87ff0fcebc7c4abaa4e4f281f22
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-04T14:53:31-08:00
Commit Message:
FULLPIPE: Enable scene23
Changed paths:
engines/fullpipe/scenes.cpp
engines/fullpipe/scenes.h
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index ba6f887..d11a923 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -708,7 +708,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene22_updateCursor;
break;
-#if 0
case SC_23:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_23");
scene->preloadMovements(sceneVar);
@@ -717,10 +716,9 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
scene->initObjectCursors("SC_23");
setSceneMusicParameters(sceneVar);
insertMessageHandler(sceneHandler23, 2, 2);
- scene23_sub_423B00();
+ scene23_setGiraffeState();
_updateCursorCallback = scene23_updateCursor;
break;
-#endif
case SC_24:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_24");
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e2c5696..b272608 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -113,6 +113,11 @@ void scene22_setBagState();
int sceneHandler22(ExCommand *cmd);
int scene22_updateCursor();
+void scene23_initScene(Scene *sc);
+void scene23_setGiraffeState();
+int sceneHandler23(ExCommand *cmd);
+int scene23_updateCursor();
+
void scene24_initScene(Scene *sc);
void scene24_setPoolState();
int sceneHandler24(ExCommand *cmd);
More information about the Scummvm-git-logs
mailing list