package mods.eln.sixnode.lampsupply; import mods.eln.cable.CableRenderDescriptor; import mods.eln.cable.CableRenderType; import mods.eln.misc.*; 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.sixnode.electricalcable.ElectricalCableDescriptor; 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; import java.util.ArrayList; public class LampSupplyRender extends SixNodeElementRender { LampSupplyDescriptor descriptor; Coordonate coord; PhysicalInterpolator interpolator; public ArrayList<LampSupplyElement.Entry> entries = new ArrayList<LampSupplyElement.Entry>(); CableRenderDescriptor cableRender; SixNodeElementInventory inventory = new SixNodeElementInventory(1, 64, this); public LampSupplyRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) { super(tileEntity, side, descriptor); this.descriptor = (LampSupplyDescriptor) descriptor; interpolator = new PhysicalInterpolator(0.4f, 8.0f, 0.9f, 0.2f); coord = new Coordonate(tileEntity); for (int i = 0; i < ((LampSupplyDescriptor) descriptor).channelCount; i++) { entries.add(new LampSupplyElement.Entry("", "", 2)); } } @Override public void draw() { super.draw(); float[] pinDistances = new float[]{4.98f, 4.98f, 5.98f, 5.98f}; if (side.isY()) { drawPowerPin(front.rotate4PinDistances(pinDistances)); front.glRotateOnX(); } else { drawPowerPin(pinDistances); LRDU.Down.glRotateOnX(); } descriptor.draw(interpolator.get()); } @Override public void refresh(float deltaT) { if (!Utils.isPlayerAround(tileEntity.getWorldObj(), coord.getAxisAlignedBB(0))) interpolator.setTarget(0f); else interpolator.setTarget(1f); interpolator.step(deltaT); } @Override public CableRenderDescriptor getCableRender(LRDU lrdu) { return cableRender; } @Override public GuiScreen newGuiDraw(Direction side, EntityPlayer player) { return new LampSupplyGui(this, player, inventory); } @Override public void publishUnserialize(DataInputStream stream) { super.publishUnserialize(stream); try { for (LampSupplyElement.Entry e : entries) { e.powerChannel = stream.readUTF(); e.wirelessChannel = stream.readUTF(); e.aggregator = stream.readChar(); } ItemStack cableStack = Utils.unserialiseItemStack(stream); if (cableStack != null) { ElectricalCableDescriptor desc = (ElectricalCableDescriptor) ElectricalCableDescriptor.getDescriptor(cableStack); cableRender = desc.render; } else { cableRender = null; } } catch (IOException e) { e.printStackTrace(); } } @Override public void newConnectionType(CableRenderType connectionType) { for (int idx = 0; idx < 4; idx++) { connectionType.startAt[idx] = 5 / 16f; } } }