aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/scenes
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r--engines/fullpipe/scenes/scene08.cpp49
1 files changed, 32 insertions, 17 deletions
diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp
index e636b07df3..763e6f7582 100644
--- a/engines/fullpipe/scenes/scene08.cpp
+++ b/engines/fullpipe/scenes/scene08.cpp
@@ -183,14 +183,6 @@ void sceneHandler08_airMoves() {
warning("STUB: sceneHandler08_airMoves()");
}
-void sceneHandler08_jumpLogic(ExCommand *cmd) {
- warning("STUB: sceneHandler08_jumpLogic(cmd)");
-}
-
-void sceneHandler08_calcFlight() {
- warning("STUB: sceneHandler08_calcFlight()");
-}
-
void sceneHandler08_finishArcade() {
g_vars->scene08_var06 = 0;
@@ -198,6 +190,38 @@ void sceneHandler08_finishArcade() {
getCurrSceneSc2MotionController()->setEnabled();
}
+void sceneHandler08_jumpOff(ExCommand *cmd) {
+ MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+
+ mq->addExCommandToEnd(new ExCommand(cmd));
+ mq->setFlags(mq->getFlags() | 1);
+
+ g_fp->_globalMessageQueueList->addMessageQueue(mq);
+
+ g_fp->_aniMan->startAnim(MV_MAN8_JUMPOFF, mq->_id, -1);
+
+ sceneHandler08_finishArcade();
+}
+
+void sceneHandler08_standUp() {
+ chainQueue(QU_SC8_STANDUP, 1);
+ g_vars->scene08_var03 = 0;
+}
+
+void sceneHandler08_jumpLogic(ExCommand *cmd) {
+ if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC8_LADDERD) {
+ sceneHandler08_jumpOff(cmd);
+
+ cmd->_messageKind = 0;
+ } else {
+ sceneHandler08_standUp();
+ }
+}
+
+void sceneHandler08_calcFlight() {
+ warning("STUB: sceneHandler08_calcFlight()");
+}
+
void sceneHandler08_checkEndArcade() {
if (g_vars->scene08_var02) {
int x = g_fp->_aniMan->_ox;
@@ -247,10 +271,6 @@ void sceneHandler08_calcOffset() {
warning("STUB: sceneHandler08_calcOffset()");
}
-void sceneHandler08_jumpOff() {
- warning("STUB: sceneHandler08_jumpOff()");
-}
-
void sceneHandler08_pushCallback(int *par) {
warning("STUB: sceneHandler08_pushCallback()");
}
@@ -268,11 +288,6 @@ void sceneHandler08_sitDown() {
g_vars->scene08_var03 = 1;
}
-void sceneHandler08_standUp() {
- chainQueue(QU_SC8_STANDUP, 1);
- g_vars->scene08_var03 = 0;
-}
-
int sceneHandler08_updateScreenCallback() {
int res;