package shedar.mods.ic2.nuclearcontrol.gui; import ic2.core.IC2; import ic2.core.network.NetworkManager; import java.lang.reflect.Method; import ic2.api.network.NetworkHelper; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import shedar.mods.ic2.nuclearcontrol.containers.ContainerEmpty; import shedar.mods.ic2.nuclearcontrol.gui.controls.CompactButton; import shedar.mods.ic2.nuclearcontrol.gui.controls.GuiThermoInvertRedstone; import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityThermo; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiIC2Thermo extends GuiContainer { private static final String TEXTURE_FILE = "nuclearcontrol:textures/gui/GUIThermalMonitor.png"; private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(TEXTURE_FILE); private TileEntityThermo thermo; private GuiTextField textboxHeat = null; private String name; public GuiIC2Thermo(TileEntityThermo thermo) { super(new ContainerEmpty(thermo)); xSize = 191; ySize = 64; this.thermo = thermo; name = StatCollector.translateToLocal("tile.blockThermalMonitor.name"); } private void updateHeat(int delta) { if (textboxHeat != null) { int heat = 0; try { String value = textboxHeat.getText(); if (!"".equals(value)) heat = Integer.parseInt(value); } catch (NumberFormatException e) { // do nothing } heat += delta; if (heat < 0) heat = 0; if (heat >= 1000000) heat = 1000000; if (thermo.getHeatLevel().intValue() != heat) { //thermo.setHeatLevel(heat); ((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(thermo, heat); } textboxHeat.setText(new Integer(heat).toString()); } } @SuppressWarnings("unchecked") @Override public void initGui() { super.initGui(); buttonList.clear(); buttonList.add(new CompactButton(0, guiLeft + 47, guiTop + 20, 22, 12, "-1")); buttonList.add(new CompactButton(1, guiLeft + 47, guiTop + 31, 22, 12, "-10")); buttonList.add(new CompactButton(2, guiLeft + 12, guiTop + 20, 36, 12, "-100")); buttonList.add(new CompactButton(3, guiLeft + 12, guiTop + 31, 36, 12, "-1000")); buttonList.add(new CompactButton(4, guiLeft + 12, guiTop + 42, 57, 12, "-10000")); buttonList.add(new CompactButton(5, guiLeft + 122, guiTop + 20, 22, 12, "+1")); buttonList.add(new CompactButton(6, guiLeft + 122, guiTop + 31, 22, 12, "+10")); buttonList.add(new CompactButton(7, guiLeft + 143, guiTop + 20, 36, 12, "+100")); buttonList.add(new CompactButton(8, guiLeft + 143, guiTop + 31, 36, 12, "+1000")); buttonList.add(new CompactButton(9, guiLeft + 122, guiTop + 42, 57, 12, "+10000")); buttonList.add(new GuiThermoInvertRedstone(10, guiLeft + 70, guiTop + 38, thermo)); textboxHeat = new GuiTextField(fontRendererObj, 70, 21, 51, 12); textboxHeat.setFocused(true); textboxHeat.setText(thermo.getHeatLevel().toString()); } @Override public void updateScreen() { super.updateScreen(); if (textboxHeat != null) textboxHeat.updateCursorCounter(); } @Override public boolean doesGuiPauseGame() { return false; } @Override protected void drawGuiContainerForegroundLayer(int par1, int par2) { fontRendererObj.drawString(name, (xSize - fontRendererObj.getStringWidth(name)) / 2, 6, 0x404040); if (textboxHeat != null) textboxHeat.drawTextBox(); } @Override public void onGuiClosed() { updateHeat(0); super.onGuiClosed(); } @Override protected void actionPerformed(GuiButton button) { if (button.id >= 10) return; int delta = Integer.parseInt(button.displayString.replace("+", "")); updateHeat(delta); } @Override protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.renderEngine.bindTexture(TEXTURE_LOCATION); int left = (width - xSize) / 2; int top = (height - ySize) / 2; drawTexturedModalRect(left, top, 0, 0, xSize, ySize); } @Override protected void keyTyped(char par1, int par2) { if(par2 == 1)// Esc button mc.thePlayer.closeScreen(); else if(par1 == 13)// Enter updateHeat(0); else if(textboxHeat != null && textboxHeat.isFocused() && (Character.isDigit(par1) || par1 == 0 || par1 == 8)) textboxHeat.textboxKeyTyped(par1, par2); } }