Use tree score instead of looping each crater twice

This commit is contained in:
Patrick 'Quezler' Mounier
2020-01-02 08:51:49 +01:00
parent ec32f65646
commit 317f40eecd
2 changed files with 22 additions and 13 deletions

View File

@@ -3,8 +3,10 @@ package mindustry.entities.units;
import arc.*;
import arc.util.*;
import arc.struct.*;
import mindustry.entities.type.base.*;
import mindustry.world.*;
import mindustry.entities.type.base.*;
import mindustry.world.blocks.distribution.*;
import mindustry.world.blocks.distribution.PlastaniumConveyor.*;
import static mindustry.Vars.*;
@@ -21,23 +23,29 @@ public class Hivemind{
on.clear();
ObjectSet<CraterUnit> craters = new ObjectSet<>();
Array<CraterUnit> craters = new Array<>();
unitGroup.all().each(e -> e instanceof CraterUnit, crater -> craters.add((CraterUnit)crater));
craters.sort(Structs.comparingInt(crater -> sortPriority(crater.on())));
craters.each(crater -> {
on.put(crater.on(), crater);
});
craters.each(i -> {
craters.each(crater -> {
if(crater == null || crater.aspires() == null) return;
if(!on.containsKey(crater.aspires())){
crater.purpose = crater.aspires();
on.put(crater.aspires(), crater);
on.remove(crater.on());
craters.remove(crater);
};
});
craters.each(crater -> {
if(crater == null || crater.aspires() == null) return;
if(!on.containsKey(crater.aspires())){
crater.purpose = crater.aspires();
on.put(crater.aspires(), crater);
on.remove(crater.on());
}
});
}
private static int sortPriority(Tile tile){
if(tile == null) return 0;
if(!(tile.block() instanceof PlastaniumConveyor)) return 0;
PlastaniumConveyorEntity entity = tile.ent();
return entity.tree;
}
}

View File

@@ -61,6 +61,7 @@ public class PlastaniumConveyor extends ArmoredConveyor{
@Override
public void drawLayer(Tile tile){
if(true) return; // debug mode
PlastaniumConveyorEntity entity = tile.ent();
Fonts.outline.draw(entity.tree + "",
@@ -91,7 +92,7 @@ public class PlastaniumConveyor extends ArmoredConveyor{
}
}
class PlastaniumConveyorEntity extends ConveyorEntity{
public class PlastaniumConveyorEntity extends ConveyorEntity{
public int reload = 0;
public CraterUnit crater = null;
public int tree = 0;