package mods.eln.sixnode.energymeter;
import mods.eln.gui.*;
import mods.eln.sixnode.energymeter.EnergyMeterElement.Mod;
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 EnergyMeterGui extends GuiContainerEln {
GuiButtonEln stateBt, passwordBt, modBt, setEnergyBt, resetTimeBt, energyUnitBt, timeUnitBt;
GuiTextFieldEln passwordFeild, energyFeild;
EnergyMeterRender render;
enum SelectedType {none, min, max}
boolean isLogged;
public EnergyMeterGui(EntityPlayer player, IInventory inventory, EnergyMeterRender render) {
super(new EnergyMeterContainer(player, inventory));
this.render = render;
}
@Override
public void initGui() {
super.initGui();
int x = 6, y = 6;
isLogged = render.password.equals("");
passwordFeild = newGuiTextField(x, y + 4, 70);
x += 74;
passwordBt = newGuiButton(x, y, 106, "");
passwordFeild.setComment(0, tr("Enter password"));
x = 6;
y += 28;
x = 6;
stateBt = newGuiButton(x, y, 70, "");
x += 74;
modBt = newGuiButton(x, y, 106, "");
y += 22;
x = 6;
energyFeild = newGuiTextField(x, y + 4, 70);
x += 74;
setEnergyBt = newGuiButton(x, y, 106, tr("Set energy counter"));
energyFeild.setComment(0, tr("Enter new energy"));
energyFeild.setComment(1, tr("value in kJ"));
energyFeild.setText("0");
y += 22;
x = 6;
energyUnitBt = newGuiButton(x, y, 34, "");
x += 34 + 2;
timeUnitBt = newGuiButton(x, y, 34, "");
x += 34 + 4;
resetTimeBt = newGuiButton(x, y, 106, tr("Reset time counter"));
y += 22;
x = 6;
if (render.descriptor.timeNumberWheel.length == 0) {
energyUnitBt.enabled = false;
timeUnitBt.enabled = false;
}
}
@Override
public void guiObjectEvent(IGuiObject object) {
super.guiObjectEvent(object);
if (object == stateBt) {
render.clientSend(EnergyMeterElement.clientToggleStateId);
}
if (object == passwordBt) {
if (isLogged) {
render.clientSetString(EnergyMeterElement.clientPasswordId, passwordFeild.getText());
} else {
if (passwordFeild.getText().equals(render.password)) {
isLogged = true;
}
}
}
if (object == modBt) {
switch (render.mod) {
case ModCounter:
render.clientSetString(EnergyMeterElement.clientModId, Mod.ModPrepay.name());
break;
case ModPrepay:
render.clientSetString(EnergyMeterElement.clientModId, Mod.ModCounter.name());
break;
}
}
if (object == setEnergyBt) {
double newVoltage;
try {
newVoltage = NumberFormat.getInstance().parse(energyFeild.getText()).doubleValue();
} catch (ParseException e) {
return;
}
render.clientSetDouble(EnergyMeterElement.clientEnergyStackId, newVoltage * 1000);
}
if (object == resetTimeBt) {
render.clientSend(EnergyMeterElement.clientTimeCounterId);
}
if (object == energyUnitBt) {
render.clientSend(EnergyMeterElement.clientEnergyUnitId);
}
if (object == timeUnitBt) {
render.clientSend(EnergyMeterElement.clientTimeUnitId);
}
}
@Override
protected void preDraw(float f, int x, int y) {
super.preDraw(f, x, y);
if (!render.switchState)
stateBt.displayString = tr("is off");
else
stateBt.displayString = tr("is on");
if (isLogged)
passwordBt.displayString = tr("Change password");
else
passwordBt.displayString = tr("Try password");
switch (render.mod) {
case ModCounter:
modBt.displayString = tr("Counter Mode");
modBt.clearComment();
int lineNumber = 0;
for (String line : tr("Counts the energy conducted from\n\u00a74red\u00a7f to \u00a71blue\u00a7f.").split("\n"))
modBt.setComment(lineNumber++, line);
break;
case ModPrepay:
modBt.displayString = tr("Prepay Mode");
modBt.clearComment();
lineNumber = 0;
for (String line : tr("Counts the energy conducted from\n\u00a74red\u00a7f to \u00a71blue\u00a7f.").split("\n"))
modBt.setComment(lineNumber++, line);
modBt.setComment(lineNumber++, "");
for (String line : tr("You can set an initial\namount of available energy.\nWhen the counter arrives at 0\nthe contact will be opened.").split("\n"))
modBt.setComment(lineNumber++, line);
break;
}
if (energyUnitBt != null)
switch (render.energyUnit) {
case 0:
energyUnitBt.displayString = "J";
break;
case 1:
energyUnitBt.displayString = "KJ";
break;
case 2:
energyUnitBt.displayString = "MJ";
break;
case 3:
energyUnitBt.displayString = "GJ";
break;
default:
energyUnitBt.displayString = "??";
break;
}
if (timeUnitBt != null)
switch (render.timeUnit) {
case 0:
timeUnitBt.displayString = "H";
break;
case 1:
timeUnitBt.displayString = "D";
break;
default:
timeUnitBt.displayString = "??";
break;
}
modBt.enabled = isLogged;
stateBt.enabled = isLogged;
resetTimeBt.enabled = isLogged;
setEnergyBt.enabled = isLogged;
energyUnitBt.enabled = isLogged && render.descriptor.timeNumberWheel.length != 0;
timeUnitBt.enabled = isLogged && render.descriptor.timeNumberWheel.length != 0;
}
@Override
protected void postDraw(float f, int x, int y) {
super.postDraw(f, x, y);
helper.drawRect(6, 29, helper.xSize - 6, 29 + 1, 0xff404040);
y = 101;
helper.drawRect(6, y, helper.xSize - 6, y + 1, 0xff404040);
y += 3;
helper.drawString(6 + 16 / 2, y, 0xff000000, tr("Energy counter: %1$J", (int) (render.energyStack)));
y += 10;
helper.drawString(6 + 16 / 2, y, 0xff000000, tr("Time counter:", (int) (render.timerCouter)));
}
@Override
protected GuiHelperContainer newHelper() {
return new GuiHelperContainer(this, 176 + 16, 42 + 166, 8 + 16 / 2, 42 + 84);
}
}