diff options
author | Eugene Sandulenko | 2014-01-07 17:09:57 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2014-01-07 17:09:57 +0200 |
commit | 929c868c5e1123a2e364e0c473b6a162dd122d80 (patch) | |
tree | 0d9b6deedbee81dbf051753bbd461e5cb7d62189 /engines/fullpipe/scenes | |
parent | d821719c47cc8fae2e52f9a673ac5662344794c8 (diff) | |
download | scummvm-rg350-929c868c5e1123a2e364e0c473b6a162dd122d80.tar.gz scummvm-rg350-929c868c5e1123a2e364e0c473b6a162dd122d80.tar.bz2 scummvm-rg350-929c868c5e1123a2e364e0c473b6a162dd122d80.zip |
FULLPIPE: Implement sceneHandler32_spin()
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r-- | engines/fullpipe/scenes/scene32.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp index 4f2b78feff..b73dd99d7c 100644 --- a/engines/fullpipe/scenes/scene32.cpp +++ b/engines/fullpipe/scenes/scene32.cpp @@ -122,7 +122,40 @@ void sceneHandler32_startCactus() { } void sceneHandler32_spin(ExCommand *cmd) { - warning("STUB: sceneHandler32_spin(cmd)"); + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId); + + if (!mq || !mq->getCount() <= 0) + return; + + ExCommand *ex = mq->getExCommandByIndex(0); + ExCommand *newex; + + if ((g_vars->scene32_cactus->_movement && g_vars->scene32_cactus->_movement->_id == MV_CTS_DEFAULT) + || g_vars->scene32_cactus->_statics->_staticsId == ST_CTS_GROWUP) { + for (int i = 0; i < 12; i++) { + newex = ex->createClone(); + newex->_excFlags |= 2; + mq->insertExCommandAt(1, newex); + } + + g_vars->scene32_cactus->changeStatics2(ST_CTS_GROWUP); + + chainQueue(QU_CTS_BACK, 1); + + g_vars->scene32_var10 = 0; + + return; + } + + if (g_vars->scene32_cactus->_statics->_staticsId == ST_CTS_EMPTY && g_vars->scene32_var08 < 0) { + for (int i = 0; i < 2; i++) { + newex = ex->createClone(); + newex->_excFlags |= 2; + mq->insertExCommandAt(1, newex); + } + + chainQueue(QU_KDK_DRIZZLE, 0); + } } void sceneHandler32_startFlagLeft() { |