Fixed block team change not processing correctly

This commit is contained in:
Anuken 2022-03-02 14:46:14 -05:00
parent 804fce06e7
commit b48f350914
2 changed files with 13 additions and 7 deletions

View File

@ -156,7 +156,9 @@ public class Logic implements ApplicationListener{
//TODO maybe make it a separate rule?
//makes cores go derelict in RTS mode, helps clean things up
if(e.tile.build instanceof CoreBuild core && core.team.isAI() && core.team.rules().rtsAi){
core.team.data().makeDerelict(core.x, core.y, state.rules.enemyCoreBuildRadius);
Core.app.post(() -> {
core.team.data().makeDerelict(core.x, core.y, state.rules.enemyCoreBuildRadius);
});
}
});
@ -175,9 +177,7 @@ public class Logic implements ApplicationListener{
//listen to core changes; if all cores have been destroyed, set to derelict.
Events.on(CoreChangeEvent.class, e -> Core.app.post(() -> {
if(state.rules.cleanupDeadTeams && state.rules.pvp && !e.core.isAdded() && e.core.team != Team.derelict && e.core.team.cores().isEmpty()){
Core.app.post(() -> {
e.core.team.data().destroyToDerelict();
});
e.core.team.data().destroyToDerelict();
}
}));
}

View File

@ -1527,10 +1527,16 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
/** Changes this building's team in a safe manner. */
public void changeTeam(Team next){
Team last = this.team;
indexer.removeIndex(tile);
boolean was = isValid();
if(was) indexer.removeIndex(tile);
this.team = next;
indexer.addIndex(tile);
Events.fire(teamChangeEvent.set(last, self()));
if(was){
indexer.addIndex(tile);
Events.fire(teamChangeEvent.set(last, self()));
}
}
public boolean canPickup(){