From a1a4e809f8645f76ede82a78d288f7cf5fc8f12d Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 5 Feb 2014 00:18:11 +0200 Subject: FULLPIPE: Implement sceneHandler27_batFallLogic() --- engines/fullpipe/scenes/scene27.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'engines/fullpipe/scenes/scene27.cpp') diff --git a/engines/fullpipe/scenes/scene27.cpp b/engines/fullpipe/scenes/scene27.cpp index e8c9db0fb7..52dc42f37c 100644 --- a/engines/fullpipe/scenes/scene27.cpp +++ b/engines/fullpipe/scenes/scene27.cpp @@ -332,10 +332,24 @@ void sceneHandler27_sub07() { } } -bool sceneHandler27_batFallLogic(int bat) { - warning("STUB: sceneHandler27_batFallLogic()"); +bool sceneHandler27_batFallLogic(int batn) { + Bat *bat = g_vars->scene27_bats[batn]; - return false; + int y = (bat->currY - 458.0) * 0.4848484848484849 + 734.0; + + if (y >= bat->currX) + return false; + + if (bat->currX - y > 15.0 || bat->ani->_statics->_staticsId == ST_BTA_FALL) { + bat->ani->_priority = 2020; + + g_vars->scene27_var07.remove_at(batn); + g_vars->scene27_var07.push_back(bat); + } else if (!bat->ani->_movement) { + bat->ani->startAnim(MV_BTA_FALL, 0, -1); + } + + return true; } bool sceneHandler27_batCalcDistance(int bat1, int bat2) { -- cgit v1.2.3