aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-06 01:16:42 +0200
committerEugene Sandulenko2014-01-06 01:16:42 +0200
commit073241dea78dc82e00064308dc8cdda2d02c1f32 (patch)
tree121f2ea74790f7e4ea5fce4e6f685531eccb9e9b /engines
parent3b5e4afa40cfbe7981beb59dcb3f08309c8c7687 (diff)
downloadscummvm-rg350-073241dea78dc82e00064308dc8cdda2d02c1f32.tar.gz
scummvm-rg350-073241dea78dc82e00064308dc8cdda2d02c1f32.tar.bz2
scummvm-rg350-073241dea78dc82e00064308dc8cdda2d02c1f32.zip
FULLPIPE: Implement sceneHandler26_animateVents()
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h10
-rw-r--r--engines/fullpipe/scenes/scene26.cpp58
2 files changed, 65 insertions, 3 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 2dab3f46f1..e42479d0ec 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -948,6 +948,16 @@ namespace Fullpipe {
#define QU_SC26_AUTOCLOSE1 1949
#define QU_SC26_AUTOCLOSE2 1950
#define QU_SC26_AUTOCLOSE3 1951
+#define QU_SC26_CLOSE1 1936
+#define QU_SC26_CLOSE2 1938
+#define QU_SC26_CLOSE3 1940
+#define QU_SC26_CLOSE4 1942
+#define QU_SC26_CLOSE5 1944
+#define QU_SC26_OPEN1 1935
+#define QU_SC26_OPEN2 1937
+#define QU_SC26_OPEN3 1939
+#define QU_SC26_OPEN4 1941
+#define QU_SC26_OPEN5 1943
#define SND_26_003 4079
#define SND_26_018 5340
#define SND_26_019 5341
diff --git a/engines/fullpipe/scenes/scene26.cpp b/engines/fullpipe/scenes/scene26.cpp
index 3ddd6386a1..8a0a39e5af 100644
--- a/engines/fullpipe/scenes/scene26.cpp
+++ b/engines/fullpipe/scenes/scene26.cpp
@@ -196,8 +196,60 @@ void sceneHandler26_hideVent() {
g_vars->scene26_var05->hide();
}
-void sceneHandler26_sub01(StaticANIObject *ani) {
- warning("STUB: sceneHandler26_sub01()");
+void sceneHandler26_animateVents(StaticANIObject *ani) {
+ int qId = 0;
+
+ switch (ani->_okeyCode) {
+ case 0:
+ if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Closed))
+ qId = QU_SC26_OPEN1;
+ else
+ qId = QU_SC26_CLOSE1;
+
+ break;
+
+ case 1:
+ if (g_fp->getObjectState(sO_Valve2_26) == g_fp->getObjectEnumState(sO_Valve2_26, sO_Closed))
+ qId = QU_SC26_OPEN2;
+ else
+ qId = QU_SC26_CLOSE2;
+
+ break;
+
+ case 2:
+ if (g_fp->getObjectState(sO_Valve3_26) == g_fp->getObjectEnumState(sO_Valve3_26, sO_Closed))
+ qId = QU_SC26_OPEN3;
+ else
+ qId = QU_SC26_CLOSE3;
+
+ break;
+
+ case 3:
+ if (g_fp->getObjectState(sO_Valve4_26) == g_fp->getObjectEnumState(sO_Valve4_26, sO_Closed))
+ qId = QU_SC26_OPEN4;
+ else
+ qId = QU_SC26_CLOSE4;
+
+ break;
+
+ case 4:
+ if (g_fp->getObjectState(sO_Valve5_26) == g_fp->getObjectEnumState(sO_Valve5_26, sO_Closed))
+ qId = QU_SC26_OPEN5;
+ else
+ qId = QU_SC26_CLOSE5;
+
+ break;
+
+ default:
+ return;
+ }
+
+ if (qId) {
+ MessageQueue *mq = g_fp->_currentScene->getMessageQueueById(qId);
+
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+ }
}
void sceneHandler26_clickVent(StaticANIObject *ani, ExCommand *cmd) {
@@ -222,7 +274,7 @@ void sceneHandler26_clickVent(StaticANIObject *ani, ExCommand *cmd) {
postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1);
}
} else {
- sceneHandler26_sub01(ani);
+ sceneHandler26_animateVents(ani);
}
}
}