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; @Import float x, y, rotation;
@SyncLocal Queue<BuildPlan> plans = new Queue<>(); @SyncLocal Queue<BuildPlan> plans = new Queue<>();
transient boolean building = true; transient boolean updateBuilding = true;
@Override @Override
public void controller(UnitController next){ public void controller(UnitController next){
//reset building state so AI controlled units will always start off building //reset building state so AI controlled units will always start off building
building = true; updateBuilding = true;
} }
@Override @Override
public void update(){ public void update(){
if(!building) return; if(!updateBuilding) return;
float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : buildingRange; float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : buildingRange;
@ -208,7 +208,7 @@ abstract class BuilderComp implements Unitc{
@Override @Override
public void draw(){ public void draw(){
if(!isBuilding()) return; if(!isBuilding() || !updateBuilding) return;
//TODO check correctness //TODO check correctness
Draw.z(Layer.flyingUnit); Draw.z(Layer.flyingUnit);

View File

@ -432,6 +432,10 @@ public class DesktopInput extends InputHandler{
if(Core.input.keyTap(Binding.pause_building)){ if(Core.input.keyTap(Binding.pause_building)){
isBuilding = !isBuilding; isBuilding = !isBuilding;
buildWasAutoPaused = false; buildWasAutoPaused = false;
if(isBuilding){
player.shooting = false;
}
} }
if((cursorX != lastLineX || cursorY != lastLineY) && isPlacing() && mode == placing){ if((cursorX != lastLineX || cursorY != lastLineY) && isPlacing() && mode == placing){
@ -460,7 +464,7 @@ public class DesktopInput extends InputHandler{
deleting = true; deleting = true;
}else if(selected != null){ }else if(selected != null){
//only begin shooting if there's no cursor event //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()){ !tryBeginMine(selected) && player.miner().mineTile() == null && !Core.scene.hasKeyboard()){
player.shooting = shouldShoot; player.shooting = shouldShoot;
} }

View File

@ -299,7 +299,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
player.typing = ui.chatfrag.shown(); player.typing = ui.chatfrag.shown();
if(player.isBuilder()){ if(player.isBuilder()){
player.builder().building(isBuilding); player.builder().updateBuilding(isBuilding);
} }
if(!player.dead()){ if(!player.dead()){
@ -901,7 +901,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
} }
public boolean canShoot(){ 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(){ public boolean onConfigurable(){