aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes/scene09.cpp20
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) {