aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
authorEugene Sandulenko2013-12-22 23:59:43 +0200
committerEugene Sandulenko2013-12-23 00:39:26 +0200
commitd82218748a3cb5d4c01baf8bbded68a797abd8fa (patch)
treed093810681120a4e372b6637e961eceb75705e9d /engines/fullpipe
parente7ac135919ceac08db89d004d106bfc6917028d2 (diff)
downloadscummvm-rg350-d82218748a3cb5d4c01baf8bbded68a797abd8fa.tar.gz
scummvm-rg350-d82218748a3cb5d4c01baf8bbded68a797abd8fa.tar.bz2
scummvm-rg350-d82218748a3cb5d4c01baf8bbded68a797abd8fa.zip
FULLPIPE: Implement sceneHandler08_airMoves()
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h4
-rw-r--r--engines/fullpipe/scenes/scene08.cpp32
2 files changed, 33 insertions, 3 deletions
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)