diff options
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/constants.h | 9 | ||||
-rw-r--r-- | engines/fullpipe/module.mk | 1 | ||||
-rw-r--r-- | engines/fullpipe/objectnames.h | 4 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 9 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 9 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene15.cpp | 98 |
6 files changed, 130 insertions, 0 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 63ab988543..aa1eb58875 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -500,6 +500,15 @@ namespace Fullpipe { #define ST_SWR_SITBALD 1153 #define ST_SWR_STAND3 3014 +// Scene 15 +#define ANI_BOOT_15 4779 +#define ANI_GRANDMA_ASS 1265 +#define PIC_SC15_LADDER 3253 +#define QU_SC15_ENTERLIFT 2811 +#define QU_SC15_EXITLIFT 2812 +#define ST_GMS_BOOT 1270 +#define ST_GMS_BOOTLESS2 3316 + } // End of namespace Fullpipe #endif /* FULLPIPE_CONSTANTS_H */ diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk index 230cfe6cb4..15bf9c942d 100644 --- a/engines/fullpipe/module.mk +++ b/engines/fullpipe/module.mk @@ -34,6 +34,7 @@ MODULE_OBJS = \ scenes/scene08.o \ scenes/scene10.o \ scenes/scene11.o \ + scenes/scene15.o \ scenes/sceneDbg.o \ scenes/sceneIntro.o diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h index 07526d0a35..87442d990a 100644 --- a/engines/fullpipe/objectnames.h +++ b/engines/fullpipe/objectnames.h @@ -48,6 +48,10 @@ namespace Fullpipe { #define sO_InSock "\xc2 \xed\xee\xf1\xea\xe5" // "В носке" #define sO_InGlasses "\xc2 \xee\xf7\xea\xe0\xf5" // "В очках" #define sO_In_14 "\xc2_14" // "В_14" +#define sO_In_15 "\xc2_15" // "В_15" +#define sO_In_15_1 "\xc2_15_1" // "В_15_1" +#define sO_In_15_2 "\xc2_15_2" // "В_15_2" +#define sO_In_15_3 "\xc2_15_3" // "В_15_3" #define sO_In_32_Lies "\xc2_32 \xeb\xe5\xe6\xe8\xf2" // "В_32 лежит" #define sO_In_32_Stands "\xc2_32 \xf2\xee\xf0\xf7\xe8\xf2" // "В_32 торчит" #define sO_In_33 "\xc2_33" // "В_33" diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 921cdfd1d1..4a378101e9 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -186,6 +186,15 @@ Vars::Vars() { scene11_var19 = 0; scene11_var20 = 0; + scene15_var01 = 0; + scene15_var02 = 0; + scene15_var03 = 0; + scene15_var04 = 0; + scene15_var05 = 0; + scene15_plusminus = 0; + scene15_ladder = 0; + scene15_boot = 0; + selector = 0; } diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index d492a6afe6..4031b472b1 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -238,6 +238,15 @@ public: int scene11_var19; int scene11_var20; + int scene15_var01; + int scene15_var02; + int scene15_var03; + int scene15_var04; + int scene15_var05; + StaticANIObject *scene15_plusminus; + PictureObject *scene15_ladder; + StaticANIObject *scene15_boot; + PictureObject *selector; }; diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp new file mode 100644 index 0000000000..f580831de9 --- /dev/null +++ b/engines/fullpipe/scenes/scene15.cpp @@ -0,0 +1,98 @@ +/* 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/objectnames.h" +#include "fullpipe/constants.h" + +#include "fullpipe/gameloader.h" +#include "fullpipe/motion.h" +#include "fullpipe/scenes.h" +#include "fullpipe/statics.h" + +#include "fullpipe/interaction.h" +#include "fullpipe/behavior.h" + + +namespace Fullpipe { + +void scene15_initScene(Scene *sc) { + g_vars->scene15_var01 = 200; + g_vars->scene15_var02 = 200; + g_vars->scene15_var03 = 300; + g_vars->scene15_var04 = 300; + g_vars->scene15_var05 = 0; + + StaticANIObject *grandma = sc->getStaticANIObject1ById(ANI_GRANDMA_ASS, -1); + + Scene *oldsc = g_fp->_currentScene; + g_fp->_currentScene = sc; + + int grandmaState = g_fp->getObjectState(sO_Grandma); + + if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(97, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_1)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(86, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_2)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(71, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_3)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(49, 399); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_WithoutBoot)) { + grandma->changeStatics2(ST_GMS_BOOT); + grandma->setOXY(97, 399); + grandma->changeStatics2(ST_GMS_BOOTLESS2); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed)); + } else { + grandma->hide(); + g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsOpened)); + } + + g_vars->scene15_plusminus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1); + + if (g_fp->getObjectState(sO_Gurad_2) == g_fp->getObjectEnumState(sO_Gurad_2, sO_Off)) + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_MINUS); + else + g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_PLUS); + + g_vars->scene15_ladder = sc->getPictureObjectById(PIC_SC15_LADDER, 0); + g_vars->scene15_boot = sc->getStaticANIObject1ById(ANI_BOOT_15, -1); + + if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_Available)) + g_vars->scene15_boot->_flags &= 0xFFFB; + + g_fp->_currentScene = oldsc; + + g_fp->lift_setButton(sO_Level5, ST_LBN_5N); + g_fp->lift_sub5(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT); +} + +} // End of namespace Fullpipe |