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);
|
||||
|
||||
private int burnTime = 0;
|
||||
private float coolingBuffer = 0.0f;
|
||||
|
||||
private TankManager<Tank> tankManager = new TankManager<Tank>();
|
||||
private IFuel currentFuel;
|
||||
|
@ -240,6 +241,21 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan
|
|||
private void coolEngine(float 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();
|
||||
if (coolant == null) {
|
||||
return;
|
||||
|
@ -250,18 +266,8 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan
|
|||
if (currentCoolant != null) {
|
||||
float cooling = currentCoolant.getDegreesCoolingPerMB(heat);
|
||||
cooling /= getBiomeTempScalar();
|
||||
|
||||
if (cooling > extraHeat) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (coolantAmount * cooling > extraHeat) {
|
||||
tankCoolant.drain(Math.round(extraHeat / cooling), true);
|
||||
heat -= extraHeat;
|
||||
} else {
|
||||
tankCoolant.drain(coolantAmount, true);
|
||||
heat -= coolantAmount * cooling;
|
||||
}
|
||||
coolingBuffer += coolantAmount * cooling;
|
||||
tankCoolant.drain(coolantAmount, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue