diff options
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/constants.h | 6 | ||||
-rw-r--r-- | engines/fullpipe/objectnames.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 4 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene16.cpp | 68 |
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() { |