aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2013-12-14 17:38:14 +0200
committerEugene Sandulenko2013-12-14 17:39:10 +0200
commit84bf5238cd69ee6cf2fee11431d7c48b8aba906a (patch)
tree63cf7b615b104c1d71da3f4daef5780bdaab7897 /engines
parentec16611f69b9075cbe83f4126a062eb12c2656a4 (diff)
downloadscummvm-rg350-84bf5238cd69ee6cf2fee11431d7c48b8aba906a.tar.gz
scummvm-rg350-84bf5238cd69ee6cf2fee11431d7c48b8aba906a.tar.bz2
scummvm-rg350-84bf5238cd69ee6cf2fee11431d7c48b8aba906a.zip
FULLPIPE: Started scene05 code
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h22
-rw-r--r--engines/fullpipe/fullpipe.h1
-rw-r--r--engines/fullpipe/module.mk1
-rw-r--r--engines/fullpipe/scenes.cpp9
-rw-r--r--engines/fullpipe/scenes.h10
-rw-r--r--engines/fullpipe/scenes/scene05.cpp191
-rw-r--r--engines/fullpipe/sound.cpp3
7 files changed, 236 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b2ebea6701..db9b6f685a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -26,6 +26,7 @@
namespace Fullpipe {
#define ANI_BIGBALL 4923
+#define ANI_BIGLUK 909
#define ANI_BOOT_1 4231
#define ANI_BUTTON 598
#define ANI_CLOCK 588
@@ -33,6 +34,7 @@ namespace Fullpipe {
#define ANI_DADAYASHIK 306
#define ANI_EGGEATER 334
#define ANI_HAND 601
+#define ANI_HANDLE 622
#define ANI_IN1MAN 5110
#define ANI_INV_COIN 875
#define ANI_INV_EGGAPL 1564
@@ -45,6 +47,7 @@ namespace Fullpipe {
#define ANI_LIFTBUTTON 2751
#define ANI_MAMASHA_4 660
#define ANI_MAN 322
+#define ANI_OTMOROZ 419
#define ANI_PLANK 501
#define ANI_SC2_BOX 1020
#define ANI_SC4_BOOT 1035
@@ -96,6 +99,15 @@ namespace Fullpipe {
#define MSG_SC4_KOZAWFALL 2858
#define MSG_SC4_MANFROMBOTTLE 2854
#define MSG_SC4_MANTOBOTTLE 2852
+#define MSG_SC5_BGRSOUNDOFF 5315
+#define MSG_SC5_BGRSOUNDON 5314
+#define MSG_SC5_HANDLEDOWN 916
+#define MSG_SC5_HANDLEUP 915
+#define MSG_SC5_HIDEHANDLE 917
+#define MSG_SC5_MAKEMANFLIGHT 1136
+#define MSG_SC5_MAKEOTMFEEDBACK 1169
+#define MSG_SC5_SHOWHANDLE 918
+#define MSG_SC5_TESTLUK 914
#define MSG_GOTOLADDER 618
#define MSG_SHAKEBOTTLE 584
#define MSG_SHOOTKOZAW 557
@@ -140,6 +152,8 @@ namespace Fullpipe {
#define MV_MAN_TOLADDER2 2841
#define MV_MAN_TURN_LU 486
#define MV_MAN_TURN_SUD 1089
+#define MV_MANHDL_HANDLEDOWN 630
+#define MV_MANHDL_HANDLEUP 631
#define MV_PNK_WEIGHTLEFT 541
#define MV_PNK_WEIGHTRIGHT 502
#define MV_SC4_COIN_default 1029
@@ -275,14 +289,19 @@ namespace Fullpipe {
#define SND_4_010 3125
#define SND_4_012 3127
#define SND_4_033 4990
+#define SND_5_026 5316
#define SND_CMN_031 3516
#define SND_CMN_070 5199
#define SND_INTR_019 5220
+#define ST_BLK_CLOSED 912
#define ST_CLK_CLOSED 590
#define ST_DYAS_LIES 318
#define ST_EGTR_MID1 2863
#define ST_EGTR_MID2 2869
#define ST_EGTR_SLIM 336
+#define ST_HDL_BROKEN 3342
+#define ST_HDL_DOWN 625
+#define ST_HDL_UP 624
#define ST_HND_EMPTY 603
#define ST_IN1MAN_SLEEP 5112
#define ST_KZW_EMPTY 498
@@ -319,6 +338,9 @@ namespace Fullpipe {
#define ST_MAN_SIT 1164
#define ST_MAN_STANDLADDER 453
#define ST_MAN_UP 449
+#define ST_OTM_BOX_LEFT 429
+#define ST_OTM_GLS_LEFT 421
+#define ST_OTM_VNT_LEFT 434
#define ST_PNK_WEIGHTLEFT 503
#define ST_PNK_WEIGHTRIGHT 504
#define ST_SPR_UP 544
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index eb502cbadf..51b935362e 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -151,6 +151,7 @@ public:
void startSceneTrack();
void stopSoundStream2();
void stopAllSoundStreams();
+ void stopAllSoundInstances(int id);
int _sfxVolume;
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index bd948b7ab4..1da0c33b86 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -28,6 +28,7 @@ MODULE_OBJS = \
scenes/scene02.o \
scenes/scene03.o \
scenes/scene04.o \
+ scenes/scene05.o \
scenes/sceneDbg.o \
scenes/sceneIntro.o
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 95ca7c1554..a36b30a613 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -103,6 +103,13 @@ Vars::Vars() {
scene04_bottleY = 0;
scene04_ladderOffset = 0;
+ scene05_handle = 0;
+ scene05_wacko = 0;
+ scene05_bigHatch = 0;
+ scene05_var01 = 0;
+ scene05_var02 = 0;
+ scene05_var03 = 0;
+
selector = 0;
}
@@ -265,7 +272,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = scene04_updateCursor;
break;
-#if 0
case SC_5:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_5");
scene->preloadMovements(sceneVar);
@@ -277,6 +283,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
_updateCursorCallback = defaultUpdateCursor;
break;
+#if 0
case SC_6:
sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_6");
scene->preloadMovements(sceneVar);
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 2905c27fa3..4645d8bf9c 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -50,6 +50,9 @@ int scene04_updateCursor();
void scene04_initScene(Scene *sc);
int sceneHandler04(ExCommand *cmd);
+void scene05_initScene(Scene *sc);
+int sceneHandler05(ExCommand *cmd);
+
void sceneDbgMenu_initScene(Scene *sc);
int sceneHandlerDbgMenu(ExCommand *cmd);
@@ -131,6 +134,13 @@ public:
StaticANIObject *scene04_lastKozyawka;
int scene04_springDelay;
+ StaticANIObject *scene05_handle;
+ StaticANIObject *scene05_wacko;
+ StaticANIObject *scene05_bigHatch;
+ int scene05_var01;
+ int scene05_var02;
+ int scene05_var03;
+
PictureObject *selector;
};
diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp
new file mode 100644
index 0000000000..3127105a2f
--- /dev/null
+++ b/engines/fullpipe/scenes/scene05.cpp
@@ -0,0 +1,191 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objects.h"
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+#include "fullpipe/statics.h"
+#include "fullpipe/scene.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/messages.h"
+#include "fullpipe/floaters.h"
+#include "fullpipe/behavior.h"
+
+namespace Fullpipe {
+
+void scene05_initScene(Scene *sc) {
+ g_vars->scene05_handle = sc->getStaticANIObject1ById(ANI_HANDLE, -1);
+ g_vars->scene05_wacko = sc->getStaticANIObject1ById(ANI_OTMOROZ, -1);
+ g_vars->scene05_bigHatch = sc->getStaticANIObject1ById(ANI_BIGLUK, -1);
+
+
+ g_vars->scene05_var01 = 0;
+ g_vars->scene05_var02 = 1;
+ g_vars->scene05_var03 = 1000;
+
+ Scene *oldscene = g_fullpipe->_currentScene;
+
+ g_fullpipe->_currentScene = sc;
+
+ if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
+ g_vars->scene05_wacko->changeStatics2(ST_OTM_GLS_LEFT);
+ g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED);
+
+ g_vars->scene05_handle->changeStatics2(ST_HDL_UP);
+ g_vars->scene05_handle->_flags |= 4;
+ } else if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
+ g_vars->scene05_wacko->changeStatics2(ST_OTM_BOX_LEFT);
+ g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED);
+ g_vars->scene05_handle->changeStatics2(ST_HDL_UP);
+ g_vars->scene05_handle->_flags |= 4;
+ } else {
+ g_vars->scene05_wacko->changeStatics2(ST_OTM_VNT_LEFT);
+
+ if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) {
+ g_vars->scene05_handle->changeStatics2(ST_HDL_BROKEN);
+ g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED);
+ }
+ }
+
+ g_fullpipe->_currentScene = oldscene;
+}
+
+void sceneHandler05_makeManFlight() {
+ warning("STUB: sceneHandler05_makeManFlight()");
+}
+
+void sceneHandler05_makeOtmFeedback() {
+ warning("STUB: sceneHandler05_makeOtmFeedback()");
+}
+
+void sceneHandler05_showHandle() {
+ warning("STUB: sceneHandler05_showHandle()");
+}
+
+void sceneHandler05_handleDown() {
+ warning("STUB: sceneHandler05_handleDown()");
+}
+
+void sceneHandler05_hideHandle() {
+ warning("STUB: sceneHandler05_hideHandle()");
+}
+
+void sceneHandler05_handleUp() {
+ warning("STUB: sceneHandler05_handleUp()");
+}
+
+void sceneHandler05_testHatch(ExCommand *ex) {
+ warning("STUB: sceneHandler05_testHatch()");
+}
+
+
+int sceneHandler05(ExCommand *ex) {
+ if (ex->_messageKind != 17)
+ return 0;
+
+ switch (ex->_messageNum) {
+ case MSG_SC5_BGRSOUNDOFF:
+ g_fullpipe->stopAllSoundInstances(SND_5_026);
+ break;
+
+ case MSG_SC5_BGRSOUNDON:
+ g_fullpipe->playSound(SND_5_026, 1);
+ break;
+
+ case MSG_SC5_MAKEMANFLIGHT:
+ sceneHandler05_makeManFlight();
+ break;
+
+ case MSG_SC5_MAKEOTMFEEDBACK:
+ if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
+ && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
+ sceneHandler05_makeOtmFeedback();
+ g_vars->scene05_var01 = 0;
+ }
+ break;
+
+ case MSG_SC5_SHOWHANDLE:
+ sceneHandler05_showHandle();
+ break;
+
+ case MSG_SC5_HANDLEDOWN:
+ g_vars->scene05_handle->changeStatics2(ST_HDL_DOWN);
+ sceneHandler05_handleDown();
+ break;
+
+ case MSG_SC5_HIDEHANDLE:
+ sceneHandler05_hideHandle();
+ break;
+
+ case MSG_SC5_HANDLEUP:
+ g_vars->scene05_handle->changeStatics2(ST_HDL_UP);
+ sceneHandler05_handleUp();
+ break;
+
+ case MSG_SC5_TESTLUK:
+ sceneHandler05_testHatch(ex);
+ break;
+
+ case 33:
+ {
+ int res = 0;
+ if (g_fullpipe->_aniMan2) {
+ if (g_fullpipe->_aniMan2->_ox < g_fullpipe->_sceneRect.left + 200)
+ g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.left - 300;
+
+ if (g_fullpipe->_aniMan2->_ox > g_fullpipe->_sceneRect.right - 200)
+ g_fullpipe->_currentScene->_x = g_fullpipe->_aniMan2->_ox - g_fullpipe->_sceneRect.right + 300;
+
+ res = 1;
+ }
+
+ if (g_vars->scene05_var01) {
+ if ((g_fullpipe->_updateTicks - g_vars->scene05_var01) > 62 ) {
+ if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
+ && g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
+ if (g_vars->scene05_var02 % 2)
+ sceneHandler05_makeOtmFeedback();
+
+ g_vars->scene05_var01 = 0;
+
+ ++g_vars->scene05_var02;
+ }
+ }
+ }
+
+ ++g_vars->scene05_var03;
+ g_fullpipe->_floaters->update();
+
+ g_fullpipe->_behaviorManager->updateBehaviors();
+
+ g_fullpipe->startSceneTrack();
+
+ return res;
+ }
+ }
+
+ return 0;
+}
+
+} // End of namespace Fullpipe
diff --git a/engines/fullpipe/sound.cpp b/engines/fullpipe/sound.cpp
index 147d6218c6..36f6030935 100644
--- a/engines/fullpipe/sound.cpp
+++ b/engines/fullpipe/sound.cpp
@@ -143,5 +143,8 @@ void FullpipeEngine::stopAllSoundStreams() {
warning("STUB: FullpipeEngine::stopAllSoundStreams()");
}
+void FullpipeEngine::stopAllSoundInstances(int id) {
+ warning("STUB: FullpipeEngine::stopAllSoundInstances(%d)", id);
+}
} // End of namespace Fullpipe