From 6ba8a6a60098a18f257e18694f3b53a842bc2f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Baltaz=C3=A1r=20Radics?= Date: Sun, 18 Nov 2018 23:47:03 +0100 Subject: [PATCH] Added support for buffered power consumers --- core/src/io/anuke/mindustry/world/BaseBlock.java | 1 + core/src/io/anuke/mindustry/world/Block.java | 7 +++++-- .../mindustry/world/blocks/power/PowerGraph.java | 14 +++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 35f88b88af..4b02f03ae4 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -28,6 +28,7 @@ public abstract class BaseBlock extends MappableContent{ public boolean consumesPower; public boolean outputsPower; + public boolean bufferedPowerConsumer = false; public float basePowerUse = 0; public int itemCapacity; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 093d9b77de..da24fe4f3c 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -330,7 +330,10 @@ public class Block extends BaseBlock { consumes.forEach(cons -> cons.display(stats)); - if(hasPower) stats.add(BlockStat.powerCapacity, powerCapacity, StatUnit.powerUnits); + if(hasPower){ + if(bufferedPowerConsumer) stats.add(BlockStat.powerUse, basePowerUse, StatUnit.powerUnits); + else stats.add(BlockStat.powerCapacity, basePowerUse, StatUnit.powerUnits); + } if(hasLiquids) stats.add(BlockStat.liquidCapacity, liquidCapacity, StatUnit.liquidUnits); if(hasItems) stats.add(BlockStat.itemCapacity, itemCapacity, StatUnit.items); } @@ -550,4 +553,4 @@ public class Block extends BaseBlock { "entity.graph", tile.entity.power != null && tile.entity.power.graph != null ? tile.entity.power.graph.getID() : null ); } -} \ No newline at end of file +} diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index 6f6ce996e8..d67424cd80 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -45,7 +45,11 @@ public class PowerGraph{ float powerNeeded = 0f; for(Tile consumer : consumers){ - powerNeeded += consumer.block().basePowerUse + consumer.entity.power.extraUse; + if(consumer.block().bufferedPowerConsumer){ + powerNeeded += (1f - consumer.entity.power.satisfaction) * consumer.block().basePowerUse; + }else{ + powerNeeded += consumer.block().basePowerUse + consumer.entity.power.extraUse; + } } float totalAccumulator = 0f; @@ -64,9 +68,13 @@ public class PowerGraph{ powerProduced += accumulatorUsed; } - float powerSatisfaction = Math.max(1, powerProduced / powerNeeded); + float powerSatisfaction = Math.min(1, powerProduced / powerNeeded); for(Tile consumer : producers){ - consumer.power.satisfaction = powerSatisfaction; + if(consumer.block().bufferedPowerConsumer){ + consumer.power.satisfaction += (1 - consumer.power.satisfaction) * powerSatisfaction; + }else{ + consumer.power.satisfaction = powerSatisfaction; + } } if(powerProduced > powerNeeded){