From 103ebc009d18365adb8c6361f734480368b66c74 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 13 Jul 2020 08:50:19 -0400 Subject: [PATCH] Fixed #2224 --- core/src/mindustry/entities/comp/BuilderComp.java | 8 ++++---- core/src/mindustry/input/DesktopInput.java | 6 +++++- core/src/mindustry/input/InputHandler.java | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 64667334e9..b518906f67 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -29,17 +29,17 @@ abstract class BuilderComp implements Unitc{ @Import float x, y, rotation; @SyncLocal Queue plans = new Queue<>(); - transient boolean building = true; + transient boolean updateBuilding = true; @Override public void controller(UnitController next){ //reset building state so AI controlled units will always start off building - building = true; + updateBuilding = true; } @Override public void update(){ - if(!building) return; + if(!updateBuilding) return; float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : buildingRange; @@ -208,7 +208,7 @@ abstract class BuilderComp implements Unitc{ @Override public void draw(){ - if(!isBuilding()) return; + if(!isBuilding() || !updateBuilding) return; //TODO check correctness Draw.z(Layer.flyingUnit); diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 68fe8b32de..ec9d48b9b6 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -432,6 +432,10 @@ public class DesktopInput extends InputHandler{ if(Core.input.keyTap(Binding.pause_building)){ isBuilding = !isBuilding; buildWasAutoPaused = false; + + if(isBuilding){ + player.shooting = false; + } } if((cursorX != lastLineX || cursorY != lastLineY) && isPlacing() && mode == placing){ @@ -460,7 +464,7 @@ public class DesktopInput extends InputHandler{ deleting = true; }else if(selected != null){ //only begin shooting if there's no cursor event - if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().isBuilding()) && !droppingItem && + if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().updateBuilding()) && !droppingItem && !tryBeginMine(selected) && player.miner().mineTile() == null && !Core.scene.hasKeyboard()){ player.shooting = shouldShoot; } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index e59784dd0b..a21aa3d1dd 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -299,7 +299,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ player.typing = ui.chatfrag.shown(); if(player.isBuilder()){ - player.builder().building(isBuilding); + player.builder().updateBuilding(isBuilding); } if(!player.dead()){ @@ -901,7 +901,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public boolean canShoot(){ - return block == null && !Core.scene.hasMouse() && !onConfigurable() && !isDroppingItem(); + return block == null && !Core.scene.hasMouse() && !onConfigurable() && !isDroppingItem() && !(player.builder().updateBuilding() && player.builder().isBuilding()); } public boolean onConfigurable(){