package mods.eln.sixnode.powerinductorsix; import mods.eln.Eln; import mods.eln.item.FerromagneticCoreDescriptor; import mods.eln.misc.Direction; import mods.eln.misc.LRDU; import mods.eln.misc.Obj3D; import mods.eln.misc.Obj3D.Obj3DPart; import mods.eln.misc.VoltageLevelColor; import mods.eln.misc.series.ISerie; import mods.eln.node.six.SixNodeDescriptor; import mods.eln.sim.mna.misc.MnaConst; import mods.eln.wiki.Data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import org.lwjgl.opengl.GL11; import java.util.List; public class PowerInductorSixDescriptor extends SixNodeDescriptor { private Obj3D obj; Obj3DPart InductorBaseExtention, InductorCables, InductorCore, Base; ISerie serie; public PowerInductorSixDescriptor(String name, Obj3D obj, ISerie serie) { super(name, PowerInductorSixElement.class, PowerInductorSixRender.class); this.serie = serie; this.obj = obj; if (obj != null) { InductorBaseExtention = obj.getPart("InductorBaseExtention"); InductorCables = obj.getPart("InductorCables"); InductorCore = obj.getPart("InductorCore"); Base = obj.getPart("Base"); } voltageLevelColor = VoltageLevelColor.Neutral; } public double getlValue(int cableCount) { if (cableCount == 0) return 0; return serie.getValue(cableCount - 1); } public double getlValue(IInventory inventory) { ItemStack core = inventory.getStackInSlot(PowerInductorSixContainer.cableId); if (core == null) return getlValue(0); else return getlValue(core.stackSize); } public double getRsValue(IInventory inventory) { ItemStack core = inventory.getStackInSlot(PowerInductorSixContainer.coreId); if (core == null) return MnaConst.highImpedance; FerromagneticCoreDescriptor coreDescriptor = (FerromagneticCoreDescriptor) FerromagneticCoreDescriptor.getDescriptor(core); double coreFactor = coreDescriptor.cableMultiplicator; return Eln.instance.lowVoltageCableDescriptor.electricalRs * coreFactor; } public void setParent(net.minecraft.item.Item item, int damage) { super.setParent(item, damage); Data.addEnergy(newItemStack()); } void draw() { //UtilsClient.disableCulling(); //UtilsClient.disableTexture(); if (null != Base) Base.draw(); if (null != InductorBaseExtention) InductorBaseExtention.draw(); if (null != InductorCables) InductorCables.draw(); if (null != InductorCore) InductorCore.draw(); } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type != ItemRenderType.INVENTORY; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return true; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { if (type != ItemRenderType.INVENTORY) { GL11.glTranslatef(0.0f, 0.0f, -0.2f); GL11.glScalef(1.25f, 1.25f, 1.25f); GL11.glRotatef(-90.f, 0.f, 1.f, 0.f); draw(); } else { super.renderItem(type, item, data); } } @Override public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) { super.addInformation(itemStack, entityPlayer, list, par4); } @Override public LRDU getFrontFromPlace(Direction side, EntityPlayer player) { return super.getFrontFromPlace(side, player).left(); } }