Mega repair AI

This commit is contained in:
Anuken
2020-09-15 10:39:45 -04:00
parent 757e0fbda0
commit 1327a2bef4
7 changed files with 46 additions and 20 deletions

View File

@@ -214,8 +214,7 @@ public class Vars implements Loadable{
if(loadLocales){
//load locales
String[]
stra = Core.files.internal("locales").readString().split("\n");
String[] stra = Core.files.internal("locales").readString().split("\n");
locales = new Locale[stra.length];
for(int i = 0; i < locales.length; i++){
String code = stra[i];

View File

@@ -12,14 +12,6 @@ public class FlyingAI extends AIController{
@Override
public void updateMovement(){
if(unit.moving()){
unit.lookAt(unit.vel.angle());
}
if(unit.isFlying()){
unit.wobble();
}
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
if(unit.type().weapons.first().rotate){
moveTo(target, unit.range() * 0.8f);

View File

@@ -15,14 +15,6 @@ public class MinerAI extends AIController{
@Override
protected void updateMovement(){
if(unit.moving()){
unit.lookAt(unit.vel.angle());
}
if(unit.isFlying()){
unit.wobble();
}
Building core = unit.closestCore();
if(!(unit instanceof Minerc) || core == null) return;

View File

@@ -0,0 +1,32 @@
package mindustry.ai.types;
import mindustry.entities.*;
import mindustry.entities.units.*;
import mindustry.world.blocks.ConstructBlock.*;
//note that repair AI doesn't attack anything even if it theoretically can
public class RepairAI extends AIController{
@Override
protected void updateMovement(){
boolean shoot = false;
if(target != null){
if(!target.within(unit, unit.type().range)){
moveTo(target, unit.type().range * 0.9f);
}else{
unit.aim(target);
shoot = true;
}
}
unit.controlWeapons(shoot);
}
@Override
protected void updateTargeting(){
target = Units.findDamagedTile(unit.team, unit.x, unit.y);
if(target instanceof ConstructBuild) target = null;
}
}

View File

@@ -1029,6 +1029,7 @@ public class UnitTypes implements ContentList{
}};
mega = new UnitType("mega"){{
defaultController = RepairAI::new;
mineTier = 2;
health = 500;

View File

@@ -33,6 +33,7 @@ public class AIController implements UnitController{
@Override
public void updateUnit(){
updateVisuals();
updateTargeting();
updateMovement();
}
@@ -41,13 +42,23 @@ public class AIController implements UnitController{
return unit.team.data().command;
}
protected void updateVisuals(){
if(unit.isFlying()){
unit.wobble();
if(unit.moving()){
unit.lookAt(unit.vel.angle());
}
}
}
protected void updateMovement(){
}
protected void updateTargeting(){
if(unit.hasWeapons()){
updateWeapons();
}
}

View File

@@ -34,7 +34,6 @@ public class LogicBlock extends Block{
update = true;
solid = true;
configurable = true;
sync = true;
config(byte[].class, (LogicBuild build, byte[] data) -> build.readCompressed(data, true));