aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-01 15:27:30 +0200
committerEugene Sandulenko2014-01-01 15:27:30 +0200
commit5c9f46b88d368743d35ee266d633f51cb0110c3b (patch)
tree3ad983730d7bee6e28ff5238d11314705041ccfe /engines/fullpipe/scenes
parentdb98d92325b3b7b526d5bd3c5fe1fa3a2f01b084 (diff)
downloadscummvm-rg350-5c9f46b88d368743d35ee266d633f51cb0110c3b.tar.gz
scummvm-rg350-5c9f46b88d368743d35ee266d633f51cb0110c3b.tar.bz2
scummvm-rg350-5c9f46b88d368743d35ee266d633f51cb0110c3b.zip
FULLPIPE: Implement sceneHandler16_drink()
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r--engines/fullpipe/scenes/scene16.cpp56
1 files changed, 53 insertions, 3 deletions
diff --git a/engines/fullpipe/scenes/scene16.cpp b/engines/fullpipe/scenes/scene16.cpp
index fd764c2cfb..1ba4920082 100644
--- a/engines/fullpipe/scenes/scene16.cpp
+++ b/engines/fullpipe/scenes/scene16.cpp
@@ -245,8 +245,58 @@ void sceneHandler16_startLaugh() {
g_vars->scene16_var09 = 1;
}
-void sceneHandler16_sub02() {
- warning("STUB: sceneHandler16_sub02()");
+void sceneHandler16_drink() {
+ if (g_vars->scene16_mug->_flags & 4) {
+ if (!g_vars->scene16_jettie->_movement) {
+ if (!g_vars->scene16_var06 || !g_vars->scene16_var06->_movement || g_vars->scene16_var06->_movement->_id != MV_BOY_DRINK) {
+ if (!g_vars->scene16_var07 || !g_vars->scene16_var07->_movement || g_vars->scene16_var07->_movement->_id != MV_GRL_DRINK) {
+ if (g_vars->scene16_mug->_statics->_staticsId == ST_MUG_FULL) {
+ MessageQueue *mq;
+ ExCommand *ex;
+
+ if (g_vars->scene16_var06) {
+ g_fp->_aniMan->_flags |= 0x180;
+
+ g_vars->scene16_var06->changeStatics2(ST_BOY_STAND);
+ g_vars->scene16_var06->queueMessageQueue(0);
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYKICK), 0, 1);
+
+ mq->replaceKeyCode(-1, g_vars->scene16_var06->_okeyCode);
+
+ ex = new ExCommand(ANI_MAN, 34, 384, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags |= 3u;
+ ex->_field_14 = 384;
+ ex->_messageNum = 0;
+
+ mq->insertExCommandAt(2, ex);
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+ } else {
+ g_fp->_aniMan->_flags |= 1;
+
+ mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_MANDRINK), 0, 1);
+
+ ex = new ExCommand(ANI_MAN, 34, 256, 0, 0, 0, 1, 0, 0, 0);
+ ex->_excFlags |= 3u;
+ ex->_field_14 = 256;
+ ex->_messageNum = 0;
+
+ mq->addExCommandToEnd(ex);
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+
+ g_fp->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1)->changeStatics2(ST_GRL_STAND);
+ }
+
+ g_fp->_currentScene->getStaticANIObject1ById(ANI_WIRE16, -1)->show1(-1, -1, -1, 0);
+ } else {
+ chainObjQueue(g_fp->_aniMan, QU_SC16_TAKEMUG, 1);
+ }
+ }
+ }
+ }
+ }
}
void sceneHandler16_mugClick() {
@@ -262,7 +312,7 @@ void sceneHandler16_mugClick() {
postExCommand(g_fp->_aniMan->_id, 2, 310, 449, 0, -1);
}
} else {
- sceneHandler16_sub02();
+ sceneHandler16_drink();
}
}