aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-02 13:59:11 +0200
committerEugene Sandulenko2014-01-02 13:59:11 +0200
commit64b001e8697bcc87d9bdbed6acddabc05277b747 (patch)
tree9b7f01230dc1074384030c3bbb95611a5ef9d419 /engines
parent39b83756b8ecb380c01add00c137ef4765605191 (diff)
downloadscummvm-rg350-64b001e8697bcc87d9bdbed6acddabc05277b747.tar.gz
scummvm-rg350-64b001e8697bcc87d9bdbed6acddabc05277b747.tar.bz2
scummvm-rg350-64b001e8697bcc87d9bdbed6acddabc05277b747.zip
FULLPIPE: Implement sceneHandler30()
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes/scene30.cpp64
2 files changed, 65 insertions, 0 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 09fe970d02..127c380955 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -749,6 +749,7 @@ namespace Fullpipe {
// Scene 30
#define ANI_LEG 2322
+#define MSG_SC30_UPDATEPATH 2358
#define PIC_SC30_LTRUBA 2354
#define QU_SC30_ENTERLIFT 2823
#define QU_SC30_EXITLIFT 2824
diff --git a/engines/fullpipe/scenes/scene30.cpp b/engines/fullpipe/scenes/scene30.cpp
index 51f6866460..13e9477f68 100644
--- a/engines/fullpipe/scenes/scene30.cpp
+++ b/engines/fullpipe/scenes/scene30.cpp
@@ -90,4 +90,68 @@ int scene30_updateCursor() {
return g_fp->_cursorId;
}
+int sceneHandler30(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch(cmd->_messageNum) {
+ case MSG_LIFT_CLOSEDOOR:
+ g_fp->lift_closedoorSeq();
+ break;
+
+ case MSG_LIFT_EXITLIFT:
+ g_fp->lift_exitSeq(cmd);
+ break;
+
+ case MSG_LIFT_STARTEXITQUEUE:
+ g_fp->lift_startExitQueue();
+ break;
+
+ case MSG_LIFT_CLICKBUTTON:
+ g_fp->lift_animation3();
+ break;
+
+ case MSG_SC30_UPDATEPATH:
+ scene30_enablePass(g_fp->_currentScene);
+ break;
+
+ case 64:
+ g_fp->lift_sub05(cmd);
+ break;
+
+ case MSG_LIFT_GO:
+ g_fp->lift_goAnimation();
+ break;
+
+ case 29:
+ {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+
+ if (ani && ani->_id == ANI_LIFTBUTTON) {
+ g_fp->lift_sub1(ani);
+
+ cmd->_messageKind = 0;
+ }
+ break;
+ }
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x < g_fp->_sceneRect.left + g_vars->scene30_var01)
+ g_fp->_currentScene->_x = x - g_vars->scene30_var03 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - g_vars->scene30_var01)
+ g_fp->_currentScene->_x = x + g_vars->scene30_var03 - g_fp->_sceneRect.right;
+ }
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ break;
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe