Removing Nulls.unit

This commit is contained in:
Anuken
2024-07-10 15:54:46 -04:00
parent e3ba8b714b
commit 295573142f
12 changed files with 106 additions and 188 deletions

View File

@@ -33,7 +33,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
@Import float x, y;
@ReadOnly Unit unit = Nulls.unit;
@ReadOnly @Nullable Unit unit;
transient @Nullable NetConnection con;
@ReadOnly Team team = Team.sharded;
@SyncLocal boolean typing, shooting, boosting;
@@ -49,12 +49,12 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
transient float textFadeTime;
transient Ratekeeper itemDepositRate = new Ratekeeper();
transient private Unit lastReadUnit = Nulls.unit;
transient private @Nullable Unit lastReadUnit;
transient private int wrongReadUnits;
transient @Nullable Unit justSwitchFrom, justSwitchTo;
public boolean isBuilder(){
return unit.canBuild();
return unit != null && unit.canBuild();
}
public @Nullable CoreBuild closestCore(){
@@ -89,7 +89,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
x = y = 0f;
if(!dead()){
unit.resetController();
unit = Nulls.unit;
unit = null;
}
}
@@ -105,7 +105,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
@Replace
public float clipSize(){
return unit.isNull() ? 20 : unit.type.hitSize * 2f;
return unit == null ? 20 : unit.type.hitSize * 2f;
}
@Override
@@ -131,17 +131,18 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
unit = lastReadUnit;
unit(set);
lastReadUnit = unit;
unit.aim(mouseX, mouseY);
//this is only necessary when the thing being controlled isn't synced
unit.controlWeapons(shooting, shooting);
//extra precaution, necessary for non-synced things
unit.controller(this);
if(unit != null){
unit.aim(mouseX, mouseY);
//this is only necessary when the thing being controlled isn't synced
unit.controlWeapons(shooting, shooting);
//extra precaution, necessary for non-synced things
unit.controller(this);
}
}
@Override
public void update(){
if(!unit.isValid()){
if(unit != null && !unit.isValid()){
clearUnit();
}
@@ -181,42 +182,43 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
@Override
public void remove(){
//clear unit upon removal
if(!unit.isNull()){
if(unit != null){
clearUnit();
}
lastReadUnit = Nulls.unit;
lastReadUnit = null;
justSwitchTo = justSwitchFrom = null;
}
public void team(Team team){
this.team = team;
unit.team(team);
if(unit != null){
unit.team(team);
}
}
public void clearUnit(){
unit(Nulls.unit);
unit(null);
}
public Unit unit(){
public @Nullable Unit unit(){
return unit;
}
public void unit(Unit unit){
public void unit(@Nullable Unit unit){
//refuse to switch when the unit was just transitioned from
if(isLocal() && unit == justSwitchFrom && justSwitchFrom != null && justSwitchTo != null){
return;
}
if(unit == null) throw new IllegalArgumentException("Unit cannot be null. Use clearUnit() instead.");
if(this.unit == unit) return;
//save last command this unit had
if(unit.controller() instanceof CommandAI ai){
if(unit != null && unit.controller() instanceof CommandAI ai){
lastCommand = ai.command;
}
if(this.unit != Nulls.unit){
if(this.unit != null){
//un-control the old unit
this.unit.resetController();
//restore last command issued before it was controlled
@@ -225,7 +227,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
}
}
this.unit = unit;
if(unit != Nulls.unit){
if(unit != null){
unit.team(team);
unit.controller(this);
@@ -244,7 +246,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
}
boolean dead(){
return unit.isNull() || !unit.isValid();
return unit == null || !unit.isValid();
}
String ip(){