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/fullpipe/scenes | |
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/fullpipe/scenes')
-rw-r--r-- | engines/fullpipe/scenes/scene05.cpp | 191 |
1 files changed, 191 insertions, 0 deletions
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 |