aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h3
-rw-r--r--engines/fullpipe/scenes/scene11.cpp27
2 files changed, 28 insertions, 2 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index a6dc51dfe5..45bddf0ce2 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -504,7 +504,10 @@ namespace Fullpipe {
#define MV_MAN11_SWING_0 1109
#define PIC_SC11_HINT 5170
#define QU_SC11_MANFALL 3017
+#define QU_SC11_PUTBOOT1 2709
+#define QU_SC11_PUTBOOT2 2710
#define ST_BTS11_2 2707
+#define ST_BTS11_ONE 2706
#define ST_KCH_STATIC 1122
#define ST_MAN11_EMPTY 1110
#define ST_SWR_SIT 1147
diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp
index 02f29e1a4f..d56cf581cf 100644
--- a/engines/fullpipe/scenes/scene11.cpp
+++ b/engines/fullpipe/scenes/scene11.cpp
@@ -212,8 +212,31 @@ void sceneHandler11_manToSwing() {
g_fp->_updateScreenCallback = sceneHandler11_updateScreenCallback;
}
+void sceneHandler11_putABoot() {
+ if (g_vars->scene11_boots->_flags & 4) {
+ if (g_vars->scene11_boots->_statics->_staticsId == ST_BTS11_ONE)
+ chainObjQueue(0, QU_SC11_PUTBOOT2, 1);
+ } else {
+ chainObjQueue(0, QU_SC11_PUTBOOT1, 1);
+ }
+}
+
void sceneHandler11_putBoot() {
- warning("STUB: sceneHandler11_putBoot()");
+ if (abs(353 - g_fp->_aniMan->_ox) > 1 || abs(498 - g_fp->_aniMan->_oy) > 1
+ || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+ MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 353, 498, 1, ST_MAN_RIGHT);
+
+ if (mq) {
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC11_PUTBOOT, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags |= 3;
+
+ mq->addExCommandToEnd(ex);
+
+ postExCommand(g_fp->_aniMan->_id, 2, 353, 498, 0, -1);
+ }
+ } else {
+ sceneHandler11_putABoot();
+ }
}
void sceneHandler11_showSwing() {
@@ -416,7 +439,7 @@ int sceneHandler11(ExCommand *cmd) {
x = g_vars->scene11_var21;
}
if (y > g_fp->_sceneRect.bottom - 300) {
- g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300;
+ //g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300; // FIXME. Causes flicker
x = g_vars->scene11_var21;
}
if (x >= 940)