package mods.eln.transparentnode.electricalfurnace;
import mods.eln.Eln;
import mods.eln.client.FrameTime;
import mods.eln.misc.Direction;
import mods.eln.misc.Utils;
import mods.eln.node.transparent.TransparentNodeDescriptor;
import mods.eln.node.transparent.TransparentNodeElementInventory;
import mods.eln.node.transparent.TransparentNodeElementRender;
import mods.eln.node.transparent.TransparentNodeEntity;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class ElectricalFurnaceRender extends TransparentNodeElementRender {
TransparentNodeElementInventory inventory = new ElectricalFurnaceInventory(5, 64, this);
public float temperature = 0;
public boolean powerOn, heatingCorpOn;
//float temperatureTarget;
EntityItem entityItemIn = null;
long time;
float processState, processStatePerSecond;
float counter = 0;
short heatingCorpResistorP = 0;
public boolean temperatureTargetSyncNew = false;
public float temperatureTargetSyncValue = -1234;
public boolean autoShutDown;
float voltage;
public ElectricalFurnaceRender(TransparentNodeEntity tileEntity, TransparentNodeDescriptor descriptor) {
super(tileEntity, descriptor);
time = System.currentTimeMillis();
}
@Override
public void draw() {
front.glRotateXnRef();
Eln.obj.draw("ElectricFurnace", "furnace");
//ClientProxy.obj.draw("ELFURNACE");
drawEntityItem(entityItemIn, -0.1, -0.20, 0, counter, 0.8f);
}
@Override
public void refresh(float deltaT) {
processState += processStatePerSecond * FrameTime.getNotCaped2();
if (processState > 1f) processState = 1f;
counter += (System.currentTimeMillis() - time) * 0.001 * 360 / 4;
if (counter > 360) counter -= 360;
time = System.currentTimeMillis();
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new ElectricalFurnaceGuiDraw(player, inventory, this);
}
@Override
public void networkUnserialize(DataInputStream stream) {
super.networkUnserialize(stream);
short read;
try {
Byte b;
b = stream.readByte();
powerOn = (b & 1) != 0;
heatingCorpOn = (b & 2) != 0;
float temperatureTargetIncoming = stream.readShort();
if (temperatureTargetIncoming != temperatureTargetSyncValue) {
temperatureTargetSyncValue = temperatureTargetIncoming;
temperatureTargetSyncNew = true;
}
temperature = stream.readShort();
if ((read = stream.readShort()) == -1) {
entityItemIn = null;
stream.readShort();
} else {
entityItemIn = new EntityItem(tileEntity.getWorldObj(), tileEntity.xCoord + 0.5, tileEntity.yCoord + 0.5, tileEntity.zCoord + 1.2, Utils.newItemStack(read, 1, stream.readShort()));
}
heatingCorpResistorP = stream.readShort();
voltage = stream.readFloat();
processState = stream.readFloat();
processStatePerSecond = stream.readFloat();
autoShutDown = stream.readBoolean();
} catch (IOException e) {
e.printStackTrace();
}
}
public void clientSetPowerOn(boolean value) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream stream = new DataOutputStream(bos);
preparePacketForServer(stream);
stream.writeByte(ElectricalFurnaceElement.unserializePowerOnId);
stream.writeByte(value ? 1 : 0);
sendPacketToServer(bos);
} catch (IOException e) {
e.printStackTrace();
}
}
public void clientSetTemperatureTarget(float value) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream stream = new DataOutputStream(bos);
preparePacketForServer(stream);
stream.writeByte(ElectricalFurnaceElement.unserializeTemperatureTarget);
stream.writeFloat(value);
sendPacketToServer(bos);
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean getPowerOn() {
return powerOn;
}
}