| package mekanism.common; |
| |
| import java.util.Collection; |
| import java.util.Set; |
| |
| import mekanism.api.Coord4D; |
| import mekanism.api.IHeatTransfer; |
| import mekanism.api.transmitters.DynamicNetwork; |
| import mekanism.api.transmitters.IGridTransmitter; |
| import mekanism.api.util.UnitDisplayUtils.TemperatureUnit; |
| import mekanism.common.capabilities.Capabilities; |
| import mekanism.common.multipart.MultipartTransmitter; |
| //import mekanism.common.multipart.MultipartTransmitter; |
| import mekanism.common.util.MekanismUtils; |
| import net.minecraftforge.fml.common.FMLCommonHandler; |
| |
| import org.apache.commons.lang3.tuple.Pair; |
| |
| public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork> |
| { |
| public double meanTemp = 0; |
| |
| public double heatLost = 0; |
| public double heatTransferred = 0; |
| |
| public HeatNetwork() {} |
| |
| public HeatNetwork(Collection<HeatNetwork> networks) |
| { |
| for(HeatNetwork net : networks) |
| { |
| if(net != null) |
| { |
| adoptTransmittersAndAcceptorsFrom(net); |
| net.deregister(); |
| } |
| } |
| |
| register(); |
| } |
| |
| @Override |
| public String getNeededInfo() |
| { |
| return "Not Applicable"; |
| } |
| |
| @Override |
| public String getStoredInfo() |
| { |
| return MekanismUtils.getTemperatureDisplay(meanTemp, TemperatureUnit.KELVIN) + " above ambient"; |
| } |
| |
| @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"); |
| } |
| |
| @Override |
| public void absorbBuffer(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter) {} |
| |
| @Override |
| public void clampBuffer() {} |
| |
| @Override |
| public Set<Pair<Coord4D, IHeatTransfer>> getAcceptors(Object data) |
| { |
| return null; |
| } |
| |
| @Override |
| public void onUpdate() |
| { |
| super.onUpdate(); |
| |
| double newSumTemp = 0; |
| double newHeatLost = 0; |
| double newHeatTransferred = 0; |
| |
| if(FMLCommonHandler.instance().getEffectiveSide().isServer()) |
| { |
| for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters) |
| { |
| if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart().hasCapability(Capabilities.HEAT_TRANSFER_CAPABILITY, null)) |
| { |
| IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart().getCapability(Capabilities.HEAT_TRANSFER_CAPABILITY, null); |
| double[] d = heatTransmitter.simulateHeat(); |
| newHeatTransferred += d[0]; |
| newHeatLost += d[1]; |
| } |
| } |
| |
| for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters) |
| { |
| if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart().hasCapability(Capabilities.HEAT_TRANSFER_CAPABILITY, null)) |
| { |
| IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart().getCapability(Capabilities.HEAT_TRANSFER_CAPABILITY, null); |
| newSumTemp += heatTransmitter.applyTemperatureChange(); |
| } |
| } |
| } |
| |
| heatLost = newHeatLost; |
| heatTransferred = newHeatTransferred; |
| meanTemp = newSumTemp / transmitters.size(); |
| } |
| } |