diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 6cc2c79119..bdd664e40c 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -25,13 +25,12 @@ public abstract class BaseBlock extends MappableContent{ public boolean outputsLiquid = false; public boolean singleLiquid = true; - public boolean consumesPower = true; + public boolean consumesPower; public boolean outputsPower; public int itemCapacity; public float liquidCapacity = 10f; public float liquidFlowFactor = 4.9f; - public float powerCapacity = 10f; public Consumers consumes = new Consumers(); public Producers produces = new Producers(); @@ -40,6 +39,18 @@ public abstract class BaseBlock extends MappableContent{ return true; } + public float getPowerProduction(Tile tile){ + return 0f; + } + + public float getPowerConsumption(Tile tile){ + return 0f; + } + + public float usePower(Tile tile){ + return 0f; + } + /**Returns the amount of items this block can accept.*/ public int acceptStack(Item item, int amount, Tile tile, Unit source){ if(acceptItem(item, tile, tile) && hasItems && (source == null || source.getTeam() == tile.getTeam())){ @@ -98,19 +109,6 @@ public abstract class BaseBlock extends MappableContent{ tile.entity.liquids.add(liquid, amount); } - public boolean acceptPower(Tile tile, Tile source, float amount){ - return true; - } - - /**Returns how much power is accepted.*/ - public float addPower(Tile tile, float amount){ - float canAccept = Math.min(powerCapacity - tile.entity.power.amount, amount); - - tile.entity.power.amount += canAccept; - - return canAccept; - } - public void tryDumpLiquid(Tile tile, Liquid liquid){ Array proximity = tile.entity.proximity(); int dump = tile.getDump(); diff --git a/core/src/io/anuke/mindustry/world/blocks/BlockPart.java b/core/src/io/anuke/mindustry/world/blocks/BlockPart.java index fdb3e34561..476829489e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BlockPart.java +++ b/core/src/io/anuke/mindustry/world/blocks/BlockPart.java @@ -59,22 +59,6 @@ public class BlockPart extends Block{ block.handleLiquid(tile.getLinked(), source, liquid, amount); } - @Override - public float addPower(Tile tile, float amount){ - Block block = linked(tile); - if(block.hasPower){ - return block.addPower(tile.getLinked(), amount); - }else{ - return amount; - } - } - - @Override - public boolean acceptPower(Tile tile, Tile from, float amount){ - Block block = linked(tile); - return block.hasPower && block.acceptPower(tile.getLinked(), from, amount); - } - private Block linked(Tile tile){ return tile.getLinked().block(); } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java index fcbb35995e..135e53cea3 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumePower.java @@ -1,11 +1,12 @@ package io.anuke.mindustry.world.consumers; +import io.anuke.ucore.scene.ui.layout.Table; + import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.mindustry.world.meta.BlockStats; import io.anuke.mindustry.world.meta.StatUnit; -import io.anuke.ucore.scene.ui.layout.Table; public class ConsumePower extends Consume{ protected final float use; @@ -24,15 +25,9 @@ public class ConsumePower extends Consume{ return "icon-power"; } - @Override - public void update(Block block, TileEntity entity){ - if(entity.power == null) return; - entity.power.amount -= Math.min(use(block, entity), entity.power.amount); - } - @Override public boolean valid(Block block, TileEntity entity){ - return entity.power != null && entity.power.amount >= use(block, entity); + return entity.power.satisfaction >= 1; } @Override @@ -40,7 +35,11 @@ public class ConsumePower extends Consume{ stats.add(BlockStat.powerUse, use * 60f, StatUnit.powerSecond); } - protected float use(Block block, TileEntity entity){ - return Math.min(use * entity.delta(), block.powerCapacity); + public float getUse(Block block, TileEntity entity){ + return use * entity.delta(); + } + + public void addPower(float amount) { + entity.power.satisfaction = amount / getUse(); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumePowerExact.java b/core/src/io/anuke/mindustry/world/consumers/ConsumePowerExact.java deleted file mode 100644 index 8e9dfdd1b7..0000000000 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumePowerExact.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.anuke.mindustry.world.consumers; - -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.world.Block; - -public class ConsumePowerExact extends ConsumePower{ - - public ConsumePowerExact(float use){ - super(use); - } - - @Override - protected float use(Block block, TileEntity entity){ - return this.use; - } -} diff --git a/core/src/io/anuke/mindustry/world/modules/PowerModule.java b/core/src/io/anuke/mindustry/world/modules/PowerModule.java index 96b889209a..25dafb4ae2 100644 --- a/core/src/io/anuke/mindustry/world/modules/PowerModule.java +++ b/core/src/io/anuke/mindustry/world/modules/PowerModule.java @@ -8,14 +8,12 @@ import java.io.DataOutput; import java.io.IOException; public class PowerModule extends BlockModule{ - public float amount; + public float satisfaction; public PowerGraph graph = new PowerGraph(); public IntArray links = new IntArray(); @Override public void write(DataOutput stream) throws IOException{ - stream.writeFloat(amount); - stream.writeShort(links.size); for(int i = 0; i < links.size; i++){ stream.writeInt(links.get(i)); @@ -24,11 +22,6 @@ public class PowerModule extends BlockModule{ @Override public void read(DataInput stream) throws IOException{ - amount = stream.readFloat(); - if(Float.isNaN(amount)){ - amount = 0f; - } - short amount = stream.readShort(); for(int i = 0; i < amount; i++){ links.add(stream.readInt());