From e680039a4ae8c2f79b4ffec1b67ba06d11bec6d6 Mon Sep 17 00:00:00 2001 From: Marek Moeckel Date: Wed, 5 Oct 2005 12:05:30 +0000 Subject: [PATCH] removed all flapping code implemented backflipping (stand still, then duck and jump) removed some obsolete sprites SVN-Revision: 2809 --- data/images/sprites.strf | 47 +-------------- src/game_session.cpp | 14 ----- src/object/player.cpp | 151 ++++++++--------------------------------------- src/object/player.hpp | 21 +------ 4 files changed, 28 insertions(+), 205 deletions(-) diff --git a/data/images/sprites.strf b/data/images/sprites.strf index d43a74272..bf3bc02e0 100644 --- a/data/images/sprites.strf +++ b/data/images/sprites.strf @@ -782,25 +782,7 @@ ;; Bad Guys follow - (sprite (name "spike") - (action - (name "north") - (images "creatures/spike/up.png") - ) - (action - (name "south") - (images "creatures/spike/down.png") - ) - (action - (name "west") - (images "creatures/spike/left.png") - ) - (action - (name "east") - (images "creatures/spike/right.png") - ) - ) - + ;; MrIceBlock (sprite (name "mriceblock") (action @@ -864,33 +846,6 @@ (y-offset -19) (mirror-action "squished-left"))) - (sprite (name "fluffy") - (action - (name "left") - (x-offset 2) - (y-offset 4) - (images "creatures/mr_fluffy/left-0.png" - "creatures/mr_fluffy/left-1.png" - "creatures/mr_fluffy/left-2.png" - "creatures/mr_fluffy/left-1.png")) - - (action - (name "right") - (x-offset 2) - (y-offset 4) - (mirror-action "left")) - (action - (name "squished-left") - (x-offset 1) - (y-offset -19) - (images "creatures/mr_fluffy/squished-left.png")) - - (action - (name "squished-right") - (x-offset 1) - (y-offset -19) - (mirror-action "squished-left"))) - (sprite (name "jumpy") (action (name "left-up") diff --git a/src/game_session.cpp b/src/game_session.cpp index a18a77448..0dc5b06b9 100644 --- a/src/game_session.cpp +++ b/src/game_session.cpp @@ -353,10 +353,6 @@ GameSession::try_cheats() debug_grid = !debug_grid; } #endif - if(main_controller->check_cheatcode("hover")) { - // toggle hover ability on/off - tux.enable_hover = !tux.enable_hover; - } if(main_controller->check_cheatcode("gotoend")) { // goes to the end of the level tux.move(Vector( @@ -369,16 +365,6 @@ GameSession::try_cheats() exit_status = ES_LEVEL_FINISHED; // don't add points to stats though... } - // temporary to help player's choosing a flapping - if(main_controller->check_cheatcode("marek")) { - tux.flapping_mode = Player::MAREK_FLAP; - } - if(main_controller->check_cheatcode("ricardo")) { - tux.flapping_mode = Player::RICARDO_FLAP; - } - if(main_controller->check_cheatcode("ryan")) { - tux.flapping_mode = Player::RYAN_FLAP; - } } void diff --git a/src/object/player.cpp b/src/object/player.cpp index 95052a4d1..2d9847579 100644 --- a/src/object/player.cpp +++ b/src/object/player.cpp @@ -127,22 +127,12 @@ Player::init() last_ground_y = 0; fall_mode = ON_GROUND; jumping = false; - flapping = false; can_jump = true; - can_flap = false; - falling_from_flap = false; - enable_hover = false; butt_jump = false; deactivated = false; + backflipping = false; + backflip_direction = 0; - flapping_velocity = 0; - - // temporary to help player's choosing a flapping - flapping_mode = NO_FLAP; - - // Ricardo's flapping - flaps_nb = 0; - on_ground_flag = false; grabbed_object = 0; @@ -201,6 +191,14 @@ Player::update(float elapsed_time) bbox.get_height()*0.66666 - 32); grabbed_object->grab(*this, pos); } + + if (backflipping) { + if (backflip_direction == 0) { + dir == LEFT ? backflip_direction = 1 : backflip_direction = -1; + } + else backflip_direction == 1 ? dir = LEFT : dir = RIGHT; //prevent player from changing direction when backflipping + if (backflip_timer.check()) physic.set_velocity_x(100 * backflip_direction); + } } bool @@ -343,19 +341,23 @@ Player::handle_vertical_input() if(on_ground()) { /* Make sure jumping is off. */ jumping = false; - flapping = false; - falling_from_flap = false; - if (flapping_timer.started()) { - flapping_timer.stop(); + if (backflipping) { + backflipping = false; + backflip_direction = 0; } - - physic.set_acceleration_y(0); //for flapping } // Press jump key if(controller->pressed(Controller::JUMP) && can_jump && on_ground()) { - if (duck) // only jump a little bit when in duck mode - physic.set_velocity_y(300); + if (duck) { + if (physic.get_velocity_x() != 0) // only jump a little bit when running ducked + physic.set_velocity_y(300); + else { //do a backflip + backflipping = true; + physic.set_velocity_y(580); + backflip_timer.start(0.15); + } + } else if (fabs(physic.get_velocity_x()) > MAX_WALK_XM) // jump higher if we are running physic.set_velocity_y(580); else @@ -363,118 +365,17 @@ Player::handle_vertical_input() //bbox.move(Vector(0, -1)); jumping = true; - flapping = false; can_jump = false; - can_flap = false; - flaps_nb = 0; // Ricardo's flapping if (is_big()) sound_manager->play("sounds/bigjump.wav"); else sound_manager->play("sounds/jump.wav"); } else if(!controller->hold(Controller::JUMP)) { // Let go of jump key - if (!flapping && !duck && !falling_from_flap && !on_ground()) { - can_flap = true; - } - if (jumping && physic.get_velocity_y() > 0) { + if (!backflipping && jumping && physic.get_velocity_y() > 0) { jumping = false; physic.set_velocity_y(0); } } -#if CHOOSEFLAPSTYLE - // temporary to help players choosing a flapping - if(flapping_mode == RICARDO_FLAP) { - // Flapping, Ricardo's version - // similar to SM3 Fox - if(controller->pressed(Controller::JUMP) && can_flap && flaps_nb < 3) { - physic.set_velocity_y(350); - physic.set_velocity_x(physic.get_velocity_x() * 35); - flaps_nb++; - } - } else if(flapping_mode == MAREK_FLAP) { -#endif - // Flapping, Marek and Ondra's version - if (controller->hold(Controller::JUMP) && can_flap) - { - if (flapping_timer.check()) - { - can_flap = false; - //flapping = false; - falling_from_flap = true; - } - else if (!flapping_timer.started()) - { - flapping_timer.start(TUX_FLAPPING_TIME); - flapping_velocity = physic.get_velocity_x(); - } - else - { - jumping = true; - flapping = true; - float cv = flapping_velocity * sqrt( - TUX_FLAPPING_TIME - flapping_timer.get_timegone() - / TUX_FLAPPING_TIME); - - //Handle change of direction while flapping - if (((dir == LEFT) && (cv > 0)) || (dir == RIGHT) && (cv < 0)) { - cv *= (-1); - } - else if (cv == 0) { - if (controller->hold(Controller::LEFT)) { - cv = -TUX_FLAPPING_LEAST_X; - } - else if (controller->hold(Controller::RIGHT)) { - cv = TUX_FLAPPING_LEAST_X; - } - } - physic.set_velocity_x(cv); - physic.set_velocity_y(flapping_timer.get_timegone() - * TUX_FLAPPING_STRENGTH); - //std::cout << "Timegone: " << flapping_timer.get_timegone() << ", Y velocity: " << physic.get_velocity_y() << "\n"; - } - } -#if CHOOSEFLAPSTYLE - } else if(flapping_mode == RYAN_FLAP) { - // Flapping, Ryan's version - if (controller->hold(Controller::JUMP) && can_flap) - { - if (!flapping_timer.started()) - { - flapping_timer.start(TUX_FLAPPING_TIME); - } - if (flapping_timer.check()) - { - can_flap = false; - falling_from_flap = true; - } - jumping = true; - flapping = true; - if (flapping && flapping_timer.get_timegone() <= TUX_FLAPPING_TIME - && physic.get_velocity_y() < 0) - { - float gravity = Sector::current()->gravity; - (void)gravity; - float xr = (fabsf(physic.get_velocity_x()) / MAX_RUN_XM); - - // XXX: magic numbers. should be a percent of gravity - // gravity is (by default) -0.1f - physic.set_acceleration_y(12 + 1*xr); - -#if 0 - // To slow down x-vel when flapping (not working) - if (fabsf(physic.get_velocity_x()) > MAX_WALK_XM) - { - if (physic.get_velocity_x() < 0) - physic.set_acceleration_x(1.0f); - else if (physic.get_velocity_x() > 0) - physic.set_acceleration_x(-1.0f); - } -#endif - } - } else { - physic.set_acceleration_y(0); - } - } -#endif /* In case the player has pressed Down while in a certain range of air, enable butt jump action */ @@ -549,7 +450,7 @@ void Player::handle_input() { /* Handle horizontal movement: */ - handle_horizontal_input(); + if (!backflipping) handle_horizontal_input(); /* Jump/jumping? */ if (on_ground() && !controller->hold(Controller::JUMP)) @@ -914,10 +815,6 @@ Player::check_bounds(Camera* camera) void Player::bounce(BadGuy& ) { - //Make sure we stopped flapping - flapping = false; - falling_from_flap = false; - if(controller->hold(Controller::JUMP)) physic.set_velocity_y(520); else diff --git a/src/object/player.hpp b/src/object/player.hpp index 4da2676de..1ec639749 100644 --- a/src/object/player.hpp +++ b/src/object/player.hpp @@ -39,9 +39,6 @@ class Portable; static const float TUX_SAFE_TIME = 1.8; static const float TUX_INVINCIBLE_TIME = 10.0; static const float TUX_INVINCIBLE_TIME_WARNING = 2.0; -static const float TUX_FLAPPING_TIME = 1; /* How long Tux can flap his wings to gain additional jump height */ -static const float TUX_FLAPPING_STRENGTH = 100; /* How much Y velocity Tux gains when flapping */ -static const float TUX_FLAPPING_LEAST_X = 30; /* How much X velocity Tux gains when flapping from vertical jump */ static const float GROWING_TIME = 1.0; static const int GROWING_FRAMES = 7; @@ -92,6 +89,8 @@ public: private: bool dying; + bool backflipping; + int backflip_direction; public: Direction dir; @@ -102,23 +101,9 @@ public: bool on_ground_flag; bool jumping; - bool flapping; bool can_jump; - bool can_flap; - bool falling_from_flap; - bool enable_hover; bool butt_jump; - float flapping_velocity; - - // Ricardo's flapping - int flaps_nb; - - // temporary to help player's choosing a flapping - // TODO: remove this after agreeing on flapstyle! - enum { MAREK_FLAP, RICARDO_FLAP, RYAN_FLAP, NO_FLAP }; - int flapping_mode; - Timer invincible_timer; Timer skidding_timer; Timer safe_timer; @@ -127,7 +112,7 @@ public: Timer dying_timer; Timer growing_timer; Timer idle_timer; - Timer flapping_timer; + Timer backflip_timer; Physic physic; public: -- 2.11.0