mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-05 16:37:38 +07:00
Optimized power distribution implementation for buffered consumers
This commit is contained in:
parent
28f73d0a76
commit
61210955bd
@ -8,6 +8,7 @@ import com.badlogic.gdx.utils.Queue;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.consumers.ConsumePower;
|
||||
import io.anuke.mindustry.world.consumers.Consumers;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
|
||||
import static io.anuke.mindustry.Vars.threads;
|
||||
|
||||
@ -119,11 +120,9 @@ public class PowerGraph{
|
||||
if(consumes.has(ConsumePower.class)){
|
||||
ConsumePower consumePower = consumes.get(ConsumePower.class);
|
||||
if(consumePower.isBuffered){
|
||||
// Add a percentage of the requested amount, but limit it to the mission amount.
|
||||
// TODO This can maybe be calculated without converting to absolute values first
|
||||
// Add an equal percentage of power to all buffers, based on the global power coverage in this graph
|
||||
float maximumRate = consumePower.requestedPower(consumer.block(), consumer.entity()) * coverage * consumer.entity.delta();
|
||||
float missingAmount = consumePower.powerCapacity * (1 - consumer.entity.power.satisfaction);
|
||||
consumer.entity.power.satisfaction += Math.min(missingAmount, maximumRate) / consumePower.powerCapacity;
|
||||
consumer.entity.power.satisfaction = Mathf.clamp(consumer.entity.power.satisfaction + maximumRate / consumePower.powerCapacity);
|
||||
}else{
|
||||
consumer.entity.power.satisfaction = coverage;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user