From d9662039dffeec00d4ffb7c2454152b6f6e28db2 Mon Sep 17 00:00:00 2001 From: OttoLidenbrock Date: Fri, 1 May 2015 19:46:17 +1000 Subject: [PATCH] Add a delay after digging before place node can happen --- src/game.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/game.cpp b/src/game.cpp index 94e0ca915..5a954a2c2 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1354,6 +1354,7 @@ struct GameRunData { bool update_wielded_item_trigger; bool reset_jump_timer; float nodig_delay_timer; + float noplace_delay_timer; float dig_time; float dig_time_complete; float repeat_rightclick_timer; @@ -2339,6 +2340,9 @@ inline void Game::updateInteractTimers(GameRunData *runData, f32 dtime) if (runData->object_hit_delay_timer >= 0) runData->object_hit_delay_timer -= dtime; + if (runData->noplace_delay_timer >= 0) + runData->noplace_delay_timer -= dtime; + runData->time_from_last_punch += dtime; } @@ -3524,13 +3528,16 @@ void Game::handlePointingAtNode(GameRunData *runData, digging = true; } +#ifdef HAVE_TOUCHSCREENGUI + bool place = (input->getRightClicked() || input->getLeftReleased() || + runData->repeat_rightclick_timer >= m_repeat_right_click_time) && + client->checkPrivilege("interact"); + place &= !digging; + place &= runData->noplace_delay_timer <= 0.0; +#else bool place = (input->getRightClicked() || runData->repeat_rightclick_timer >= m_repeat_right_click_time) && client->checkPrivilege("interact"); - -#ifdef HAVE_TOUCHSCREENGUI - place &= !digging; - place |= input->getLeftReleased(); #endif if (place) { @@ -3707,6 +3714,7 @@ void Game::handleDigging(GameRunData *runData, client->setCrack(runData->dig_index, nodepos); } else { infostream << "Digging completed" << std::endl; + runData->noplace_delay_timer = 1.0; client->interact(2, pointed); client->setCrack(-1, v3s16(0, 0, 0)); bool is_valid_position;