diff options
-rw-r--r-- | engines/fullpipe/constants.h | 1 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene06.cpp | 53 |
2 files changed, 49 insertions, 5 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index d1e1820c27..1a41538732 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -269,6 +269,7 @@ namespace Fullpipe { #define QU_KOZAW_WALK 505 #define QU_MOM_JUMPBK 671 #define QU_MOM_JUMPFW 670 +#define QU_MOM_PUTBALL 2903 #define QU_MOM_SITDOWN 685 #define QU_MOM_STANDUP 2899 #define QU_MOM_TOLIFT 2902 diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp index 4f76714660..7f49df385e 100644 --- a/engines/fullpipe/scenes/scene06.cpp +++ b/engines/fullpipe/scenes/scene06.cpp @@ -419,7 +419,54 @@ void sceneHandler06_sub05() { } void sceneHandler06_sub09() { - warning("STUB: sceneHandler06_sub09()"); + if (g_vars->scene06_var11) { + g_vars->scene06_var11->hide(); + + g_vars->scene06_balls.push_back(g_vars->scene06_var11); + + g_vars->scene06_var11 = 0; + + g_vars->scene06_var13++; + + if (g_vars->scene06_mumsy->_movement) { + Common::Point point; + + if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPFW) { + if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 5) { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0); + + point.x = -point.x; + point.y = -point.y; + } else { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1); + + g_vars->scene06_mumsyPos++; + } + } else if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPBK) { + if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 4) { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0); + + point.x = -point.x; + point.y = -point.y; + } else { + g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1); + + g_vars->scene06_mumsyPos--; + } + } + + g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS); + g_vars->scene06_mumsy->setOXY(point.x + g_vars->scene06_mumsy->_ox, + point.y + g_vars->scene06_mumsy->_oy); + } else { + g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS); + } + + chainQueue(QU_MOM_PUTBALL, 1); + g_vars->scene06_var16 = 1; + + sceneHandler06_sub10(); + } } void sceneHandler06_sub04(int par) { @@ -437,10 +484,6 @@ void sceneHandler06_sub04(int par) { } } -void sceneHandler06_sub06() { - warning("STUB: sceneHandler06_sub06()"); -} - void scene06_initScene(Scene *sc) { g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1); g_vars->scene06_var06 = 0; |