From d82218748a3cb5d4c01baf8bbded68a797abd8fa Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 Dec 2013 23:59:43 +0200 Subject: FULLPIPE: Implement sceneHandler08_airMoves() --- engines/fullpipe/constants.h | 4 ++++ engines/fullpipe/scenes/scene08.cpp | 32 +++++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe') diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 115b867efd..b7ba75e042 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -209,8 +209,11 @@ namespace Fullpipe { #define MV_MAN6_TAKEBALL 2691 #define MV_MAN6_THROWBALL 2692 #define MV_MAN8_BADLUCK 783 +#define MV_MAN8_DRYGDOWN 770 +#define MV_MAN8_DRYGUP 768 #define MV_MAN8_HANDSDOWN 772 #define MV_MAN8_HANDSUP 777 +#define MV_MAN8_JUMP 775 #define MV_MAN8_JUMPOFF 2969 #define MV_MAN8_SITDOWN 2968 #define MV_MANHDL_HANDLEDOWN 630 @@ -461,6 +464,7 @@ namespace Fullpipe { #define ST_MAN8_FLYDOWN 771 #define ST_MAN8_FLYUP 769 #define ST_MAN8_HANDSUP 773 +#define ST_MAN8_STAND 774 #define ST_MOM_SITS 659 #define ST_MOM_STANDS 658 #define ST_NBL_NORM 1076 diff --git a/engines/fullpipe/scenes/scene08.cpp b/engines/fullpipe/scenes/scene08.cpp index 181ac58392..7c28e9dc64 100644 --- a/engines/fullpipe/scenes/scene08.cpp +++ b/engines/fullpipe/scenes/scene08.cpp @@ -180,7 +180,33 @@ void sceneHandler08_startArcade() { } void sceneHandler08_airMoves() { - warning("STUB: sceneHandler08_airMoves()"); + if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) { + int x = g_fp->_aniMan->_ox; + int y = g_fp->_aniMan->_oy; + Common::Point point; + + if (703 - g_fp->_aniMan->getSomeXY(point)->y - y < 150) { + if (g_fp->_aniMan->_statics) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) { + y -= 25; + + g_fp->_aniMan->setOXY(x, y); + } + } + + g_fp->_aniMan->changeStatics2(ST_MAN8_STAND); + g_fp->_aniMan->setOXY(380, y); + g_fp->_aniMan->startAnim(MV_MAN8_JUMP, 0, -1); + + } else if (g_fp->_aniMan->_statics) { + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP) { + g_fp->_aniMan->startAnim(MV_MAN8_DRYGUP, 0, -1); + + } else if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) { + g_fp->_aniMan->startAnim(MV_MAN8_DRYGDOWN, 0, -1); + } + } + } } void sceneHandler08_finishArcade() { @@ -281,8 +307,8 @@ void sceneHandler08_calcFlight() { if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_var07 && g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) { sceneHandler08_badLuck(); } else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_var07 || !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) { - if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 - || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) + if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660 + || (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0) || abs(g_vars->scene08_var08) > 2) { if (g_vars->scene08_var08 >= 0 && !g_fp->_aniMan->_movement) { if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) -- cgit v1.2.3