aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h6
-rw-r--r--engines/fullpipe/objectnames.h2
-rw-r--r--engines/fullpipe/scenes.h4
-rw-r--r--engines/fullpipe/scenes/scene16.cpp68
4 files changed, 76 insertions, 4 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index c83da09334..fa90756bce 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -660,11 +660,17 @@ namespace Fullpipe {
#define MSG_SC16_SHOWMUGFULL 1396
#define MSG_SC16_SHOWWIRE 1350
#define MSG_SC16_STARTLAUGH 1374
+#define MV_BT16_FILL 3286
#define MV_GRL_FALL 3115
#define MV_GRL_LAUGH_POPA 3278
+#define MV_JTI_FLOWBY 1393
+#define MV_JTI_FLOWIN 1394
+#define MV_MAN16_TAKEMUG 1362
#define PIC_SC16_TUMBA 1368
#define QU_BRD16_STARTBEARDED 4948
+#define QU_SC16_BOYOUT 1364
#define QU_SC16_GIRLLAUGH 1375
+#define QU_SC16_GIRLOUT 1365
#define QU_SC16_SHOWMUG 1361
#define SND_16_034 3854
#define SND_16_035 3855
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 3f2f9b1071..871ca5de21 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -222,7 +222,7 @@ namespace Fullpipe {
#define sO_Pedestal_17 "\xd2\xf3\xec\xe1\xe0_17" // "Тумба_17"
#define sO_Pedestal_33 "\xd2\xf3\xec\xe1\xe0_33" // "Тумба_33"
#define sO_NearDudesStairs "\xd3 \xc4\xff\xe4\xe8 \xed\xe0 \xeb\xe5\xf1\xf2\xed\xe8\xf6\xe5" // "У Дяди на лестнице"
-#define sO_NearDude "\xd3 \xc4\xff\xe4\xe8" // "У Дяди"
+#define sO_DudeHas "\xd3 \xc4\xff\xe4\xe8" // "У Дяди"
#define sO_NearPipeWithStool "\xd3 \xf2\xf0\xf3\xe1\xfb \xf1 \xf2\xe0\xe1\xf3\xf0\xe5\xf2\xea\xee\xe9" // "У трубы с табуреткой"
#define sO_NearPipe "\xd3 \xf2\xf0\xf3\xe1\xfb" // "У трубы"
#define sO_Janitors "\xd3\xe1\xee\xf0\xf9\xe8\xea\xe8" // "Уборщики"
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index c80bdc94e4..b28bd9a3cb 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -313,8 +313,8 @@ public:
int scene16_var03;
int scene16_var04;
Common::List<StaticANIObject *> scene16_var05;
- int scene16_var06;
- int scene16_var07;
+ StaticANIObject *scene16_var06;
+ StaticANIObject *scene16_var07;
int scene16_var08;
StaticANIObject *scene16_wire;
StaticANIObject *scene16_mug;
diff --git a/engines/fullpipe/scenes/scene16.cpp b/engines/fullpipe/scenes/scene16.cpp
index de98276900..dafb932a33 100644
--- a/engines/fullpipe/scenes/scene16.cpp
+++ b/engines/fullpipe/scenes/scene16.cpp
@@ -160,7 +160,73 @@ void sceneHandler16_showMugFull() {
}
void sceneHandler16_fillMug() {
- warning("STUB: sceneHandler16_fillMug()");
+ if (g_vars->scene16_mug->_flags & 4) {
+ g_vars->scene16_jettie->_priority = 2;
+ g_vars->scene16_jettie->startAnim(MV_JTI_FLOWIN, 0, -1);
+
+ if (g_fp->_aniMan->_movement) {
+ if (g_fp->_aniMan->_movement->_id == MV_MAN16_TAKEMUG) {
+ g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+
+ g_vars->scene16_mug->show1(-1, -1, -1, 0);
+
+ g_fp->setObjectState(sO_Cup, g_fp->getObjectEnumState(sO_Cup, sO_DudeHas));
+ }
+ }
+ return;
+ }
+
+ MessageQueue *mq;
+
+ if (!(g_vars->scene16_boot->_flags & 4)) {
+ g_vars->scene16_jettie->_priority = 15;
+ g_vars->scene16_jettie->startAnim(MV_JTI_FLOWBY, 0, -1);
+
+ if (g_vars->scene16_var06) {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene16_var06->_okeyCode);
+ if (mq->chain(g_vars->scene16_var06) || !mq)
+ return;
+ } else {
+ if (!g_vars->scene16_var07)
+ return;
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene16_var07->_okeyCode);
+ if (mq->chain(g_vars->scene16_var07) || !mq)
+ return;
+ }
+ delete mq;
+
+ return;
+ }
+
+ g_vars->scene16_jettie->_priority = 15;
+
+ g_vars->scene16_boot->startAnim(MV_BT16_FILL, 0, -1);
+
+ StaticANIObject *ani;
+
+ if (g_vars->scene16_var06) {
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene16_var06->_okeyCode);
+
+ ani = g_vars->scene16_var06;
+ } else {
+ if (!g_vars->scene16_var07)
+ return;
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene16_var07->_okeyCode);
+ ani = g_vars->scene16_var07;
+ }
+
+ if (!mq->chain(ani))
+ delete mq;
}
void sceneHandler16_startLaugh() {