When digging a node, don't switch to punching an object without raising button
authorPerttu Ahola <celeron55@gmail.com>
Mon, 21 Nov 2011 12:34:43 +0000 (14:34 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 29 Nov 2011 17:13:50 +0000 (19:13 +0200)
src/game.cpp

index ca13d292c1239650ef93b743ff48303d58786050..cb2273c5aaad4a3f40454b623e47ef2bd26590e9 100644 (file)
@@ -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())
                {