Files
Mekanism-Community-Edition/src/main/java/mekanism/common/HeatNetwork.java
T

103 lines
2.8 KiB
Java
Raw Normal View History

2014-12-19 04:46:23 +00:00
package mekanism.common;
import java.util.Collection;
import java.util.Set;
import mekanism.api.IHeatTransfer;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.util.UnitDisplayUtils.TemperatureUnit;
import mekanism.common.multipart.MultipartTransmitter;
import mekanism.common.util.MekanismUtils;
2014-12-19 04:46:23 +00:00
import cpw.mods.fml.common.FMLCommonHandler;
public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
{
public double meanTemp = 0;
public double heatLost = 0;
public double heatTransferred = 0;
2015-04-01 02:42:36 +01:00
public HeatNetwork() {}
2014-12-19 04:46:23 +00:00
2015-04-01 02:42:36 +01:00
public HeatNetwork(Collection<HeatNetwork> networks)
2014-12-19 04:46:23 +00:00
{
for(HeatNetwork net : networks)
{
if(net != null)
{
2015-04-01 02:42:36 +01:00
adoptTransmittersAndAcceptorsFrom(net);
2014-12-19 04:46:23 +00:00
net.deregister();
}
}
register();
}
@Override
public String getNeededInfo()
{
return "Not Applicable";
}
@Override
public String getStoredInfo()
{
return MekanismUtils.getTemperatureDisplay(meanTemp, TemperatureUnit.KELVIN) + " above ambient";
2014-12-19 04:46:23 +00:00
}
@Override
public String getFlowInfo()
{
return MekanismUtils.getTemperatureDisplay(heatTransferred, TemperatureUnit.KELVIN) + " transferred to acceptors, " + MekanismUtils.getTemperatureDisplay(heatLost, TemperatureUnit.KELVIN) + " lost to environment, " + (heatTransferred + heatLost == 0 ? "" : heatTransferred / (heatTransferred + heatLost) * 100 + "% efficiency");
2014-12-19 04:46:23 +00:00
}
@Override
2015-04-01 02:42:36 +01:00
public void absorbBuffer(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter) {}
2014-12-19 04:46:23 +00:00
@Override
2015-04-01 02:42:36 +01:00
public void clampBuffer() {}
2014-12-19 04:46:23 +00:00
@Override
2015-04-01 02:42:36 +01:00
public Set<IHeatTransfer> getAcceptors(Object data)
2014-12-19 04:46:23 +00:00
{
2015-04-01 02:42:36 +01:00
return null;
2014-12-19 04:46:23 +00:00
}
@Override
public void onUpdate()
{
super.onUpdate();
double newSumTemp = 0;
double newHeatLost = 0;
double newHeatTransferred = 0;
if(FMLCommonHandler.instance().getEffectiveSide().isServer())
{
2015-04-01 02:42:36 +01:00
for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters)
2014-12-19 04:46:23 +00:00
{
if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart() instanceof IHeatTransfer)
2014-12-19 04:46:23 +00:00
{
IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart();
2014-12-19 04:46:23 +00:00
double[] d = heatTransmitter.simulateHeat();
newHeatTransferred += d[0];
newHeatLost += d[1];
}
}
2015-04-01 02:42:36 +01:00
for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters)
2014-12-19 04:46:23 +00:00
{
if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart() instanceof IHeatTransfer)
2014-12-19 04:46:23 +00:00
{
IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart();
2014-12-19 04:46:23 +00:00
newSumTemp += heatTransmitter.applyTemperatureChange();
}
}
}
2014-12-19 04:46:23 +00:00
heatLost = newHeatLost;
heatTransferred = newHeatTransferred;
meanTemp = newSumTemp / transmitters.size();
}
}