aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-07 17:09:57 +0200
committerEugene Sandulenko2014-01-07 17:09:57 +0200
commit929c868c5e1123a2e364e0c473b6a162dd122d80 (patch)
tree0d9b6deedbee81dbf051753bbd461e5cb7d62189 /engines/fullpipe/scenes
parentd821719c47cc8fae2e52f9a673ac5662344794c8 (diff)
downloadscummvm-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.cpp35
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() {