FULLPIPE: Implement scene15_init()

This commit is contained in:
Eugene Sandulenko 2013-12-24 22:12:05 +02:00
parent 328a525c02
commit f58cdb98b3
6 changed files with 130 additions and 0 deletions

View File

@ -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 */

View File

@ -34,6 +34,7 @@ MODULE_OBJS = \
scenes/scene08.o \
scenes/scene10.o \
scenes/scene11.o \
scenes/scene15.o \
scenes/sceneDbg.o \
scenes/sceneIntro.o

View File

@ -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"

View File

@ -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;
}

View File

@ -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;
};

View File

@ -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