aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes
diff options
context:
space:
mode:
authorEugene Sandulenko2013-12-15 14:59:16 +0200
committerEugene Sandulenko2013-12-15 14:59:31 +0200
commit8b278d1cdd8f83483afef38b2115f5a25e37c603 (patch)
tree8f7e5dc570a17c5daedd409d1ccb271fe152aee9 /engines/fullpipe/scenes
parent29a8bb5dbcd1754c3821ed81856249ec9fff2082 (diff)
downloadscummvm-rg350-8b278d1cdd8f83483afef38b2115f5a25e37c603.tar.gz
scummvm-rg350-8b278d1cdd8f83483afef38b2115f5a25e37c603.tar.bz2
scummvm-rg350-8b278d1cdd8f83483afef38b2115f5a25e37c603.zip
FULLPIPE: Implement sceneHandler05_makeWackoFeedback()
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r--engines/fullpipe/scenes/scene05.cpp39
1 files changed, 35 insertions, 4 deletions
diff --git a/engines/fullpipe/scenes/scene05.cpp b/engines/fullpipe/scenes/scene05.cpp
index 0e7731163c..4b61f5b187 100644
--- a/engines/fullpipe/scenes/scene05.cpp
+++ b/engines/fullpipe/scenes/scene05.cpp
@@ -86,8 +86,39 @@ void sceneHandler05_makeManFlight() {
mq->chain(0);
}
-void sceneHandler05_makeOtmFeedback() {
- warning("STUB: sceneHandler05_makeOtmFeedback()");
+void sceneHandler05_makeWackoFeedback() {
+ int staticsId1;
+ int staticsId2;
+
+ if (g_fullpipe->getObjectState(sO_WeirdWacko) == g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
+ staticsId1 = ST_OTM_GLS_LEFT;
+ staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_HANDLEUP : MV_OTM_HANDLEDOWN;
+ } else if (g_fullpipe->getObjectState(sO_WeirdWacko) != g_fullpipe->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
+ return;
+ } else {
+ staticsId1 = ST_OTM_BOX_LEFT;
+ staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_BOXHANDLEUP : MV_OTM_BOXHANDLEDOWN;
+ }
+
+ if (g_vars->scene05_wacko->_movement)
+ g_vars->scene05_wacko->changeStatics2(g_vars->scene05_wacko->_movement->_staticsObj2->_staticsId);
+
+ if (staticsId1 == g_vars->scene05_wacko->_statics->_staticsId) {
+ g_vars->scene05_wacko->startAnim(staticsId2, 0, -1);
+ } else {
+ MessageQueue *mq = g_vars->scene05_wacko->changeStatics1(staticsId1);
+
+ if (mq) {
+ mq->setFlags(mq->getFlags() | 1);
+
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC5_MAKEOTMFEEDBACK, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_excFlags |= 2;
+
+ mq->addExCommandToEnd(ex);
+ mq->_isFinished = 0;
+ }
+ }
}
void sceneHandler05_showHandle() {
@@ -131,7 +162,7 @@ int sceneHandler05(ExCommand *ex) {
case MSG_SC5_MAKEOTMFEEDBACK:
if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
&& g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
- sceneHandler05_makeOtmFeedback();
+ sceneHandler05_makeWackoFeedback();
g_vars->scene05_var01 = 0;
}
break;
@@ -176,7 +207,7 @@ int sceneHandler05(ExCommand *ex) {
if (!g_fullpipe->_aniMan->_movement || (g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
&& g_fullpipe->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
if (g_vars->scene05_var02 % 2)
- sceneHandler05_makeOtmFeedback();
+ sceneHandler05_makeWackoFeedback();
g_vars->scene05_var01 = 0;