package mods.eln.sixnode.electricalrelay;
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.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 java.io.DataInputStream;
import java.io.IOException;
public class ElectricalRelayRender extends SixNodeElementRender {
SixNodeElementInventory inventory = new SixNodeElementInventory(0, 64, this);
ElectricalRelayDescriptor descriptor;
long time;
RcInterpolator interpolator;
boolean boot = true;
float switchAlpha = 0;
public boolean switchState, defaultOutput;
public ElectricalRelayRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) {
super(tileEntity, side, descriptor);
this.descriptor = (ElectricalRelayDescriptor) descriptor;
time = System.currentTimeMillis();
interpolator = new RcInterpolator(this.descriptor.speed);
}
@Override
public void draw() {
super.draw();
//UtilsClient.enableDepthTest();
drawSignalPin(front, new float[]{2.5f, 2.5f, 2.5f, 2.5f});
front.glRotateOnX();
descriptor.draw(interpolator.get());
}
@Override
public void refresh(float deltaT) {
interpolator.step(deltaT);
}
@Override
public void publishUnserialize(DataInputStream stream) {
super.publishUnserialize(stream);
try {
switchState = stream.readBoolean();
defaultOutput = stream.readBoolean();
interpolator.setTarget(switchState ? 1f : 0f);
} catch (IOException e) {
e.printStackTrace();
}
if (boot) {
interpolator.setValueFromTarget();
}
boot = false;
}
public void clientToogleDefaultOutput() {
clientSend(ElectricalRelayElement.toogleOutputDefaultId);
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new ElectricalRelayGui(player, this);
}
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
if (lrdu == front) return Eln.instance.signalCableDescriptor.render;
if (lrdu == front.left() || lrdu == front.right()) return descriptor.cable.render;
return null;
}
}