This commit is contained in:
Anuken
2020-02-05 20:11:49 -05:00
parent f6b1420103
commit dfecfa3964
14 changed files with 103 additions and 79 deletions

View File

@@ -1,6 +1,7 @@
package mindustry.entities.def;
import arc.*;
import arc.func.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
@@ -677,7 +678,17 @@ public class EntityComps{
@Component
abstract static class PlayerComp implements UnitController, Entityc, Syncc, Timerc{
//TODO mock these properly
private static final Unitc noUnit = GenericUnitEntity.create();
private static final Builderc noBuilder = GenericBuilderEntity.create().with(s -> s.requests(new Queue<BuildRequest>(){
@Override
public void addLast(BuildRequest object){
}
@Override
public void addFirst(BuildRequest object){
}
}));
@NonNull @ReadOnly Unitc unit = noUnit;
@@ -691,6 +702,14 @@ public class EntityComps{
@Nullable String lastText;
float textFadeTime;
public boolean isBuilder(){
return unit instanceof Builderc;
}
public boolean isMiner(){
return unit instanceof Minerc;
}
public @Nullable Tilec closestCore(){
return state.teams.closestCore(x(), y(), team);
}
@@ -732,6 +751,13 @@ public class EntityComps{
return unit;
}
public Builderc builder(){
if(!(unit instanceof Builderc)){
return noBuilder;
}
return (Builderc)unit;
}
public void unit(Unitc unit){
if(unit == null) throw new IllegalArgumentException("Unit cannot be null. Use clearUnit() instead.");
this.unit = unit;
@@ -1287,7 +1313,7 @@ public class EntityComps{
transient float x, y, rotation;
@ReadOnly Queue<BuildRequest> requests = new Queue<>();
Queue<BuildRequest> requests = new Queue<>();
float buildSpeed = 1f;
//boolean building;
@@ -1782,6 +1808,11 @@ public class EntityComps{
return (T)this;
}
<T> T with(Cons<T> cons){
cons.get((T)this);
return (T)this;
}
@InternalImpl
abstract int classId();

View File

@@ -22,4 +22,7 @@ class EntityDefs{
@EntityDef({UnitComp.class})
class GenericUnitDef{}
@EntityDef({BuilderComp.class})
class GenericBuilderDef{}
}