diff options
author | Eugene Sandulenko | 2013-12-12 15:15:39 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2013-12-12 18:12:10 +0200 |
commit | 9c7731d288c4d5c7308507947e6e95320291a41a (patch) | |
tree | e9d82b6e213621de3068f8b46e776683ed39c6bd /engines/fullpipe/scenes | |
parent | a1dd885f69ed512912a4538e859bd13b67b50437 (diff) | |
download | scummvm-rg350-9c7731d288c4d5c7308507947e6e95320291a41a.tar.gz scummvm-rg350-9c7731d288c4d5c7308507947e6e95320291a41a.tar.bz2 scummvm-rg350-9c7731d288c4d5c7308507947e6e95320291a41a.zip |
FULLPIPE: Implement sceneHandler04_clickLadder()
Diffstat (limited to 'engines/fullpipe/scenes')
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 0c55673089..610b21b04b 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -274,8 +274,55 @@ void sceneHandler04_clickButton() { } } +void sceneHandler04_downLadder(int x, int y) { + warning("STUB: sceneHandler04_downLadder()"); +} + +void sceneHandler04_walkClimbLadder(ExCommand *ex) { + warning("STUB: sceneHandler04_walkClimbLadder()"); +} + void sceneHandler04_clickLadder() { - warning("STUB: sceneHandler04_clickLadder()"); + g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox; + g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy; + + if (g_vars->scene04_needJumping) { + if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) { + g_vars->scene04_var08 = 1; + } else { + int h3 = 3 * g_vars->scene04_ladder->_height; + int half = abs(g_vars->scene04_ladder->_height) / 2; + int start = g_vars->scene04_ladder->_ladderY - g_vars->scene04_ladder->_ladder_field_24; + int min = 2 * h3 + start + half + 1; + int max = h3 + start - half - 1; + + if (g_vars->scene04_sceneClickY > max) + g_vars->scene04_sceneClickY = max; + + if (g_vars->scene04_sceneClickY < min) + g_vars->scene04_sceneClickY = min; + + sceneHandler04_downLadder(g_vars->scene04_sceneClickX, g_vars->scene04_sceneClickY); + + g_vars->scene04_var08 = 0; + } + } else { + if (g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) { + if (abs(1095 - g_vars->scene04_dudePosX) > 1 || abs(434 - g_vars->scene04_dudePosY) > 1) { + MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->method34(g_fullpipe->_aniMan, 1095, 434, 1, ST_MAN_UP); + if (mq) { + ExCommand *ex = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags = 3; + mq->addExCommandToEnd(ex); + + postExCommand(g_fullpipe->_aniMan->_id, 2, 1095, 434, 0, -1); + } + } else { + sceneHandler04_walkClimbLadder(0); + } + } + } } void sceneHandler04_jumpOnLadder() { |