Minor power graph optimization

This commit is contained in:
Anuken
2024-06-20 17:41:36 -04:00
parent b5e8a2a865
commit 87584ebd0b
3 changed files with 15 additions and 23 deletions

View File

@@ -4,7 +4,6 @@ import arc.math.*;
import arc.struct.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.world.consumers.*;
public class PowerGraph{
private static final Queue<Building> queue = new Queue<>();
@@ -109,7 +108,7 @@ public class PowerGraph{
for(int i = 0; i < consumers.size; i++){
var consumer = items[i];
var consumePower = consumer.block.consPower;
if(otherConsumersAreValid(consumer, consumePower)){
if(consumer.shouldConsumePower){
powerNeeded += consumePower.requestedPower(consumer) * consumer.delta();
}
}
@@ -201,7 +200,7 @@ public class PowerGraph{
}
}else{
//valid consumers get power as usual
if(otherConsumersAreValid(consumer, cons)){
if(consumer.shouldConsumePower){
consumer.power.status = coverage;
}else{ //invalid consumers get an estimate, if they were to activate
consumer.power.status = Math.min(1, produced / (needed + cons.usage * consumer.delta()));
@@ -381,24 +380,6 @@ public class PowerGraph{
return graphID;
}
@Deprecated
private boolean otherConsumersAreValid(Building build, Consume consumePower){
if(!build.enabled) return false;
float f = build.efficiency;
//hack so liquids output positive efficiency values
build.efficiency = 1f;
for(Consume cons : build.block.nonOptionalConsumers){
//TODO fix this properly
if(cons != consumePower && cons.efficiency(build) <= 0.0000001f){
build.efficiency = f;
return false;
}
}
build.efficiency = f;
return true;
}
@Override
public String toString(){
return "PowerGraph{" +