BuildTurret AI, efficiency

This commit is contained in:
Anuken 2021-11-02 00:23:32 -04:00
parent 6fb2b3e920
commit f108791379

View File

@ -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<BlockPlan> 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