diff --git a/core/src/mindustry/world/blocks/defense/BuildTurret.java b/core/src/mindustry/world/blocks/defense/BuildTurret.java index 0d73223578..d8c1a998c6 100644 --- a/core/src/mindustry/world/blocks/defense/BuildTurret.java +++ b/core/src/mindustry/world/blocks/defense/BuildTurret.java @@ -1,16 +1,25 @@ package mindustry.world.blocks.defense; import arc.graphics.g2d.*; +import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; +import mindustry.entities.units.*; +import mindustry.game.Teams.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.blocks.defense.turrets.*; import mindustry.world.meta.*; +import static mindustry.Vars.*; + public class BuildTurret extends BaseTurret{ + public final int timerTarget = timers++; + public int targetInterval = 20; + public @Load(value = "@-base", fallback = "block-@size") TextureRegion baseRegion; public float buildSpeed = 1f; //created in init() @@ -70,8 +79,25 @@ public class BuildTurret extends BaseTurret{ unit.lookAt(angleTo(unit.buildPlan())); } + unit.buildSpeedMultiplier(efficiency() * timeScale); + if(!isControlled()){ unit.updateBuilding(true); + + if(unit.buildPlan() == null && timer(timerTarget, targetInterval)){ + Queue blocks = team.data().blocks; + for(int i = 0; i < blocks.size; i++){ + var block = blocks.get(i); + if(within(block.x * tilesize, block.y * tilesize, range)){ + if(Build.validPlace(content.block(block.block), unit.team(), block.x, block.y, block.rotation)){ + unit.addBuild(new BuildPlan(block.x, block.y, block.rotation, content.block(block.block), block.config)); + //shift build plan to tail so next unit builds something else + blocks.addLast(blocks.removeIndex(i)); + break; + } + } + } + } } //please do not commit suicide