diff options
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/constants.h | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene09.cpp | 20 |
2 files changed, 20 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index bae0a2d799..d22e021d00 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -606,6 +606,7 @@ namespace Fullpipe { #define QU_TTA9_GOL 4937 #define SND_9_006 3650 #define SND_9_018 4200 +#define SND_9_019 4201 #define ST_GLT_SIT 926 #define ST_GRT9_GRIT 2722 #define ST_GRT9_NORM 2721 diff --git a/engines/fullpipe/scenes/scene09.cpp b/engines/fullpipe/scenes/scene09.cpp index 6752864962..dc860b1884 100644 --- a/engines/fullpipe/scenes/scene09.cpp +++ b/engines/fullpipe/scenes/scene09.cpp @@ -321,7 +321,25 @@ void sceneHandler09_checkHangerCollide() { } void sceneHandler09_hangerStartCycle() { - warning("STUB: sceneHandler09_hangerStartCycle()"); + StaticANIObject *ani = g_vars->scene09_hangers[g_vars->scene09_var10]->ani; + + if (ani->_movement) { + ani->startAnim(MV_VSN_CYCLE2, 0, -1); + g_vars->scene09_hangers[g_vars->scene09_var10]->field_8 = 0; + g_vars->scene09_hangers[g_vars->scene09_var10]->phase = g_vars->scene09_var11 + (g_fp->_mouseScreenPos.y - g_vars->scene09_var19) / 2; + + if (g_vars->scene09_var12 != -1000 && g_vars->scene09_hangers[g_vars->scene09_var10]->phase != g_vars->scene09_var12) { + ExCommand *ex = new ExCommand(0, 35, SND_9_019, 0, 0, 0, 1, 0, 0, 0); + + ex->_field_14 = 1; + ex->_excFlags |= 2; + ex->postMessage(); + + g_vars->scene09_var12 = -1000; + } + } else { + g_vars->scene09_var10 = -1; + } } int sceneHandler09(ExCommand *cmd) { |