package mods.eln.sixnode.batterycharger;
import mods.eln.cable.CableRenderDescriptor;
import mods.eln.misc.Coordonate;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
import mods.eln.misc.Utils;
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.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import org.lwjgl.opengl.GL11;
import java.io.DataInputStream;
import java.io.IOException;
public class BatteryChargerRender extends SixNodeElementRender {
BatteryChargerDescriptor descriptor;
Coordonate coord;
boolean[] charged = new boolean[]{false, false, false, false};
boolean[] batteryPresence = new boolean[]{false, false, false, false};
float alpha = 0;
EntityItem[] b = new EntityItem[4];
boolean powerOn;
private float voltage;
public BatteryChargerRender(SixNodeEntity tileEntity, Direction side, SixNodeDescriptor descriptor) {
super(tileEntity, side, descriptor);
this.descriptor = (BatteryChargerDescriptor) descriptor;
coord = new Coordonate(tileEntity);
}
@Override
public void draw() {
super.draw();
drawPowerPin(descriptor.pinDistance);
if (side.isY()) {
front.right().glRotateOnX();
}
drawEntityItem(b[0], 0.1875, 0.15625, 0.15625, alpha, 0.2f);
drawEntityItem(b[1], 0.1875, 0.15625, -0.15625, alpha, 0.2f);
drawEntityItem(b[2], 0.1875, -0.15625, 0.15625, alpha, 0.2f);
drawEntityItem(b[3], 0.1875, -0.15625, -0.15625, alpha, 0.2f);
descriptor.draw(batteryPresence, charged);
}
@Override
public void refresh(float deltaT) {
alpha += 90 * deltaT;
if (alpha > 360) alpha -= 360;
}
public void drawEntityItem(EntityItem entityItem, double x, double y, double z, float roty, float scale) {
if (entityItem == null) return;
entityItem.hoverStart = 0.0f;
entityItem.rotationYaw = 0.0f;
entityItem.motionX = 0.0;
entityItem.motionY = 0.0;
entityItem.motionZ = 0.0;
//scale *= 10;
Render var10;
var10 = RenderManager.instance.getEntityRenderObject(entityItem);
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glRotatef(90, 0f, 1f, 0f);
GL11.glRotatef(roty, 0, 1, 0);
GL11.glScalef(scale, scale, scale);
GL11.glTranslatef(0.0f, -0.25f, 0.0f);
var10.doRender(entityItem, 0, 0, 0, 0, 0);
GL11.glPopMatrix();
}
@Override
public CableRenderDescriptor getCableRender(LRDU lrdu) {
return descriptor.cable.render;
}
@Override
public GuiScreen newGuiDraw(Direction side, EntityPlayer player) {
return new BatteryChargerGui(this, player, inventory);
}
@Override
public void publishUnserialize(DataInputStream stream) {
super.publishUnserialize(stream);
try {
powerOn = stream.readBoolean();
voltage = stream.readFloat();
for (int idx = 0; idx < 4; idx++) {
b[idx] = Utils.unserializeItemStackToEntityItem(stream, b[idx], tileEntity);
}
byte temp = stream.readByte();
for (int idx = 0; idx < 4; idx++) {
charged[idx] = (temp & 1) != 0;
temp = (byte) (temp >> 1);
}
temp = stream.readByte();
for (int idx = 0; idx < 4; idx++) {
batteryPresence[idx] = (temp & 1) != 0;
temp = (byte) (temp >> 1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
SixNodeElementInventory inventory = new SixNodeElementInventory(5, 64, this);
}