diff options
author | Eugene Sandulenko | 2013-12-29 23:12:26 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2013-12-29 23:12:26 +0200 |
commit | ddb4e0af76faa22e98b2b5f6e9fa643abfb13361 (patch) | |
tree | 3444550b8f997f1042ae15e75e52bab1c11e24fb | |
parent | 92034a36b370de996cf93ebd87a5bb610cbe8888 (diff) | |
download | scummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.tar.gz scummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.tar.bz2 scummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.zip |
FULLPIPE: Implement sceneHandler13()
-rw-r--r-- | engines/fullpipe/constants.h | 13 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes.h | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene13.cpp | 185 |
4 files changed, 200 insertions, 0 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index dcd2ad0e60..c51db8a3a4 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -536,6 +536,19 @@ namespace Fullpipe { #define ANI_HANDLE_R 1196 #define ANI_STOROZH 1172 #define ANI_WHIRLGIG_13 1383 +#define MSG_SC13_CHEW 1220 +#define MSG_SC13_CLOSEBRIDGE 3046 +#define MSG_SC13_CLOSEFAST 1267 +#define MSG_SC13_EATGUM 1219 +#define MSG_SC13_OPENBRIDGE 3064 +#define MSG_SC13_OPENFAST 1266 +#define MSG_SC13_SHOWGUM 1215 +#define MSG_SC13_STARTWHIRLGIG 1388 +#define MSG_SC13_STOPWHIRLGIG 1387 +#define MSG_SC13_TESTCLOSE 3065 +#define MSG_SC13_TESTOPEN 3048 +#define MSG_SC13_UNEATGUM 1218 +#define MSG_SC13_UPDATEBRIDGE 1217 #define MV_WHR13_SPIN 1384 #define SND_13_018 3763 #define SND_13_037 5335 diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 8c15bd3d83..5c2f817465 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -197,6 +197,7 @@ Vars::Vars() { scene13_bridge = 0; scene13_var01 = 0; scene13_var02 = 0; + scene13_var03 = 0; scene15_chantingCountdown = 0; scene15_plusminus = 0; diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h index 70d55dd1e9..a46ea5c0c2 100644 --- a/engines/fullpipe/scenes.h +++ b/engines/fullpipe/scenes.h @@ -265,6 +265,7 @@ public: StaticANIObject *scene13_bridge; int scene13_var01; int scene13_var02; + int scene13_var03; int scene15_chantingCountdown; StaticANIObject *scene15_plusminus; diff --git a/engines/fullpipe/scenes/scene13.cpp b/engines/fullpipe/scenes/scene13.cpp index cb36d389ac..29e635a815 100644 --- a/engines/fullpipe/scenes/scene13.cpp +++ b/engines/fullpipe/scenes/scene13.cpp @@ -80,4 +80,189 @@ void scene13_initScene(Scene *sc) { g_fp->initArcadeKeys("SC_13"); } +void sceneHandler13_openBridge() { + warning("STUB: sceneHandler13_openBridge()"); +} + +void sceneHandler13_testClose() { + warning("STUB: sceneHandler13_testClose()"); +} + +void sceneHandler13_testOpen() { + warning("STUB: sceneHandler13_testOpen()"); +} + +void sceneHandler13_closeBridge() { + warning("STUB: sceneHandler13_closeBridge()"); +} + +void sceneHandler13_closeFast() { + warning("STUB: sceneHandler13_closeFast()"); +} + +void sceneHandler13_stopWhirlgig() { + warning("STUB: sceneHandler13_stopWhirlgig()"); +} + +void sceneHandler13_startWhirlgig() { + warning("STUB: sceneHandler13_startWhirlgig()"); +} + +void sceneHandler13_openFast() { + warning("STUB: sceneHandler13_openFast()"); +} + +void sceneHandler13_uneatGum() { + warning("STUB: sceneHandler13_uneatGum()"); +} + +void sceneHandler13_eatGum() { + warning("STUB: sceneHandler13_eatGum()"); +} + +void sceneHandler13_updateBridge() { + warning("STUB: sceneHandler13_updateBridge()"); +} + +void sceneHandler13_showGum() { + warning("STUB: sceneHandler13_showGum()"); +} + +void sceneHandler13_sub01(bool flag) { + warning("STUB: sceneHandler13_sub01()"); +} + +void sceneHandler13_sub02(bool flag) { + warning("STUB: sceneHandler13_sub02()"); +} + +void sceneHandler13_sub03(bool flag) { + warning("STUB: sceneHandler13_sub03()"); +} + +int sceneHandler13(ExCommand *cmd) { + if (cmd->_messageKind != 17) + return 0; + + switch(cmd->_messageNum) { + case MSG_SC13_OPENBRIDGE: + sceneHandler13_openBridge(); + break; + + case MSG_SC13_TESTCLOSE: + sceneHandler13_testClose(); + break; + + case MSG_SC13_TESTOPEN: + sceneHandler13_testOpen(); + break; + + case MSG_SC13_CLOSEBRIDGE: + sceneHandler13_closeBridge(); + break; + + case MSG_SC13_CLOSEFAST: + sceneHandler13_closeFast(); + break; + + case MSG_SC13_STOPWHIRLGIG: + sceneHandler13_stopWhirlgig(); + break; + + case MSG_SC13_STARTWHIRLGIG: + sceneHandler13_startWhirlgig(); + break; + + case MSG_SC13_OPENFAST: + sceneHandler13_openFast(); + break; + + case MSG_SC13_UNEATGUM: + sceneHandler13_uneatGum(); + break; + + case MSG_SC13_EATGUM: + sceneHandler13_eatGum(); + break; + + case MSG_SC13_CHEW: + g_vars->scene13_guard->_flags &= 0xFF7Fu; + break; + + case MSG_SC13_UPDATEBRIDGE: + sceneHandler13_updateBridge(); + break; + + case MSG_SC13_SHOWGUM: + sceneHandler13_showGum(); + break; + + case 29: + { + StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY); + + 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 || !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: + { + int res = 0; + int x; + + if (g_fp->_aniMan2) { + x = g_fp->_aniMan2->_ox; + g_vars->scene13_var03 = x; + + if (x < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300; + + if (x > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300; + + res = 1; + } else { + x = g_vars->scene13_var03; + } + + if (g_vars->scene13_var02) { + if (x < 1022) { + sceneHandler13_sub01(1); + sceneHandler13_sub02(0); + + g_vars->scene13_var02 = 0; + + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); + + return res; + } + } else if (x > 1022) { + sceneHandler13_sub01(0); + sceneHandler13_sub02(1); + + g_vars->scene13_var02 = 1; + } + + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); + + return res; + } + } + + return 0; +} + } // End of namespace Fullpipe |