aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes/scene09.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe/scenes/scene09.cpp')
-rw-r--r--engines/fullpipe/scenes/scene09.cpp20
1 files changed, 19 insertions, 1 deletions
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) {