mirror of
https://github.com/Anuken/Mindustry.git
synced 2026-04-13 01:11:15 -07:00
Optimized power distribution implementation for buffered consumers
This commit is contained in:
parent
28f73d0a76
commit
61210955bd
1 changed files with 3 additions and 4 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue