From: Marek Moeckel Date: Wed, 15 Sep 2004 15:15:25 +0000 (+0000) Subject: implemented double jump (press up again while jumping) and hovering (press and hold... X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=c572ff4247c9107091c2b526721a2befb32f0ed1;p=supertux.git implemented double jump (press up again while jumping) and hovering (press and hold up while falling down) both need some tweaking (especially when jumping off enemies) and should of course be triggered by special items in the final game SVN-Revision: 1917 --- diff --git a/src/player.cpp b/src/player.cpp index f5bfcda85..114a9699f 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -158,7 +158,9 @@ Player::init() last_ground_y = 0; fall_mode = ON_GROUND; jumping = false; + double_jumping = false; can_jump = true; + can_double_jump = false; butt_jump = false; frame_main = 0; @@ -532,7 +534,9 @@ Player::handle_vertical_input() --base.y; jumping = true; + double_jumping = false; can_jump = false; + can_double_jump = false; if (size == SMALL) SoundManager::get()->play_sound(IDToSound(SND_JUMP)); else @@ -541,9 +545,25 @@ Player::handle_vertical_input() // Let go of jump key else if(input.up == UP && jumping && physic.get_velocity_y() > 0) { - jumping = false; + if (!double_jumping && !duck) {can_double_jump = true;} + jumping = false; physic.set_velocity_y(0); } + + // Double jump + if (input.up == DOWN && can_double_jump) + { + can_double_jump = false; + jumping = true; + double_jumping = true; + physic.set_velocity_y(5.2); + } + + // Hover + if (input.up == DOWN && !jumping && !butt_jump && physic.get_velocity_y() <= 0) + { + physic.set_velocity_y(-1); + } /* In case the player has pressed Down while in a certain range of air, enable butt jump action */ diff --git a/src/player.h b/src/player.h index 6cf627d53..071d4773c 100644 --- a/src/player.h +++ b/src/player.h @@ -147,7 +147,9 @@ public: FallMode fall_mode; bool jumping; + bool double_jumping; bool can_jump; + bool can_double_jump; bool butt_jump; int frame_; int frame_main;