package mods.eln.sixnode.thermalsensor;
import mods.eln.Eln;
import mods.eln.cable.CableRenderDescriptor;
import mods.eln.generic.GenericItemBlockUsingDamageDescriptor;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
import mods.eln.misc.Utils;
import mods.eln.node.six.SixNodeDescriptor;
import mods.eln.node.six.SixNodeElementInventory;
import mods.eln.node.six.SixNodeElementRender;
import mods.eln.node.six.SixNodeEntity;
import mods.eln.sim.PhysicalConstant;
import mods.eln.sixnode.electricalcable.ElectricalCableDescriptor;
import mods.eln.sixnode.thermalcable.ThermalCableDescriptor;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import java.io.DataInputStream;
import java.io.IOException;
public class ThermalSensorRender extends SixNodeElementRender {
SixNodeElementInventory inventory = new SixNodeElementInventory(1, 64, this);
ThermalSensorDescriptor descriptor;
long time;
LRDU front;
int typeOfSensor = 0;
float lowValue = 0, highValue = 50;
ThermalCableDescriptor cable;
ElectricalCableDescriptor ecable;
public ThermalSensorRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) {
super(tileEntity, side, descriptor);
this.descriptor = (ThermalSensorDescriptor) descriptor;
time = System.currentTimeMillis();
}
@Override
public void draw() {
super.draw();
front.glRotateOnX();
descriptor.draw(ecable != null);
}
/*
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
return descriptor.cableRender;
}
*/
@Override
public void publishUnserialize(DataInputStream stream) {
super.publishUnserialize(stream);
try {
Byte b;
b = stream.readByte();
front = LRDU.fromInt((b >> 4) & 3);
typeOfSensor = b & 0x3;
lowValue = (float) (stream.readFloat() + PhysicalConstant.Tamb);
highValue = (float) (stream.readFloat() + PhysicalConstant.Tamb);
ItemStack stack = Utils.unserialiseItemStack(stream);
GenericItemBlockUsingDamageDescriptor desc = ThermalCableDescriptor.getDescriptor(stack);
if (desc instanceof ThermalCableDescriptor) cable = (ThermalCableDescriptor) desc;
else cable = null;
if (desc instanceof ElectricalCableDescriptor) ecable = (ElectricalCableDescriptor) desc;
else ecable = null;
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new ThermalSensorGui(player, inventory, this);
}
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
if (!descriptor.temperatureOnly) {
if (front.left() == lrdu && cable != null) return cable.render;
if (front.right() == lrdu && cable != null) return cable.render;
if (front == lrdu) return Eln.instance.signalCableDescriptor.render;
} else {
if (front.inverse() == lrdu && cable != null) return cable.render;
if (front.inverse() == lrdu && ecable != null) return ecable.render;
if (front == lrdu) return Eln.instance.signalCableDescriptor.render;
}
return null;
}
}