it launches

This commit is contained in:
Anuken
2020-02-05 22:08:57 -05:00
parent 65857d77c4
commit 8172e69f8c
13 changed files with 127 additions and 96 deletions

View File

@@ -81,6 +81,7 @@ public class EntityComps{
@Override
public void type(UnitDef type){
this.type = type;
controller(type.createController());
setupWeapons(type);
}
@@ -678,19 +679,7 @@ 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;
@NonNull @ReadOnly Unitc unit = Nulls.unit;
@ReadOnly Team team = Team.sharded;
String name = "noname";
@@ -739,7 +728,7 @@ public class EntityComps{
}
public void clearUnit(){
unit(noUnit);
unit(Nulls.unit);
}
public Unitc unit(){
@@ -751,23 +740,24 @@ public class EntityComps{
return unit;
}
public Minerc miner(){
return !(unit instanceof Minerc) ? Nulls.miner : (Minerc)unit;
}
public Builderc builder(){
if(!(unit instanceof Builderc)){
return noBuilder;
}
return (Builderc)unit;
return !(unit instanceof Builderc) ? Nulls.builder : (Builderc)unit;
}
public void unit(Unitc unit){
if(unit == null) throw new IllegalArgumentException("Unit cannot be null. Use clearUnit() instead.");
this.unit = unit;
if(unit != noUnit){
if(unit != Nulls.unit){
unit.team(team);
}
}
boolean dead(){
return unit == noUnit;
return unit == Nulls.builder;
}
String uuid(){
@@ -1223,8 +1213,6 @@ public class EntityComps{
@Component
static abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc{
static float miningRange = 70f;
transient float x, y, rotation;
@Nullable Tile mineTile;
@@ -1308,7 +1296,6 @@ public class EntityComps{
@Component
abstract static class BuilderComp implements Unitc{
static final float placeDistance = 220f;
static final Vec2[] tmptr = new Vec2[]{new Vec2(), new Vec2(), new Vec2(), new Vec2()};
transient float x, y, rotation;
@@ -1318,7 +1305,7 @@ public class EntityComps{
//boolean building;
void updateBuilding(){
float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : placeDistance;
float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : buildingRange;
Iterator<BuildRequest> it = requests.iterator();
while(it.hasNext()){
@@ -1402,7 +1389,7 @@ public class EntityComps{
void drawBuildRequests(){
for(BuildRequest request : requests){
if(request.progress > 0.01f || (buildRequest() == request && request.initialized && (dst(request.x * tilesize, request.y * tilesize) <= placeDistance || state.isEditor()))) continue;
if(request.progress > 0.01f || (buildRequest() == request && request.initialized && (dst(request.x * tilesize, request.y * tilesize) <= buildingRange || state.isEditor()))) continue;
request.animScale = 1f;
if(request.breaking){
@@ -1479,7 +1466,7 @@ public class EntityComps{
BuildRequest request = buildRequest();
Tile tile = world.tile(request.x, request.y);
if(dst(tile) > placeDistance && !state.isEditor()){
if(dst(tile) > buildingRange && !state.isEditor()){
return;
}
@@ -1804,6 +1791,10 @@ public class EntityComps{
return ((Object)this) == player || ((Object)this) instanceof Unitc && ((Unitc)((Object)this)).controller() == player;
}
boolean isNull(){
return false;
}
<T> T as(Class<T> type){
return (T)this;
}