aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-01 15:08:58 +0200
committerEugene Sandulenko2014-01-01 15:08:58 +0200
commitdb98d92325b3b7b526d5bd3c5fe1fa3a2f01b084 (patch)
tree2c0f79458980018c534aed22df439ce4e3bc0f59
parentb2933f9c018a7366df21405df3161cf3c2148a87 (diff)
downloadscummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.tar.gz
scummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.tar.bz2
scummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.zip
FULLPIPE: Implement sceneHandler16_putOnWheel()
-rw-r--r--engines/fullpipe/constants.h2
-rw-r--r--engines/fullpipe/scenes/scene16.cpp40
2 files changed, 39 insertions, 3 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index fa90756bce..fcd974e249 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -671,6 +671,8 @@ namespace Fullpipe {
#define QU_SC16_BOYOUT 1364
#define QU_SC16_GIRLLAUGH 1375
#define QU_SC16_GIRLOUT 1365
+#define QU_SC16_GOBOY 1347
+#define QU_SC16_GOGIRL 1348
#define QU_SC16_SHOWMUG 1361
#define SND_16_034 3854
#define SND_16_035 3855
diff --git a/engines/fullpipe/scenes/scene16.cpp b/engines/fullpipe/scenes/scene16.cpp
index dafb932a33..fd764c2cfb 100644
--- a/engines/fullpipe/scenes/scene16.cpp
+++ b/engines/fullpipe/scenes/scene16.cpp
@@ -296,8 +296,42 @@ void sceneHandler16_showWire() {
g_vars->scene16_wire->show1(-1, -1, -1, 0);
}
-void sceneHandler16_sub01() {
- warning("STUB: sceneHandler16_sub01()");
+void sceneHandler16_putOnWheel() {
+ StaticANIObject *ani = g_vars->scene16_var06;
+
+ if (!ani)
+ ani = g_vars->scene16_var07;
+
+ if (ani)
+ g_vars->scene16_var05.push_back(ani);
+
+ ani = g_vars->scene16_var05.front();
+
+ g_vars->scene16_var05.pop_front();
+
+ if (ani) {
+ MessageQueue *mq;
+
+ if (ani->_id == ANI_BOY) {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GOBOY), 0, 1);
+
+ mq->replaceKeyCode(-1, ani->_okeyCode);
+ mq->chain(0);
+
+ g_vars->scene16_var06 = ani;
+ g_vars->scene16_var07 = 0;
+ } else if (ani->_id == ANI_GIRL) {
+ if (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging)) {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GOGIRL), 0, 1);
+
+ mq->replaceKeyCode(-1, ani->_okeyCode);
+ mq->chain(0);
+
+ g_vars->scene16_var06 = 0;
+ g_vars->scene16_var07 = ani;
+ }
+ }
+ }
}
void sceneHandler16_girlROTFL() {
@@ -387,7 +421,7 @@ int sceneHandler16(ExCommand *cmd) {
g_vars->scene16_var08++;
if (g_vars->scene16_var08 < 280) {
- sceneHandler16_sub01();
+ sceneHandler16_putOnWheel();
g_vars->scene16_var08 = 0;
}