aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2013-12-29 23:12:26 +0200
committerEugene Sandulenko2013-12-29 23:12:26 +0200
commitddb4e0af76faa22e98b2b5f6e9fa643abfb13361 (patch)
tree3444550b8f997f1042ae15e75e52bab1c11e24fb
parent92034a36b370de996cf93ebd87a5bb610cbe8888 (diff)
downloadscummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.tar.gz
scummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.tar.bz2
scummvm-rg350-ddb4e0af76faa22e98b2b5f6e9fa643abfb13361.zip
FULLPIPE: Implement sceneHandler13()
-rw-r--r--engines/fullpipe/constants.h13
-rw-r--r--engines/fullpipe/scenes.cpp1
-rw-r--r--engines/fullpipe/scenes.h1
-rw-r--r--engines/fullpipe/scenes/scene13.cpp185
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