diff options
author | Eugene Sandulenko | 2014-01-09 22:56:04 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2014-01-10 00:42:20 +0200 |
commit | 3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6 (patch) | |
tree | 25b6aaa8834e8f5af528d096308d04419cf6cd0c /engines/fullpipe | |
parent | c02beb4aa56a6a4d22c848265e55d375b60cc59f (diff) | |
download | scummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.tar.gz scummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.tar.bz2 scummvm-rg350-3731aff7bbf6f46f57545aac5b5f1ce324a9f5d6.zip |
FULLPIPE: Implement sceneHandler33()
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/constants.h | 6 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene33.cpp | 110 |
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 |