This commit is contained in:
Anuken
2020-07-13 08:50:19 -04:00
parent d31a530d6e
commit 103ebc009d
3 changed files with 11 additions and 7 deletions

View File

@ -29,17 +29,17 @@ abstract class BuilderComp implements Unitc{
@Import float x, y, rotation;
@SyncLocal Queue<BuildPlan> 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);

View File

@ -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;
}

View File

@ -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(){