diff options
author | Eugene Sandulenko | 2013-12-14 17:38:14 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2013-12-14 17:39:10 +0200 |
commit | 84bf5238cd69ee6cf2fee11431d7c48b8aba906a (patch) | |
tree | 63cf7b615b104c1d71da3f4daef5780bdaab7897 /engines | |
parent | ec16611f69b9075cbe83f4126a062eb12c2656a4 (diff) | |
download | scummvm-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.h | 22 | ||||
-rw-r--r-- | engines/fullpipe/fullpipe.h | 1 | ||||
-rw-r--r-- | engines/fullpipe/module.mk | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 9 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 10 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene05.cpp | 191 | ||||
-rw-r--r-- | engines/fullpipe/sound.cpp | 3 |
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 |