diff options
-rw-r--r-- | engines/fullpipe/constants.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene23.cpp | 28 |
2 files changed, 25 insertions, 5 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index a8d3de986a..0d40f2981f 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -815,7 +815,9 @@ namespace Fullpipe { #define PIC_SC23_LADDERU 3411 #define QU_GRFU_TURN_UD 1664 #define QU_GRFU_TURN_UL 1662 +#define QU_SC23_FROMCALENDAR 1734 #define QU_SC23_FROMCALENDAREXIT 1735 +#define QU_SC23_FROMSTOOL 3338 #define QU_SC23_SHOWSTOOL 3335 #define QU_SC23_STARTKISS 1822 #define ST_CND_0 1704 diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp index ed51e2638e..e703588e9d 100644 --- a/engines/fullpipe/scenes/scene23.cpp +++ b/engines/fullpipe/scenes/scene23.cpp @@ -330,18 +330,36 @@ void sceneHandler23_checkReachingTop() { void sceneHandler23_exitCalendar() { if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER - && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100) ) { + && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) { chainQueue(QU_SC23_FROMCALENDAREXIT, 1); g_vars->scene23_var07 = 2; } } -void sceneHandler23_lowerFromCalendar(ExCommand *cmd) { - warning("STUB: sceneHandler23_lowerFromCalendar(cmd)"); +void sceneHandler23_fromCalendar(ExCommand *cmd) { + if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER + && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) { + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMCALENDAR), 0, 0); + + mq->addExCommandToEnd(cmd->createClone()); + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + + g_vars->scene23_var05 = 0; + g_vars->scene23_var07 = 0; + } } void sceneHandler23_fromStool(ExCommand *cmd) { - warning("STUB: sceneHandler23_fromStool(cmd)"); + if (!g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) { + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMSTOOL), 0, 0); + + mq->addExCommandToEnd(cmd->createClone()); + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + + cmd->_messageKind = 0; + } } int sceneHandler23(ExCommand *cmd) { @@ -444,7 +462,7 @@ int sceneHandler23(ExCommand *cmd) { } if (cmd->_sceneClickY > 450) { - sceneHandler23_lowerFromCalendar(cmd); + sceneHandler23_fromCalendar(cmd); cmd->_messageKind = 0; break; |