From 94feb62b087d61d0c211645970a36e6752d1c732 Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Mon, 21 Nov 2011 14:34:43 +0200
Subject: [PATCH] When digging a node, don't switch to punching an object
 without raising button

---
 src/game.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/game.cpp b/src/game.cpp
index ca13d292c..cb2273c5a 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -937,6 +937,7 @@ void the_game(
 	float dig_time = 0.0;
 	u16 dig_index = 0;
 	v3s16 nodepos_old(-32768,-32768,-32768);
+	bool ldown_for_dig = false;
 
 	float damage_flash_timer = 0;
 	s16 farmesh_range = 20*MAP_BLOCKSIZE;
@@ -1626,7 +1627,7 @@ void the_game(
 		bool left_punch = false;
 		bool left_punch_muted = false;
 
-		if(selected_active_object != NULL)
+		if(selected_active_object != NULL && !ldown_for_dig)
 		{
 			/* Clear possible cracking animation */
 			if(nodepos_old != v3s16(-32768,-32768,-32768))
@@ -1710,6 +1711,7 @@ void the_game(
 				client.clearTempMod(nodepos_old);
 				dig_time = 0.0;
 				nodepos_old = v3s16(-32768,-32768,-32768);
+				ldown_for_dig = false;
 			}
 		} else {
 			/*
@@ -1738,6 +1740,7 @@ void the_game(
 			{
 				client.clearTempMod(nodepos);
 				dig_time = 0.0;
+				ldown_for_dig = false;
 			}
 			
 			if(nodig_delay_counter > 0.0)
@@ -1768,6 +1771,7 @@ void the_game(
 				if(input->getLeftClicked())
 				{
 					client.setTempMod(nodepos, NodeMod(NODEMOD_CRACK, 0));
+					ldown_for_dig = true;
 				}
 				if(input->getLeftState())
 				{
@@ -1938,6 +1942,7 @@ void the_game(
 			infostream<<"Left button released (stopped digging)"
 					<<std::endl;
 			client.groundAction(2, v3s16(0,0,0), v3s16(0,0,0), 0);
+			ldown_for_dig = false;
 		}
 		if(input->getRightReleased())
 		{
-- 
GitLab