Fixed #2929
This commit is contained in:
@@ -83,9 +83,9 @@ public class Team implements Comparable<Team>{
|
||||
return state.rules.teams.get(this);
|
||||
}
|
||||
|
||||
public Team[] enemies(){
|
||||
return state.teams.enemiesOf(this);
|
||||
}
|
||||
//public Team[] enemies(){
|
||||
// return state.teams.enemiesOf(this);
|
||||
//}
|
||||
|
||||
public TeamData data(){
|
||||
return state.teams.get(this);
|
||||
|
||||
@@ -23,7 +23,9 @@ public class Teams{
|
||||
/** Maps team IDs to team data. */
|
||||
private TeamData[] map = new TeamData[256];
|
||||
/** Active teams. */
|
||||
private Seq<TeamData> active = new Seq<>();
|
||||
public Seq<TeamData> active = new Seq<>();
|
||||
/** Teams with block or unit presence. */
|
||||
public Seq<TeamData> present = new Seq<>(TeamData.class);
|
||||
|
||||
public Teams(){
|
||||
active.add(get(Team.crux));
|
||||
@@ -31,7 +33,7 @@ public class Teams{
|
||||
|
||||
@Nullable
|
||||
public CoreBuild closestEnemyCore(float x, float y, Team team){
|
||||
for(Team enemy : team.enemies()){
|
||||
for(Team enemy : team.data().coreEnemies){
|
||||
CoreBuild tile = Geometry.findClosest(x, y, enemy.cores());
|
||||
if(tile != null) return tile;
|
||||
}
|
||||
@@ -43,9 +45,9 @@ public class Teams{
|
||||
return Geometry.findClosest(x, y, get(team).cores);
|
||||
}
|
||||
|
||||
public Team[] enemiesOf(Team team){
|
||||
return get(team).enemies;
|
||||
}
|
||||
//public Team[] enemiesOf(Team team){
|
||||
// return get(team).enemies;
|
||||
//}
|
||||
|
||||
public boolean eachEnemyCore(Team team, Boolf<CoreBuild> ret){
|
||||
for(TeamData data : active){
|
||||
@@ -145,9 +147,12 @@ public class Teams{
|
||||
}
|
||||
|
||||
public void updateTeamStats(){
|
||||
present.clear();
|
||||
|
||||
for(Team team : Team.all){
|
||||
TeamData data = team.data();
|
||||
|
||||
data.presentFlag = false;
|
||||
data.unitCount = 0;
|
||||
data.units.clear();
|
||||
if(data.tree != null){
|
||||
@@ -168,10 +173,14 @@ public class Teams{
|
||||
}
|
||||
}
|
||||
|
||||
//update presence flag.
|
||||
Groups.build.each( b -> b.team.data().presentFlag = true);
|
||||
|
||||
for(Unit unit : Groups.unit){
|
||||
TeamData data = unit.team.data();
|
||||
data.tree().insert(unit);
|
||||
data.units.add(unit);
|
||||
data.presentFlag = true;
|
||||
|
||||
if(data.unitsByType == null || data.unitsByType.length <= unit.type().id){
|
||||
data.unitsByType = new Seq[content.units().size];
|
||||
@@ -185,6 +194,15 @@ public class Teams{
|
||||
|
||||
count(unit);
|
||||
}
|
||||
|
||||
//update presence of each team.
|
||||
for(Team team : Team.all){
|
||||
TeamData data = team.data();
|
||||
|
||||
if(data.presentFlag || data.active()){
|
||||
present.add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateEnemies(){
|
||||
@@ -201,7 +219,7 @@ public class Teams{
|
||||
}
|
||||
}
|
||||
|
||||
data.enemies = enemies.toArray(Team.class);
|
||||
data.coreEnemies = enemies.toArray(Team.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +228,10 @@ public class Teams{
|
||||
public final Team team;
|
||||
public final BaseAI ai;
|
||||
|
||||
public Team[] enemies = {};
|
||||
private boolean presentFlag;
|
||||
|
||||
/** Enemies with cores or spawn points. */
|
||||
public Team[] coreEnemies = {};
|
||||
/** Planned blocks for drones. This is usually only blocks that have been broken. */
|
||||
public Queue<BlockPlan> blocks = new Queue<>();
|
||||
/** The current command for units to follow. */
|
||||
|
||||
Reference in New Issue
Block a user