This commit is contained in:
Anuken
2020-10-13 15:56:00 -04:00
parent ca875876cd
commit 5d76dd0e2f
7 changed files with 58 additions and 41 deletions

View File

@@ -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);

View File

@@ -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. */