package mods.eln.transparentnode.eggincubator;
import mods.eln.cable.CableRenderDescriptor;
import mods.eln.cable.CableRenderType;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
import mods.eln.misc.LRDUMask;
import mods.eln.misc.UtilsClient;
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 net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import java.io.DataInputStream;
import java.io.IOException;
public class EggIncubatorRender extends TransparentNodeElementRender {
TransparentNodeElementInventory inventory = new EggIncubatorInventory(1, 64, this);
EggIncubatorDescriptor descriptor;
float alpha = 0;
byte eggStackSize;
EntityItem egg;
public float voltage;
LRDUMask priConn = new LRDUMask(), secConn = new LRDUMask(), eConn = new LRDUMask();
CableRenderType cableRenderType;
public EggIncubatorRender(TransparentNodeEntity tileEntity, TransparentNodeDescriptor descriptor) {
super(tileEntity, descriptor);
this.descriptor = (EggIncubatorDescriptor) descriptor;
}
@Override
public void draw() {
GL11.glPushMatrix();
front.glRotateXnRef();
if (egg != null) {
UtilsClient.drawEntityItem(egg, 0.0f, -0.3f, 0.13f, alpha, 0.6f);
}
descriptor.draw(eggStackSize, (float) (voltage / descriptor.nominalVoltage));
GL11.glPopMatrix();
cableRenderType = drawCable(front.down(), descriptor.cable.render, eConn, cableRenderType);
}
@Override
public void refresh(float deltaT) {
alpha += deltaT * 60;
if (alpha >= 360) alpha -= 360;
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new EggIncubatorGuiDraw(player, inventory, this);
}
@Override
public void networkUnserialize(DataInputStream stream) {
super.networkUnserialize(stream);
try {
eggStackSize = stream.readByte();
if (eggStackSize != 0) {
egg = new EntityItem(this.tileEntity.getWorldObj(), 0, 0, 0, new ItemStack(Items.egg));
} else {
egg = null;
}
eConn.deserialize(stream);
voltage = stream.readFloat();
} catch (IOException e) {
e.printStackTrace();
}
cableRenderType = null;
}
@Override
public CableRenderDescriptor getCableRender(Direction side, LRDU lrdu) {
return descriptor.cable.render;
}
@Override
public void notifyNeighborSpawn() {
super.notifyNeighborSpawn();
cableRenderType = null;
}
}