package mods.eln.sixnode.electricalsource;
import mods.eln.Eln;
import mods.eln.misc.*;
import mods.eln.misc.Obj3D.Obj3DPart;
import mods.eln.node.six.SixNodeDescriptor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import java.util.Collections;
import java.util.List;
import static mods.eln.i18n.I18N.tr;
public class ElectricalSourceDescriptor extends SixNodeDescriptor {
private Obj3D obj;
private Obj3DPart main;
private Obj3DPart led;
private boolean signalSource = false;
public ElectricalSourceDescriptor(String name, Obj3D obj, boolean signalSource) {
super(name, ElectricalSourceElement.class, ElectricalSourceRender.class);
this.obj = obj;
if (obj != null) {
main = obj.getPart("main");
led = obj.getPart("led");
}
this.signalSource = signalSource;
if (signalSource) {
voltageLevelColor = VoltageLevelColor.SignalVoltage;
} else {
voltageLevelColor = VoltageLevelColor.Neutral;
}
}
public boolean isSignalSource() {
return signalSource;
}
void draw(boolean ledOn) {
if (main != null) main.draw();
if (led != null) {
if (ledOn)
UtilsClient.drawLight(led);
else {
GL11.glPushMatrix();
GL11.glColor3f(0.1f, 0.1f, 0.1f);
led.draw();
GL11.glPopMatrix();
}
}
}
@Override
public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) {
super.addInformation(itemStack, entityPlayer, list, par4);
Collections.addAll(list, tr("Provides an ideal voltage source\nwithout energy or power limitation.").split("\\\n"));
list.add("");
list.add(tr("Internal resistance: %1$Ω", Eln.instance.lowVoltageCableDescriptor.electricalRs));
list.add("");
list.add(tr("Creative block."));
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch (type) {
case ENTITY:
draw(false);
break;
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
GL11.glPushMatrix();
GL11.glTranslatef(0.8f, 0.3f, 0.2f);
GL11.glRotatef(150, 0, 0, 1);
draw(false);
GL11.glPopMatrix();
break;
case INVENTORY:
case FIRST_PERSON_MAP:
if (signalSource) {
VoltageLevelColor.SignalVoltage.drawIconBackground(type);
}
super.renderItem(type, item, data);
break;
}
}
@Override
public LRDU getFrontFromPlace(Direction side, EntityPlayer player) {
if (signalSource) {
return super.getFrontFromPlace(side, player).left();
} else {
return super.getFrontFromPlace(side, player);
}
}
}