diff options
Diffstat (limited to 'engines/fullpipe/scenes/scene11.cpp')
-rw-r--r-- | engines/fullpipe/scenes/scene11.cpp | 196 |
1 files changed, 91 insertions, 105 deletions
diff --git a/engines/fullpipe/scenes/scene11.cpp b/engines/fullpipe/scenes/scene11.cpp index 6866dcf821..8c3de9e11e 100644 --- a/engines/fullpipe/scenes/scene11.cpp +++ b/engines/fullpipe/scenes/scene11.cpp @@ -114,7 +114,7 @@ void scene11_initScene(Scene *sc) { g_vars->scene11_swingOldAngle = 0.0; g_vars->scene11_swingSpeed = 0.0; g_vars->scene11_swingAngleDiff = 0.0; - g_vars->scene11_swingInertia = 1.28; //1.9849218750000000; + g_vars->scene11_swingInertia = 0.01; //1.9849218750000000; g_vars->scene11_swingCounter = 0; g_vars->scene11_swingCounterPrevTurn = 0; g_vars->scene11_swingDirection = 0; @@ -232,6 +232,8 @@ int sceneHandler11_updateScreenCallback() { } void sceneHandler11_manToSwing() { + debugC(1, kDebugSceneLogic, "sceneHandler11_manToSwing()"); + g_vars->scene11_arcadeIsOn = true; getCurrSceneSc2MotionController()->deactivate(); @@ -240,7 +242,7 @@ void sceneHandler11_manToSwing() { g_fp->_aniMan2->hide(); g_vars->scene11_swingCounter = 0; - g_vars->scene11_swingInertia = 1.28; //1.9849218; + g_vars->scene11_swingInertia = 0.01; //1.9849218; g_vars->scene11_dudeOnSwing->_flags &= 0xFFFB; g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1); @@ -334,11 +336,14 @@ void sceneHandler11_jumpFromSwing() { } void sceneHandler11_swing0() { + debugC(1, kDebugSceneLogic, "sceneHandler11_swing0()"); + + int phase = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex; g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY); g_vars->scene11_dudeOnSwing->_movement = 0; g_vars->scene11_dudeOnSwing->show1(690, 215, MV_MAN11_SWING_0, 0); g_vars->scene11_dudeOnSwing->startAnim(MV_MAN11_SWING_0, 0, -1); - g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex); + g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(phase); g_vars->scene11_swingDirection = 0; g_vars->scene11_swingMaxAngle = 45; @@ -346,11 +351,14 @@ void sceneHandler11_swing0() { } void sceneHandler11_swing1() { + debugC(1, kDebugSceneLogic, "sceneHandler11_swing1()"); + + int phase = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex; g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY); g_vars->scene11_dudeOnSwing->_movement = 0; g_vars->scene11_dudeOnSwing->show1(690, 215, MV_MAN11_SWING_1, 0); g_vars->scene11_dudeOnSwing->startAnim(MV_MAN11_SWING_1, 0, -1); - g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex); + g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(phase); g_vars->scene11_swingDirection = 1; g_vars->scene11_swingMaxAngle = 42; @@ -358,11 +366,14 @@ void sceneHandler11_swing1() { } void sceneHandler11_swing2() { + debugC(1, kDebugSceneLogic, "sceneHandler11_swing2()"); + + int phase = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex; g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY); g_vars->scene11_dudeOnSwing->_movement = 0; g_vars->scene11_dudeOnSwing->show1(690, 215, MV_MAN11_SWING_2, 0); g_vars->scene11_dudeOnSwing->startAnim(MV_MAN11_SWING_2, 0, -1); - g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex); + g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(phase); g_vars->scene11_swingDirection = 2; g_vars->scene11_swingMaxAngle = 48; @@ -370,6 +381,7 @@ void sceneHandler11_swing2() { } void sceneHandler11_emptySwing() { + int phase = g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex; if (g_vars->scene11_swingDirection) sceneHandler11_swing0(); @@ -379,7 +391,7 @@ void sceneHandler11_emptySwing() { g_vars->scene11_dudeOnSwing->show1(-1, -1, -1, 0); g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_EMPTY); g_vars->scene11_dudeOnSwing->startAnim(MV_KCH_MOVE2, 0, -1); - g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex); + g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(phase); g_vars->scene11_swingInertia = 0.03; //1.9881250; } @@ -531,7 +543,7 @@ void sceneHandler11_setSwingDirection() { else if (g_vars->scene11_swingDirection == 1) g_vars->scene11_swingDirectionPrevTurn = 2; else - g_vars->scene11_swingDirectionPrevTurn = (g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex <= 45) + 1; + g_vars->scene11_swingDirectionPrevTurn = (g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex <= 45 ? 1 : 0) + 1; } void sceneHandler11_swingieSit() { @@ -629,123 +641,95 @@ int sceneHandler11(ExCommand *cmd) { case 33: { int res = 0; - int x, y; - - if (!g_fp->_aniMan2) - goto LABEL_27; - x = g_fp->_aniMan2->_ox; - y = g_fp->_aniMan2->_oy; + if (g_fp->_aniMan2) { + int x, y; + x = g_fp->_aniMan2->_ox; + y = g_fp->_aniMan2->_oy; - g_vars->scene11_dudeX = x; - g_vars->scene11_dudeY = y; + g_vars->scene11_dudeX = x; + g_vars->scene11_dudeY = y; - if (g_vars->scene11_scrollIsEnabled) { - if (x > g_fp->_sceneRect.right - 200) - g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300; - goto LABEL_26; - } + if (g_vars->scene11_scrollIsEnabled) { + if (x > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 200; + } else if (g_vars->scene11_scrollIsMaximized) { + g_fp->_currentScene->_x = g_fp->_sceneWidth - x; - if (g_vars->scene11_scrollIsMaximized) { - g_fp->_currentScene->_x = g_fp->_sceneWidth - x; + if (g_vars->scene11_dudeX < 910) + g_vars->scene11_scrollIsMaximized = false; + } else { + if (x < g_fp->_sceneRect.left + 200) + g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300; + else if (x > g_fp->_sceneRect.right - 200) + g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300; - if (g_vars->scene11_dudeX < 910) - g_vars->scene11_scrollIsMaximized = false; + if (y < g_fp->_sceneRect.top + 200) + g_fp->_currentScene->_y = y - g_fp->_sceneRect.top - 300; + if (y > g_fp->_sceneRect.bottom - 300) + g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300; - LABEL_26: + if (x >= 940) + g_vars->scene11_scrollIsMaximized = true; + } res = 1; - LABEL_27: - if (g_vars->scene11_swingieStands) { - if (g_fp->_sceneRect.left >= 534 && g_vars->scene11_swingieScreenEdge < 534) - sceneHandler11_swingieSit(); + } - g_vars->scene11_swingieScreenEdge = g_fp->_sceneRect.left; - } + if (g_vars->scene11_swingieStands) { + if (g_fp->_sceneRect.left >= 534 && g_vars->scene11_swingieScreenEdge < 534) + sceneHandler11_swingieSit(); - if (!g_vars->scene11_arcadeIsOn) - goto LABEL_50; + g_vars->scene11_swingieScreenEdge = g_fp->_sceneRect.left; + } - if (g_vars->scene11_swingCounterPrevTurn <= 0 || g_vars->scene11_swingCounter - g_vars->scene11_swingCounterPrevTurn <= 72) { - } else { + if (g_vars->scene11_arcadeIsOn) { + if (g_vars->scene11_swingCounterPrevTurn > 0 && g_vars->scene11_swingCounter - g_vars->scene11_swingCounterPrevTurn > 72) { sceneHandler11_swing0(); g_vars->scene11_swingDirectionPrevTurn = 0; g_vars->scene11_swingCounterPrevTurn = 0; } + } - if (!g_vars->scene11_arcadeIsOn) - goto LABEL_50; - - if (g_vars->scene11_swingDirection == g_vars->scene11_swingDirectionPrevTurn || g_vars->scene11_swingCounterPrevTurn <= 0 || g_vars->scene11_swingCounter - g_vars->scene11_swingCounterPrevTurn <= 2) { - LABEL_49: - if (g_vars->scene11_arcadeIsOn) { - g_fp->_behaviorManager->updateBehaviors(); - g_fp->startSceneTrack(); - return res; - } - LABEL_50: - if (g_vars->scene11_swingIsSwinging - || (0.0 == g_vars->scene11_swingSpeed - && g_vars->scene11_dudeOnSwing->_movement != 0 - && g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex == 45 - && (g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_STATIC), !g_vars->scene11_arcadeIsOn) - && g_vars->scene11_swingIsSwinging)) { - if (!g_vars->scene11_swingie->_movement) { - if ((g_vars->scene11_boots->_flags & 4) && g_vars->scene11_boots->_statics->_staticsId == ST_BTS11_2) { - sceneHandler11_swingieJumpDown(); - - g_fp->_behaviorManager->updateBehaviors(); - g_fp->startSceneTrack(); - return res; - } - g_vars->scene11_swingie->startAnim(MV_SWR_SWING, 0, -1); - } + if (g_vars->scene11_arcadeIsOn) { + if (g_vars->scene11_swingDirection != g_vars->scene11_swingDirectionPrevTurn + && g_vars->scene11_swingCounterPrevTurn > 0 && g_vars->scene11_swingCounter - g_vars->scene11_swingCounterPrevTurn > 2) { + + if (g_vars->scene11_swingDirectionPrevTurn == 1) { + if (g_vars->scene11_swingDirection == 0) + sceneHandler11_swing1(); + else + sceneHandler11_swing0(); + } else if (g_vars->scene11_swingDirectionPrevTurn == 2) { + if (g_vars->scene11_swingDirection == 0) + sceneHandler11_swing2(); + else + sceneHandler11_swing0(); } - g_fp->_behaviorManager->updateBehaviors(); - g_fp->startSceneTrack(); - return res; - } - if (g_vars->scene11_swingDirectionPrevTurn == 1) { - if (!g_vars->scene11_swingDirection) - sceneHandler11_swing1(); - else - sceneHandler11_swing0(); - } else if (g_vars->scene11_swingDirectionPrevTurn == 2) { - if (!g_vars->scene11_swingDirection) - sceneHandler11_swing2(); - else - sceneHandler11_swing0(); + g_vars->scene11_swingCounterPrevTurn = g_vars->scene11_swingCounter; } + } - g_vars->scene11_swingCounterPrevTurn = g_vars->scene11_swingCounter; - goto LABEL_49; + if (!g_vars->scene11_arcadeIsOn && !g_vars->scene11_swingIsSwinging) { + if (g_vars->scene11_swingSpeed == 0.0 + && g_vars->scene11_dudeOnSwing->_movement && g_vars->scene11_dudeOnSwing->_movement->_currDynamicPhaseIndex == 45) { + g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_STATIC); + } } - if (x >= g_fp->_sceneRect.left + 200) { - if (x <= g_fp->_sceneRect.right - 200) { - LABEL_18: - if (y < g_fp->_sceneRect.top + 200) { - g_fp->_currentScene->_y = y - g_fp->_sceneRect.top - 300; - y = g_vars->scene11_dudeY; - x = g_vars->scene11_dudeX; - } - if (y > g_fp->_sceneRect.bottom - 300) { - g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300; - x = g_vars->scene11_dudeX; - } - if (x >= 940) - g_vars->scene11_scrollIsMaximized = true; - goto LABEL_26; + + if (!g_vars->scene11_arcadeIsOn && g_vars->scene11_swingIsSwinging) { + if (!g_vars->scene11_swingie->_movement) { + if ((g_vars->scene11_boots->_flags & 4) && g_vars->scene11_boots->_statics->_staticsId == ST_BTS11_2) + sceneHandler11_swingieJumpDown(); + else + g_vars->scene11_swingie->startAnim(MV_SWR_SWING, 0, -1); } - g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300; - } else { - g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300; } - y = g_vars->scene11_dudeY; - x = g_vars->scene11_dudeX; - goto LABEL_18; - } - break; + g_fp->_behaviorManager->updateBehaviors(); + g_fp->startSceneTrack(); + return res; + } case 29: if (g_vars->scene11_swingIsSwinging) { @@ -753,14 +737,16 @@ int sceneHandler11(ExCommand *cmd) { && cmd->_param == ANI_INV_BOOT) sceneHandler11_putBoot(); } else { - if (g_vars->scene11_arcadeIsOn) { - sceneHandler11_setSwingDirection(); + if (!g_vars->scene11_arcadeIsOn) + goto LABEL_69; - g_vars->scene11_swingCounterPrevTurn = g_vars->scene11_swingCounter; - } + sceneHandler11_setSwingDirection(); + + g_vars->scene11_swingCounterPrevTurn = g_vars->scene11_swingCounter; } if (!g_vars->scene11_arcadeIsOn) { + LABEL_69: StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY); if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) { |