aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2013-08-21 01:31:46 +0300
committerEugene Sandulenko2013-09-06 14:51:17 +0300
commite826d359c9c452664a242cda71939dc9a1640488 (patch)
tree59e4b6a2d8831b321612372badaa179987e22abf
parente08340e64dfde2bd8abcab2281e80d67dc45128d (diff)
downloadscummvm-rg350-e826d359c9c452664a242cda71939dc9a1640488.tar.gz
scummvm-rg350-e826d359c9c452664a242cda71939dc9a1640488.tar.bz2
scummvm-rg350-e826d359c9c452664a242cda71939dc9a1640488.zip
FULLPIPE: Implement StaticANIObject::show1()
-rw-r--r--engines/fullpipe/messages.cpp3
-rw-r--r--engines/fullpipe/statics.cpp47
2 files changed, 47 insertions, 3 deletions
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index 22343af8f8..dcb47faaf7 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -302,7 +302,8 @@ void MessageQueue::update() {
}
void MessageQueue::messageQueueCallback1(int par) {
- warning("STUB: MessageQueue::messageQueueCallback1()");
+ // Autosave
+ debug(3, "STUB: MessageQueue::messageQueueCallback1()");
}
ExCommand *MessageQueue::getExCommandByIndex(uint idx) {
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 3308b05e49..897db56f89 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -774,8 +774,51 @@ void StaticANIObject::hide() {
}
}
-void StaticANIObject::show1(int x, int y, int movementId, int mqId) {
- warning("STUB: StaticANIObject::show1(%d, %d, %d, %d)", x, y, movementId, mqId);
+void StaticANIObject::show1(int x, int y, int movId, int mqId) {
+ debug(0, "StaticANIObject::show1(%d, %d, %d, %d)", x, y, movId, mqId);
+
+ if (_messageQueueId)
+ return;
+
+ if (movId == -1) {
+ _flags |= 4u;
+ if (x != -1 && y != -1)
+ setOXY(x, y);
+
+ return;
+ }
+
+ Movement *mov = getMovementById(movId);
+ if (!mov)
+ return;
+
+ if (x != -1 && y != -1)
+ setOXY(x, y);
+
+ _statics = mov->_staticsObj1;
+
+ Common::Point point;
+
+ mov->_staticsObj1->getSomeXY(point);
+ _statics->_x = x - point.x;
+ _statics->_y = y - point.y;
+
+ _statics->_countdown = _statics->_initialCountdown;
+
+ _flags |= 4;
+ _ox = x;
+ _oy = y;
+ _movement = 0;
+
+ if (mov->_currMovement)
+ _flags |= 8;
+ else if (_flags & 8)
+ _flags ^= 8;
+
+ if (_flags & 1)
+ _flags ^= 1;
+
+ _messageQueueId = mqId;
}
void StaticANIObject::show2(int x, int y, int movementId, int mqId) {