aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/scenes/scene04.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 28a9b6fc00..f36dc48e8a 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -36,8 +36,27 @@
namespace Fullpipe {
-void scene04_callback(int *param) {
- warning("STUB: scene04_callback");
+static const int scene04_speakerPhases[] = {
+ 0, 1, 2, 3, -1, -1,
+ 0, 2, 3, -1, -1, -1,
+ 0, 2, -1, -1, -1, -1
+};
+
+void scene04_speakerCallback(int *phase) {
+ if (g_vars->scene04_soundPlaying) {
+ if (g_vars->scene04_var17 >= 0) {
+ *phase = scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16];
+
+ g_vars->scene04_var17++;
+
+ if (scene04_speakerPhases[g_vars->scene04_var17 + 6 * g_vars->scene04_var16] < 0) {
+ g_vars->scene04_var17 = 0;
+ g_vars->scene04_var16 = g_fullpipe->_rnd->getRandomNumber(2);
+ }
+ } else {
+ ++g_vars->scene04_var17;
+ }
+ }
}
void scene04_initScene(Scene *sc) {
@@ -166,7 +185,7 @@ void scene04_initScene(Scene *sc) {
g_vars->scene04_mamasha->hide();
g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1);
- g_vars->scene04_speaker->_callback2 = scene04_callback;
+ g_vars->scene04_speaker->_callback2 = scene04_speakerCallback;
g_vars->scene04_speaker->startAnim(MV_SPK4_PLAY, 0, -1);
g_vars->scene04_var16 = 0;