aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h8
-rw-r--r--engines/fullpipe/fullpipe.h1
-rw-r--r--engines/fullpipe/init.cpp2
-rw-r--r--engines/fullpipe/input.cpp5
-rw-r--r--engines/fullpipe/module.mk1
-rw-r--r--engines/fullpipe/objectnames.h4
-rw-r--r--engines/fullpipe/scenes.cpp15
-rw-r--r--engines/fullpipe/scenes.h16
-rw-r--r--engines/fullpipe/scenes/scene02.cpp2
-rw-r--r--engines/fullpipe/scenes/scene06.cpp88
10 files changed, 138 insertions, 4 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index be47e0d264..7abfd8aa0e 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -25,10 +25,12 @@
namespace Fullpipe {
+#define ANI_BALLDROP 2685
#define ANI_BIGBALL 4923
#define ANI_BIGLUK 909
#define ANI_BOOT_1 4231
#define ANI_BUTTON 598
+#define ANI_BUTTON_6 2988
#define ANI_CLOCK 588
#define ANI_DOMINO_3 2732
#define ANI_DADAYASHIK 306
@@ -42,11 +44,14 @@ namespace Fullpipe {
#define ANI_INV_EGGCOIN 1567
#define ANI_INV_EGGDOM 1561
#define ANI_INV_EGGGLS 1573
+#define ANI_INV_HANDLE 893
#define ANI_INV_MAP 5321
#define ANI_KOZAWKA 495
#define ANI_LIFTBUTTON 2751
+#define ANI_MAMASHA 656
#define ANI_MAMASHA_4 660
#define ANI_MAN 322
+#define ANI_NEWBALL 1073
#define ANI_OTMOROZ 419
#define ANI_PLANK 501
#define ANI_SC2_BOX 1020
@@ -242,6 +247,8 @@ namespace Fullpipe {
#define QU_SC4_MANTOBOTTLE 2850
#define QU_SC5_MANBUMP 1167
#define QU_SC5_MANFLY 1168
+#define QU_SC6_ENTERLIFT 1054
+#define QU_SC6_EXITLIFT 1055
#define SC_1 301
#define SC_10 653
#define SC_11 654
@@ -347,6 +354,7 @@ namespace Fullpipe {
#define ST_MAN_SIT 1164
#define ST_MAN_STANDLADDER 453
#define ST_MAN_UP 449
+#define ST_NBL_NORM 1076
#define ST_OTM_BOX_LEFT 429
#define ST_OTM_GLS_LEFT 421
#define ST_OTM_VNT_LEFT 434
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index 51b935362e..d5001b2449 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -246,6 +246,7 @@ public:
void initArcadeKeys(const char *varname);
void processArcade(ExCommand *ex);
void winArcade();
+ void setArcadeOverlay(int picId);
void getAllInventory();
diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp
index eb109e11ec..0b74648140 100644
--- a/engines/fullpipe/init.cpp
+++ b/engines/fullpipe/init.cpp
@@ -52,7 +52,7 @@ void FullpipeEngine::initObjectStates() {
setObjectState(sO_Fly_12, 0);
setObjectState(sO_ClockAxis, getObjectEnumState(sO_ClockAxis, sO_NotAvailable));
setObjectState(sO_ClockHandle, getObjectEnumState(sO_ClockHandle, sO_In_7));
- setObjectState(sO_BigMumsy, getObjectEnumState(sO_BigMumsy, sO_Sleeping));
+ setObjectState(sO_BigMumsy, getObjectEnumState(sO_BigMumsy, sO_IsSleeping));
setObjectState(sO_CoinSlot_1, getObjectEnumState(sO_CoinSlot_1, sO_Empty));
setObjectState(sO_FriesPit, getObjectEnumState(sO_FriesPit, sO_WithApple));
setObjectState(sO_Jug, getObjectEnumState(sO_Jug, sO_Blocked));
diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp
index e98920c78a..beff95c2e2 100644
--- a/engines/fullpipe/input.cpp
+++ b/engines/fullpipe/input.cpp
@@ -274,4 +274,9 @@ void FullpipeEngine::updateCursorCommon() {
_cursorId = PIC_CSR_DEFAULT;
}
+void FullpipeEngine::setArcadeOverlay(int picId) {
+ warning("STUB: setArcadeOverlay()");
+}
+
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 1da0c33b86..efb3d65786 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -29,6 +29,7 @@ MODULE_OBJS = \
scenes/scene03.o \
scenes/scene04.o \
scenes/scene05.o \
+ scenes/scene06.o \
scenes/sceneDbg.o \
scenes/sceneIntro.o
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index b8696ec672..5e67f09688 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -94,7 +94,7 @@ namespace Fullpipe {
#define sO_HalfFull "\xc7\xe0\xef\xee\xeb\xed\xe5\xed \xed\xe0\xef\xee\xeb\xee\xe2\xe8\xed\xf3" // "Заполнен наполовину"
#define sO_Full "\xc7\xe0\xef\xee\xeb\xed\xe5\xed \xf6\xe5\xeb\xe8\xea\xee\xec" // "Заполнен целиком"
#define sO_MirroredTo "\xc7\xe5\xf0\xea\xe0\xeb\xfc\xed\xe0\xff \xea" // "Зеркальная к"
-#define sO_Playing "\xc8\xe3\xf0\xe0\xe5\xf2" // "Играет"
+#define sO_IsPlaying "\xc8\xe3\xf0\xe0\xe5\xf2" // "Играет"
#define sO_Tub "\xca\xe0\xe4\xea\xe0" // "Кадка"
#define sO_Cactus "\xca\xe0\xea\xf2\xf3\xf1" // "Кактус"
#define sO_SwingingWithBoot "\xca\xe0\xf2\xe0\xe5\xf2\xf1\xff \xf1 \xe1\xee\xf2\xe8\xed\xea\xee\xec" // "Катается с ботинком"
@@ -203,7 +203,7 @@ namespace Fullpipe {
#define sO_WithMop "\xd1\xee \xf8\xe2\xe0\xe1\xf0\xee\xe9" // "Со шваброй"
#define sO_WithHose "\xd1\xee \xf8\xeb\xe0\xed\xe3\xee\xec" // "Со шлангом"
#define sO_WithBrush "\xd1\xee \xf9\xe5\xf2\xea\xee\xe9" // "Со щеткой"
-#define sO_Sleeping "\xd1\xef\xe8\xf2" // "Спит"
+#define sO_IsSleeping "\xd1\xef\xe8\xf2" // "Спит"
#define sO_OnRight "\xd1\xef\xf0\xe0\xe2\xe0" // "Справа"
#define sO_StandsInBoots "\xd1\xf2\xee\xe8\xf2 \xe2 \xe1\xee\xf2\xe8\xed\xea\xe0\xf5" // "Стоит в ботинках"
#define sO_StandsInCorner "\xd1\xf2\xee\xe8\xf2 \xe2 \xf3\xe3\xeb\xf3" // "Стоит в углу"
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 41bec4df93..a4b1a0782e 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -110,6 +110,21 @@ Vars::Vars() {
scene05_handleFlipper = 0;
scene05_floatersTicker = 0;
+ scene06_mumsy = 0;
+ scene06_var06 = 0;
+ scene06_invHandle = 0;
+ scene06_liftButton = 0;
+ scene06_ballDrop = 0;
+ scene06_var07 = 0;
+ scene06_var08 = 0;
+ scene06_var09 = 0;
+ scene06_var10 = 0;
+ scene06_var11 = 0;
+ scene06_var12 = 0;
+ scene06_var13 = 0;
+ scene06_var14 = 0;
+ scene06_var15 = 1;
+
selector = 0;
}
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 4c7302d9b7..7c1e338444 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -141,6 +141,22 @@ public:
int scene05_handleFlipper;
int scene05_floatersTicker;
+ StaticANIObject *scene06_mumsy;
+ int scene06_var06;
+ StaticANIObject *scene06_invHandle;
+ StaticANIObject *scene06_liftButton;
+ StaticANIObject *scene06_ballDrop;
+ int scene06_var07;
+ int scene06_var08;
+ int scene06_var09;
+ int scene06_var10;
+ int scene06_var11;
+ Common::Array<StaticANIObject *> scene06_balls;
+ int scene06_var12;
+ int scene06_var13;
+ int scene06_var14;
+ int scene06_var15;
+
PictureObject *selector;
};
diff --git a/engines/fullpipe/scenes/scene02.cpp b/engines/fullpipe/scenes/scene02.cpp
index dd01af4c4b..3ca28cb0d1 100644
--- a/engines/fullpipe/scenes/scene02.cpp
+++ b/engines/fullpipe/scenes/scene02.cpp
@@ -39,7 +39,7 @@ namespace Fullpipe {
void scene02_initScene(Scene *sc) {
g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1);
- if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_Sleeping)) {
+ if (g_fullpipe->getObjectState(sO_GuvTheDrawer) == g_fullpipe->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) {
Scene *s = g_fullpipe->_currentScene;
g_fullpipe->_currentScene = sc;
diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp
new file mode 100644
index 0000000000..f341216906
--- /dev/null
+++ b/engines/fullpipe/scenes/scene06.cpp
@@ -0,0 +1,88 @@
+/* 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/gfx.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+#include "fullpipe/scene.h"
+
+namespace Fullpipe {
+
+void sceneHandler06_setExits(Scene *sc) {
+ warning("STUB: sceneHandler06_setExits()");
+}
+
+void scene06_initScene(Scene *sc) {
+ g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1);
+ g_vars->scene06_var06 = 0;
+ g_vars->scene06_invHandle = sc->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
+ g_vars->scene06_liftButton = sc->getStaticANIObject1ById(ANI_BUTTON_6, -1);
+ g_vars->scene06_ballDrop = sc->getStaticANIObject1ById(ANI_BALLDROP, -1);
+ g_vars->scene06_var07 = 0;
+ g_vars->scene06_var08 = 0;
+ g_vars->scene06_var09 = 0;
+ g_vars->scene06_var10 = 0;
+ g_vars->scene06_var11 = 0;
+ g_vars->scene06_balls.clear();
+ g_vars->scene06_var12 = 0;
+ g_vars->scene06_var13 = 0;
+ g_vars->scene06_var14 = 0;
+ g_vars->scene06_var15 = 1;
+
+ StaticANIObject *ball = sc->getStaticANIObject1ById(ANI_NEWBALL, -1);
+
+ ball->hide();
+ ball->_statics = ball->getStaticsById(ST_NBL_NORM);
+ g_vars->scene06_balls.push_back(ball);
+
+ for (int i = 0; i < 3; i++) {
+ StaticANIObject *ball2 = new StaticANIObject(ball);
+
+ ball2->hide();
+ ball2->_statics = ball2->getStaticsById(ST_NBL_NORM);
+
+ sc->addStaticANIObject(ball2, 1);
+
+ g_vars->scene06_balls.push_back(ball2);
+ }
+
+ if (g_fullpipe->getObjectState(sO_BigMumsy) == g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsPlaying))
+ g_fullpipe->setObjectState(sO_BigMumsy, g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping));
+
+ if (g_fullpipe->getObjectState(sO_BigMumsy) != g_fullpipe->getObjectEnumState(sO_BigMumsy, sO_IsSleeping))
+ g_vars->scene06_mumsy->hide();
+
+ g_fullpipe->lift_setButton(sO_Level3, ST_LBN_3N);
+ g_fullpipe->lift_sub5(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT);
+ g_fullpipe->initArcadeKeys("SC_6");
+
+ sceneHandler06_setExits(sc);
+
+ g_fullpipe->setArcadeOverlay(PIC_CSR_ARCADE2);
+}
+
+} // End of namespace Fullpipe