aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2014-01-09 22:56:04 +0200
committerEugene Sandulenko2014-01-10 00:42:20 +0200
commit3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6 (patch)
tree25b6aaa8834e8f5af528d096308d04419cf6cd0c
parentc02beb4aa56a6a4d22c848265e55d375b60cc59f (diff)
downloadscummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.tar.gz
scummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.tar.bz2
scummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.zip
FULLPIPE: Implement sceneHandler33()
-rw-r--r--engines/fullpipe/constants.h6
-rw-r--r--engines/fullpipe/scenes.h2
-rw-r--r--engines/fullpipe/scenes/scene33.cpp110
3 files changed, 117 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 26cc43abe9..16dbe34a4f 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1106,10 +1106,16 @@ namespace Fullpipe {
#define ST_MAN32_SIT 2277
// Scene 33
+#define ANI_KUBIK 4963
#define ANI_JETTIE_FLOW 2627
#define ANI_MUG_33 2623
#define ANI_VENT_33 2637
+#define MSG_SC33_HANDLEDOWN 2643
+#define MSG_SC33_POUR 2645
+#define MSG_SC33_TESTMUG 5185
#define MSG_SC33_TRYKUBIK 4980
+#define MSG_SC33_UPDATEKUBIK 5346
+#define PIC_SC33_LTRUBA 2618
#define PIC_SC33_ZONES 5298
#define QU_KBK33_START 4983
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index acdcc36b34..45c8ddcfa2 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -465,7 +465,7 @@ public:
int scene33_var04;
StaticANIObject *scene33_mug;
StaticANIObject *scene33_jettie;
- int scene33_var07;
+ StaticANIObject *scene33_var07;
int scene33_var08;
int scene33_var09;
int scene33_ventsX[9];
diff --git a/engines/fullpipe/scenes/scene33.cpp b/engines/fullpipe/scenes/scene33.cpp
index 084ee09d6c..838cb526e8 100644
--- a/engines/fullpipe/scenes/scene33.cpp
+++ b/engines/fullpipe/scenes/scene33.cpp
@@ -79,4 +79,114 @@ int scene33_updateCursor() {
return g_fp->_cursorId;
}
+void sceneHandler33_processJettie(ExCommand *cmd) {
+ warning("STUB: sceneHandler33_processJettie(cmd");
+}
+
+void sceneHandler33_processVents() {
+ warning("STUB: sceneHandler33_processVents(");
+}
+
+void sceneHandler33_switchVent() {
+ warning("STUB: sceneHandler33_switchVent(");
+}
+
+void sceneHandler33_tryCube() {
+ warning("STUB: sceneHandler33_tryCube(");
+}
+
+void sceneHandler33_pour() {
+ warning("STUB: sceneHandler33_pour(");
+}
+
+void sceneHandler33_handleDown() {
+ warning("STUB: sceneHandler33_handleDown(");
+}
+
+void sceneHandler33_clickZones(ExCommand *cmd) {
+ warning("STUB: sceneHandler33_clickZones(cmd)");
+}
+
+int sceneHandler33(ExCommand *cmd) {
+ if (cmd->_messageKind != 17)
+ return 0;
+
+ switch (cmd->_messageNum) {
+ case MSG_SC32_TRUBATOFRONT:
+ g_fp->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 0;
+ break;
+
+ case MSG_SC32_TRUBATOBACK:
+ g_fp->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 20;
+ break;
+
+ case MSG_SC33_TESTMUG:
+ sceneHandler33_processJettie(cmd);
+ break;
+
+ case MSG_SC33_UPDATEKUBIK:
+ g_vars->scene33_var07 = g_fp->_currentScene->getStaticANIObject1ById(ANI_KUBIK, -1);
+
+ if (g_vars->scene33_var07)
+ g_vars->scene33_var08 = g_vars->scene33_var07->_ox;
+
+ break;
+
+ case MSG_SC33_TRYKUBIK:
+ sceneHandler33_tryCube();
+ break;
+
+ case MSG_SC33_POUR:
+ sceneHandler33_pour();
+ break;
+
+ case MSG_SC33_HANDLEDOWN:
+ sceneHandler33_handleDown();
+ break;
+
+ case 29:
+ {
+ StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+
+ if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
+ int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+ PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+ if (pic && pic->_id == PIC_SC33_ZONES) {
+ sceneHandler33_clickZones(cmd);
+ break;
+ }
+
+ if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+ if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
+ g_fp->processArcade(cmd);
+ }
+ }
+ break;
+ }
+
+ case 33:
+ if (g_fp->_aniMan2) {
+ int x = g_fp->_aniMan2->_ox;
+
+ if (x < g_fp->_sceneRect.left + g_vars->scene33_var01)
+ g_fp->_currentScene->_x = x - g_vars->scene33_var03 - g_fp->_sceneRect.left;
+
+ if (x > g_fp->_sceneRect.right - g_vars->scene33_var01)
+ g_fp->_currentScene->_x = x + g_vars->scene33_var03 - g_fp->_sceneRect.right;
+ }
+
+ if (g_vars->scene33_var07)
+ sceneHandler33_processVents();
+
+ g_fp->_behaviorManager->updateBehaviors();
+
+ g_fp->startSceneTrack();
+
+ break;
+ }
+
+ return 0;
+}
+
} // End of namespace Fullpipe