Merge pull request #2542 from viliml/patch-3
Add a cooling buffer, fix #2530
This commit is contained in:
commit
c5fb869bbc
1 changed files with 18 additions and 12 deletions
|
@ -47,6 +47,7 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan
|
||||||
public Tank tankCoolant = new Tank("tankCoolant", MAX_LIQUID, this);
|
public Tank tankCoolant = new Tank("tankCoolant", MAX_LIQUID, this);
|
||||||
|
|
||||||
private int burnTime = 0;
|
private int burnTime = 0;
|
||||||
|
private float coolingBuffer = 0.0f;
|
||||||
|
|
||||||
private TankManager<Tank> tankManager = new TankManager<Tank>();
|
private TankManager<Tank> tankManager = new TankManager<Tank>();
|
||||||
private IFuel currentFuel;
|
private IFuel currentFuel;
|
||||||
|
@ -240,6 +241,21 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan
|
||||||
private void coolEngine(float idealHeat) {
|
private void coolEngine(float idealHeat) {
|
||||||
float extraHeat = heat - idealHeat;
|
float extraHeat = heat - idealHeat;
|
||||||
|
|
||||||
|
if (coolingBuffer < extraHeat) {
|
||||||
|
fillCoolingBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (coolingBuffer >= extraHeat) {
|
||||||
|
coolingBuffer -= extraHeat;
|
||||||
|
heat -= extraHeat;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
heat -= coolingBuffer;
|
||||||
|
coolingBuffer = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillCoolingBuffer() {
|
||||||
FluidStack coolant = this.tankCoolant.getFluid();
|
FluidStack coolant = this.tankCoolant.getFluid();
|
||||||
if (coolant == null) {
|
if (coolant == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -250,18 +266,8 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan
|
||||||
if (currentCoolant != null) {
|
if (currentCoolant != null) {
|
||||||
float cooling = currentCoolant.getDegreesCoolingPerMB(heat);
|
float cooling = currentCoolant.getDegreesCoolingPerMB(heat);
|
||||||
cooling /= getBiomeTempScalar();
|
cooling /= getBiomeTempScalar();
|
||||||
|
coolingBuffer += coolantAmount * cooling;
|
||||||
if (cooling > extraHeat) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (coolantAmount * cooling > extraHeat) {
|
|
||||||
tankCoolant.drain(Math.round(extraHeat / cooling), true);
|
|
||||||
heat -= extraHeat;
|
|
||||||
} else {
|
|
||||||
tankCoolant.drain(coolantAmount, true);
|
tankCoolant.drain(coolantAmount, true);
|
||||||
heat -= coolantAmount * cooling;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue