clean up engine and fuel code to fully use RF
This commit is contained in:
parent
c3a12170c7
commit
549cbd5219
10 changed files with 47 additions and 61 deletions
|
@ -15,5 +15,5 @@ public interface IFuel {
|
|||
|
||||
int getTotalBurningTime();
|
||||
|
||||
float getPowerPerCycle();
|
||||
int getPowerPerCycle();
|
||||
}
|
||||
|
|
|
@ -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<IFuel> getFuels();
|
||||
|
||||
|
|
|
@ -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<ITrigger> 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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue