From c572ff4247c9107091c2b526721a2befb32f0ed1 Mon Sep 17 00:00:00 2001 From: Marek Moeckel Date: Wed, 15 Sep 2004 15:15:25 +0000 Subject: [PATCH] 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 --- src/player.cpp | 22 +++++++++++++++++++++- src/player.h | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) 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; -- 2.11.0