package mods.eln.sixnode.electricaldatalogger;
import mods.eln.Eln;
import mods.eln.cable.CableRenderDescriptor;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
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 net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import org.lwjgl.opengl.GL11;
import java.io.DataInputStream;
import java.io.IOException;
public class ElectricalDataLoggerRender extends SixNodeElementRender {
SixNodeElementInventory inventory = new SixNodeElementInventory(2, 64, this);
ElectricalDataLoggerDescriptor descriptor;
long time;
public boolean pause;
DataLogs log = new DataLogs(ElectricalDataLoggerElement.logsSizeMax);
boolean waitFistSync = true;
public ElectricalDataLoggerRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) {
super(tileEntity, side, descriptor);
this.descriptor = (ElectricalDataLoggerDescriptor) descriptor;
time = System.currentTimeMillis();
clientSend(ElectricalDataLoggerElement.newClientId);
}
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
return Eln.instance.signalCableDescriptor.render;
}
@Override
public void draw() {
super.draw();
if (!descriptor.onFloor) {
if (side.isY()) {
GL11.glPushMatrix();
front.glRotateOnX();
drawSignalPin(LRDU.Right, new float[]{0, 5.67f, 0, 0});
GL11.glPopMatrix();
} else {
drawSignalPin(front.inverse(), new float[]{6.37f, 6.37f, 5.67f, 6.12f});
}
}
descriptor.draw(log, side, front, this.tileEntity.xCoord, this.tileEntity.zCoord);
}
/*
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
return descriptor.cableRender;
}
*/
@Override
public void publishUnserialize(DataInputStream stream) {
super.publishUnserialize(stream);
try {
log.unitType = stream.readByte();
pause = stream.readBoolean();
log.samplingPeriod = stream.readFloat();
log.maxValue = stream.readFloat();
log.minValue = stream.readFloat();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void serverPacketUnserialize(DataInputStream stream) throws IOException {
byte header = stream.readByte();
switch (header) {
case ElectricalDataLoggerElement.toClientLogsAdd:
case ElectricalDataLoggerElement.toClientLogsClear:
if (header == ElectricalDataLoggerElement.toClientLogsClear) {
log.reset();
waitFistSync = false;
}
int size = stream.available();
while (size != 0) {
size--;
log.write(stream.readByte());
}
// Utils.println(log);
break;
}
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new ElectricalDataLoggerGui(player, inventory, this);
}
}