forked from Mirrorlandia_minetest/minetest
Improve double tap for jump detection (#12793)
This commit is contained in:
parent
e832cee1e6
commit
13a8948edd
@ -676,7 +676,10 @@ struct GameRunData {
|
|||||||
float time_from_last_punch;
|
float time_from_last_punch;
|
||||||
ClientActiveObject *selected_object;
|
ClientActiveObject *selected_object;
|
||||||
|
|
||||||
float jump_timer;
|
float jump_timer_up; // from key up until key down
|
||||||
|
float jump_timer_down; // since last key down
|
||||||
|
float jump_timer_down_before; // from key down until key down again
|
||||||
|
|
||||||
float damage_flash;
|
float damage_flash;
|
||||||
float update_draw_list_timer;
|
float update_draw_list_timer;
|
||||||
|
|
||||||
@ -1958,8 +1961,10 @@ void Game::processUserInput(f32 dtime)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Increase timer for double tap of "keymap_jump"
|
// Increase timer for double tap of "keymap_jump"
|
||||||
if (m_cache_doubletap_jump && runData.jump_timer <= 0.2f)
|
if (m_cache_doubletap_jump && runData.jump_timer_up <= 0.2f)
|
||||||
runData.jump_timer += dtime;
|
runData.jump_timer_up += dtime;
|
||||||
|
if (m_cache_doubletap_jump && runData.jump_timer_down <= 0.4f)
|
||||||
|
runData.jump_timer_down += dtime;
|
||||||
|
|
||||||
processKeyInput();
|
processKeyInput();
|
||||||
processItemSelection(&runData.new_playeritem);
|
processItemSelection(&runData.new_playeritem);
|
||||||
@ -2080,7 +2085,7 @@ void Game::processKeyInput()
|
|||||||
|
|
||||||
if (!isKeyDown(KeyType::JUMP) && runData.reset_jump_timer) {
|
if (!isKeyDown(KeyType::JUMP) && runData.reset_jump_timer) {
|
||||||
runData.reset_jump_timer = false;
|
runData.reset_jump_timer = false;
|
||||||
runData.jump_timer = 0.0f;
|
runData.jump_timer_up = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quicktune->hasMessage()) {
|
if (quicktune->hasMessage()) {
|
||||||
@ -2221,7 +2226,14 @@ void Game::toggleFreeMove()
|
|||||||
|
|
||||||
void Game::toggleFreeMoveAlt()
|
void Game::toggleFreeMoveAlt()
|
||||||
{
|
{
|
||||||
if (m_cache_doubletap_jump && runData.jump_timer < 0.2f)
|
if (!runData.reset_jump_timer) {
|
||||||
|
runData.jump_timer_down_before = runData.jump_timer_down;
|
||||||
|
runData.jump_timer_down = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// key down (0.2 s max.), then key up (0.2 s max.), then key down
|
||||||
|
if (m_cache_doubletap_jump && runData.jump_timer_up < 0.2f &&
|
||||||
|
runData.jump_timer_down_before < 0.4f) // 0.2 + 0.2
|
||||||
toggleFreeMove();
|
toggleFreeMove();
|
||||||
|
|
||||||
runData.reset_jump_timer = true;
|
runData.reset_jump_timer = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user