package mods.eln.sixnode.electricalalarm; import mods.eln.Eln; import mods.eln.cable.CableRenderDescriptor; import mods.eln.misc.Direction; import mods.eln.misc.LRDU; import mods.eln.misc.RcInterpolator; import mods.eln.misc.Utils; import mods.eln.node.six.SixNodeDescriptor; 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 java.io.DataInputStream; import java.io.IOException; public class ElectricalAlarmRender extends SixNodeElementRender { ElectricalAlarmDescriptor descriptor; LRDU front; RcInterpolator interpol = new RcInterpolator(0.4f); float rotAlpha = 0; boolean warm = false; boolean mute = false; public ElectricalAlarmRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) { super(tileEntity, side, descriptor); this.descriptor = (ElectricalAlarmDescriptor) descriptor; } @Override public void draw() { super.draw(); if (side.isY()) { front.right().glRotateOnX(); drawSignalPin(LRDU.Down, descriptor.pinDistance); } else { drawSignalPin(front, descriptor.pinDistance); } descriptor.draw(warm, rotAlpha); } @Override public void refresh(float deltaT) { interpol.setTarget(warm ? descriptor.rotSpeed : 0f); interpol.step(deltaT); rotAlpha += interpol.get() * deltaT; } @Override public void publishUnserialize(DataInputStream stream) { super.publishUnserialize(stream); try { Byte b; b = stream.readByte(); front = LRDU.fromInt((b >> 4) & 3); warm = (b & 1) != 0 ? true : false; mute = stream.readBoolean(); Utils.println("WARM : " + warm); } catch (IOException e) { e.printStackTrace(); } } @Override public CableRenderDescriptor getCableRender(LRDU lrdu) { return Eln.instance.signalCableDescriptor.render; } @Override public GuiScreen newGuiDraw(Direction side, EntityPlayer player) { return new ElectricalAlarmGui(player, this); } }