clean up engine and fuel code to fully use RF

This commit is contained in:
asiekierka 2014-10-15 18:45:16 +02:00
parent c3a12170c7
commit 549cbd5219
10 changed files with 47 additions and 61 deletions

View file

@ -15,5 +15,5 @@ public interface IFuel {
int getTotalBurningTime();
float getPowerPerCycle();
int getPowerPerCycle();
}

View file

@ -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();

View file

@ -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

View file

@ -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;
}

View file

@ -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 {

View file

@ -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;
}
}

View file

@ -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

View file

@ -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;
}
}
}

View file

@ -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;
}
}

View file

@ -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());
}
}