package mods.eln.sixnode.electricalsensor; import mods.eln.gui.*; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import java.text.NumberFormat; import java.text.ParseException; import static mods.eln.i18n.I18N.tr; public class ElectricalSensorGui extends GuiContainerEln { GuiButton validate, voltageType, currentType, powerType, dirType; GuiTextFieldEln lowValue, highValue; ElectricalSensorRender render; public ElectricalSensorGui(EntityPlayer player, IInventory inventory, ElectricalSensorRender render) { super(new ElectricalSensorContainer(player, inventory, render.descriptor)); this.render = render; } @Override public void initGui() { super.initGui(); if (!render.descriptor.voltageOnly) { voltageType = newGuiButton(8, 8, 50, tr("Voltage")); currentType = newGuiButton(8, 8 + 24, 50, tr("Current")); powerType = newGuiButton(8, 8 + 48, 50, tr("Power")); dirType = newGuiButton(8 + 50 + 4, 8 + 48, 50, ""); int x = 0, y = -12; validate = newGuiButton(x + 8 + 50 + 4 + 50 + 4, y + (166 - 84) / 2 - 9, 50, tr("Validate")); lowValue = newGuiTextField(x + 8 + 50 + 4, y + (166 - 84) / 2 + 3, 50); lowValue.setText(render.lowValue); lowValue.setComment(tr("Measured value\ncorresponding\nto 0% output").split("\n")); highValue = newGuiTextField(x + 8 + 50 + 4, y + (166 - 84) / 2 - 13, 50); highValue.setText(render.highValue); highValue.setComment(tr("Measured value\ncorresponding\nto 100% output").split("\n")); } else { validate = newGuiButton(8 + 50 + 4, 10, 50, tr("Validate")); lowValue = newGuiTextField(8, 6 + 16, 50); lowValue.setText(render.lowValue); lowValue.setComment(tr("Measured voltage\ncorresponding\nto 0% output").split("\n")); highValue = newGuiTextField(8, 6, 50); highValue.setText(render.highValue); highValue.setComment(tr("Measured voltage\ncorresponding\nto 100% output").split("\n")); } } @Override public void guiObjectEvent(IGuiObject object) { super.guiObjectEvent(object); if (object == validate) { float lowVoltage, highVoltage; try { lowVoltage = NumberFormat.getInstance().parse(lowValue.getText()).floatValue(); highVoltage = NumberFormat.getInstance().parse(highValue.getText()).floatValue(); render.clientSetFloat(ElectricalSensorElement.setValueId, lowVoltage, highVoltage); } catch (ParseException e) { } } else if (object == currentType) { render.clientSetByte(ElectricalSensorElement.setTypeOfSensorId, ElectricalSensorElement.currantType); } else if (object == voltageType) { render.clientSetByte(ElectricalSensorElement.setTypeOfSensorId, ElectricalSensorElement.voltageType); } else if (object == powerType) { render.clientSetByte(ElectricalSensorElement.setTypeOfSensorId, ElectricalSensorElement.powerType); } else if (object == dirType) { render.dirType = (byte) ((render.dirType + 1) % 3); render.clientSetByte(ElectricalSensorElement.setDirType, render.dirType); } } @Override protected void preDraw(float f, int x, int y) { super.preDraw(f, x, y); if (!render.descriptor.voltageOnly) { switch (render.dirType) { case ElectricalSensorElement.dirNone: dirType.displayString = "\u00a72\u25CF\u00a77 <=> \u00a71\u25CF"; break; case ElectricalSensorElement.dirAB: dirType.displayString = "\u00a72\u25CF\u00a77 => \u00a71\u25CF"; break; case ElectricalSensorElement.dirBA: dirType.displayString = "\u00a72\u25CF\u00a77 <= \u00a71\u25CF"; break; } if (render.typeOfSensor == ElectricalSensorElement.currantType) { powerType.enabled = true; currentType.enabled = false; voltageType.enabled = true; } else if (render.typeOfSensor == ElectricalSensorElement.voltageType) { powerType.enabled = true; currentType.enabled = true; voltageType.enabled = false; } else if (render.typeOfSensor == ElectricalSensorElement.powerType) { powerType.enabled = false; currentType.enabled = true; voltageType.enabled = true; } } } @Override protected GuiHelperContainer newHelper() { if (!render.descriptor.voltageOnly) return new HelperStdContainer(this); else return new GuiHelperContainer(this, 176, 166 - 45, 8, 84 - 45); } }