From 549cbd5219a5f01f9c1967364b6cebfa06a164f4 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Wed, 15 Oct 2014 18:45:16 +0200 Subject: [PATCH] clean up engine and fuel code to fully use RF --- api/buildcraft/api/fuels/IFuel.java | 2 +- api/buildcraft/api/fuels/IFuelManager.java | 2 +- common/buildcraft/energy/TileEngine.java | 38 ++++++------------- .../buildcraft/energy/TileEngineCreative.java | 8 ++-- common/buildcraft/energy/TileEngineIron.java | 8 ++-- .../buildcraft/energy/TileEngineLegacy.java | 8 ++-- common/buildcraft/energy/TileEngineStone.java | 12 +++--- common/buildcraft/energy/TileEngineWood.java | 16 ++++---- .../buildcraft/energy/fuels/FuelManager.java | 8 ++-- common/buildcraft/energy/gui/GuiEngine.java | 6 +-- 10 files changed, 47 insertions(+), 61 deletions(-) diff --git a/api/buildcraft/api/fuels/IFuel.java b/api/buildcraft/api/fuels/IFuel.java index 368e3097..c3e29280 100644 --- a/api/buildcraft/api/fuels/IFuel.java +++ b/api/buildcraft/api/fuels/IFuel.java @@ -15,5 +15,5 @@ public interface IFuel { int getTotalBurningTime(); - float getPowerPerCycle(); + int getPowerPerCycle(); } diff --git a/api/buildcraft/api/fuels/IFuelManager.java b/api/buildcraft/api/fuels/IFuelManager.java index d64bf41e..50ac9341 100644 --- a/api/buildcraft/api/fuels/IFuelManager.java +++ b/api/buildcraft/api/fuels/IFuelManager.java @@ -15,7 +15,7 @@ import net.minecraftforge.fluids.Fluid; public interface IFuelManager { IFuel addFuel(IFuel fuel); - IFuel addFuel(Fluid fluid, float powerPerCycle, int totalBurningTime); + IFuel addFuel(Fluid fluid, int powerPerCycle, int totalBurningTime); Collection getFuels(); diff --git a/common/buildcraft/energy/TileEngine.java b/common/buildcraft/energy/TileEngine.java index af200b21..cd148d58 100644 --- a/common/buildcraft/energy/TileEngine.java +++ b/common/buildcraft/energy/TileEngine.java @@ -76,10 +76,10 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto public static final float MIN_HEAT = 20; public static final float IDEAL_HEAT = 100; public static final float MAX_HEAT = 250; - public double currentOutput = 0; + public int currentOutput = 0; public boolean isRedstonePowered = false; public float progress; - public double energy; + public int energy; public float heat = MIN_HEAT; @NetworkData public EnergyStage energyStage = EnergyStage.BLUE; @@ -433,7 +433,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto orientation = ForgeDirection.getOrientation(data.getInteger("orientation")); progress = data.getFloat("progress"); - energy = data.getDouble("energy"); + energy = data.getInteger("energy"); heat = data.getFloat("heat"); if (data.hasKey("constantPower")) { constantPower = data.getBoolean("constantPower"); @@ -446,7 +446,7 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto data.setInteger("orientation", orientation.ordinal()); data.setFloat("progress", progress); - data.setDouble("energy", energy); + data.setInteger("energy", energy); data.setFloat("heat", heat); data.setBoolean("constantPower", constantPower); } @@ -489,14 +489,10 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto @Override public void doWork(PowerHandler workProvider) { - if (worldObj.isRemote) { - return; - } - - addEnergy(powerHandler.useEnergy(1, maxEnergyReceived(), true) * 0.95F); + } - public void addEnergy(double addition) { + public void addEnergy(int addition) { energy += addition; if (getEnergyStage() == EnergyStage.OVERHEAT) { @@ -557,23 +553,23 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto } } - public abstract double getMaxEnergy(); + public abstract int getMaxEnergy(); - public double minEnergyReceived() { + public int minEnergyReceived() { return 20; } - public abstract double maxEnergyReceived(); + public abstract int maxEnergyReceived(); - public abstract double maxEnergyExtracted(); + public abstract int maxEnergyExtracted(); public abstract float explosionRange(); - public double getEnergyStored() { + public int getEnergyStored() { return energy; } - public abstract double getCurrentOutput(); + public abstract int getCurrentOutput(); @Override public LinkedList getTriggers() { @@ -619,16 +615,6 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { return 0; - - /*if(!(from == orientation)) return 0; - - int energyRF = (int)Math.round(10 * energy); - int energyExtracted = Math.min(maxExtract, energyRF); - if(!simulate) { - if(energyExtracted == energyRF) energy = 0; - else energy -= (double)energyExtracted / 10.0; - } - return energyExtracted;*/ } @Override diff --git a/common/buildcraft/energy/TileEngineCreative.java b/common/buildcraft/energy/TileEngineCreative.java index abbc5c7e..1fc3ff0b 100644 --- a/common/buildcraft/energy/TileEngineCreative.java +++ b/common/buildcraft/energy/TileEngineCreative.java @@ -101,22 +101,22 @@ public class TileEngineCreative extends TileEngine { } @Override - public double maxEnergyReceived() { + public int maxEnergyReceived() { return getCurrentOutput(); } @Override - public double maxEnergyExtracted() { + public int maxEnergyExtracted() { return getCurrentOutput(); } @Override - public double getMaxEnergy() { + public int getMaxEnergy() { return getCurrentOutput(); } @Override - public double getCurrentOutput() { + public int getCurrentOutput() { return powerMode.maxPower; } diff --git a/common/buildcraft/energy/TileEngineIron.java b/common/buildcraft/energy/TileEngineIron.java index c3876995..b1f7ed86 100644 --- a/common/buildcraft/energy/TileEngineIron.java +++ b/common/buildcraft/energy/TileEngineIron.java @@ -403,22 +403,22 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan } @Override - public double maxEnergyReceived() { + public int maxEnergyReceived() { return 20000; } @Override - public double maxEnergyExtracted() { + public int maxEnergyExtracted() { return 5000; } @Override - public double getMaxEnergy() { + public int getMaxEnergy() { return 100000; } @Override - public double getCurrentOutput() { + public int getCurrentOutput() { if (currentFuel == null) { return 0; } else { diff --git a/common/buildcraft/energy/TileEngineLegacy.java b/common/buildcraft/energy/TileEngineLegacy.java index 408bea88..cb4ba608 100644 --- a/common/buildcraft/energy/TileEngineLegacy.java +++ b/common/buildcraft/energy/TileEngineLegacy.java @@ -51,12 +51,12 @@ public class TileEngineLegacy extends TileEngine { } @Override - public double getMaxEnergy() { + public int getMaxEnergy() { return 1; } @Override - public double maxEnergyReceived() { + public int maxEnergyReceived() { return 0; } @@ -71,12 +71,12 @@ public class TileEngineLegacy extends TileEngine { } @Override - public double getCurrentOutput() { + public int getCurrentOutput() { return 1; } @Override - public double maxEnergyExtracted() { + public int maxEnergyExtracted() { return 1; } } diff --git a/common/buildcraft/energy/TileEngineStone.java b/common/buildcraft/energy/TileEngineStone.java index 0b89bd01..9e37cbc1 100644 --- a/common/buildcraft/energy/TileEngineStone.java +++ b/common/buildcraft/energy/TileEngineStone.java @@ -76,7 +76,7 @@ public class TileEngineStone extends TileEngineWithInventory { if (burnTime > 0) { burnTime--; - double output = getCurrentOutput(); + int output = getCurrentOutput(); if (!constantPower) { currentOutput = output; // Comment out for constant power @@ -142,25 +142,25 @@ public class TileEngineStone extends TileEngineWithInventory { } @Override - public double maxEnergyReceived() { + public int maxEnergyReceived() { return 2000; } @Override - public double maxEnergyExtracted() { + public int maxEnergyExtracted() { return 1000; } @Override - public double getMaxEnergy() { + public int getMaxEnergy() { return 10000; } @Override - public double getCurrentOutput() { + public int getCurrentOutput() { double e = TARGET_OUTPUT * getMaxEnergy() - energy; esum = MathUtils.clamp(esum + e, -eLimit, eLimit); - return MathUtils.clamp(e * kp + esum * ki, MIN_OUTPUT, MAX_OUTPUT); + return (int)Math.round(MathUtils.clamp(e * kp + esum * ki, MIN_OUTPUT, MAX_OUTPUT)); } @Override diff --git a/common/buildcraft/energy/TileEngineWood.java b/common/buildcraft/energy/TileEngineWood.java index c33d0597..9c4fc921 100644 --- a/common/buildcraft/energy/TileEngineWood.java +++ b/common/buildcraft/energy/TileEngineWood.java @@ -19,7 +19,7 @@ import buildcraft.transport.TileGenericPipe; public class TileEngineWood extends TileEngine { - public static final float OUTPUT = 1; + public static final int OUTPUT = 1; @Override public ResourceLocation getBaseTexture() { @@ -37,12 +37,12 @@ public class TileEngineWood extends TileEngine { } @Override - public double minEnergyReceived() { + public int minEnergyReceived() { return 0; } @Override - public double maxEnergyReceived() { + public int maxEnergyReceived() { return 500; } @@ -100,18 +100,18 @@ public class TileEngineWood extends TileEngine { } @Override - public double getMaxEnergy() { + public int getMaxEnergy() { return 1000; } @Override - public double getCurrentOutput() { + public int getCurrentOutput() { return OUTPUT; } @Override - public double maxEnergyExtracted() { - return 1 + PowerHandler.PerditionCalculator.MIN_POWERLOSS; + public int maxEnergyExtracted() { + return 1; } // TODO: HACK @@ -126,7 +126,7 @@ public class TileEngineWood extends TileEngine { if (tile instanceof TileGenericPipe && ((TileGenericPipe) tile).getPipeType() != PipeType.POWER) { super.sendPower(); } else { // pretend we're sending out our powers - this.energy = 0.0; + this.energy = 0; } } } diff --git a/common/buildcraft/energy/fuels/FuelManager.java b/common/buildcraft/energy/fuels/FuelManager.java index 35bdcd01..b958ca12 100644 --- a/common/buildcraft/energy/fuels/FuelManager.java +++ b/common/buildcraft/energy/fuels/FuelManager.java @@ -32,7 +32,7 @@ public final class FuelManager implements IFuelManager { } @Override - public IFuel addFuel(Fluid fluid, float powerPerCycle, int totalBurningTime) { + public IFuel addFuel(Fluid fluid, int powerPerCycle, int totalBurningTime) { return addFuel(new BCFuel(fluid, powerPerCycle, totalBurningTime)); } @@ -53,10 +53,10 @@ public final class FuelManager implements IFuelManager { private static final class BCFuel implements IFuel { private final Fluid fluid; - private final float powerPerCycle; + private final int powerPerCycle; private final int totalBurningTime; - public BCFuel(Fluid fluid, float powerPerCycle, int totalBurningTime) { + public BCFuel(Fluid fluid, int powerPerCycle, int totalBurningTime) { this.fluid = fluid; this.powerPerCycle = powerPerCycle; this.totalBurningTime = totalBurningTime; @@ -73,7 +73,7 @@ public final class FuelManager implements IFuelManager { } @Override - public float getPowerPerCycle() { + public int getPowerPerCycle() { return powerPerCycle; } } diff --git a/common/buildcraft/energy/gui/GuiEngine.java b/common/buildcraft/energy/gui/GuiEngine.java index d6ce8f37..87c85ca0 100644 --- a/common/buildcraft/energy/gui/GuiEngine.java +++ b/common/buildcraft/energy/gui/GuiEngine.java @@ -53,10 +53,10 @@ public abstract class GuiEngine extends GuiBuildCraft { fontRendererObj.drawStringWithShadow(StringUtils.localize("gui.energy"), x + 22, y + 8, headerColour); fontRendererObj.drawStringWithShadow(StringUtils.localize("gui.currentOutput") + ":", x + 22, y + 20, subheaderColour); - fontRendererObj.drawString(String.format("%d RF/t", (int) Math.round(engine.getCurrentOutput() * 10)), + fontRendererObj.drawString(String.format("%d RF/t", engine.getCurrentOutput()), x + 22, y + 32, textColour); fontRendererObj.drawStringWithShadow(StringUtils.localize("gui.stored") + ":", x + 22, y + 44, subheaderColour); - fontRendererObj.drawString(String.format("%d RF", (int) Math.round(engine.getEnergyStored() * 10)), x + 22, + fontRendererObj.drawString(String.format("%d RF", engine.getEnergyStored()), x + 22, y + 56, textColour); fontRendererObj.drawStringWithShadow(StringUtils.localize("gui.heat") + ":", x + 22, y + 68, subheaderColour); fontRendererObj.drawString(String.format("%.2f \u00B0C", engine.getHeat()), x + 22, y + 80, textColour); @@ -65,7 +65,7 @@ public abstract class GuiEngine extends GuiBuildCraft { @Override public String getTooltip() { - return String.format("%d RF/t", (int) Math.round(engine.getCurrentOutput() * 10)); + return String.format("%d RF/t", engine.getCurrentOutput()); } }