From 073241dea78dc82e00064308dc8cdda2d02c1f32 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 6 Jan 2014 01:16:42 +0200 Subject: FULLPIPE: Implement sceneHandler26_animateVents() --- engines/fullpipe/constants.h | 10 +++++++ engines/fullpipe/scenes/scene26.cpp | 58 +++++++++++++++++++++++++++++++++++-- 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); } } } -- cgit v1.2.3