diff options
author | Eugene Sandulenko | 2014-01-01 15:08:58 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2014-01-01 15:08:58 +0200 |
commit | db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084 (patch) | |
tree | 2c0f79458980018c534aed22df439ce4e3bc0f59 | |
parent | b2933f9c018a7366df21405df3161cf3c2148a87 (diff) | |
download | scummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.tar.gz scummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.tar.bz2 scummvm-rg350-db98d92325b3b7b526d5bd3c5fe1fa3a2f01b084.zip |
FULLPIPE: Implement sceneHandler16_putOnWheel()
-rw-r--r-- | engines/fullpipe/constants.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene16.cpp | 40 |
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; } |