Package crazypants.enderio.machine.monitor

Source Code of crazypants.enderio.machine.monitor.GuiPowerMonitor

package crazypants.enderio.machine.monitor;

import static crazypants.enderio.machine.power.PowerDisplayUtil.*;

import java.awt.Color;
import java.awt.Rectangle;
import java.text.NumberFormat;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiTextField;

import org.lwjgl.opengl.GL11;

import crazypants.enderio.gui.CheckBoxEIO;
import crazypants.enderio.machine.power.PowerDisplayUtil;
import crazypants.enderio.network.PacketHandler;
import crazypants.gui.GuiContainerBase;
import crazypants.gui.GuiScreenBase;
import crazypants.gui.GuiToolTip;
import crazypants.render.ColorUtil;
import crazypants.render.RenderUtil;
import crazypants.util.Lang;

public class GuiPowerMonitor extends GuiContainerBase {

  private static final NumberFormat INT_NF = NumberFormat.getIntegerInstance();

  private static final int ICON_SIZE = 16;

  private static final int SPACING = 6;

  private static final int MARGIN = 7;

  private static final int WIDTH = 203;
  private static final int HEIGHT = 146;

  private static final int POWER_X = 185;
  private static final int POWER_Y = 9;
  private static final int POWER_WIDTH = 10;
  private static final int POWER_HEIGHT = 130;
  protected static final int BOTTOM_POWER_Y = POWER_Y + POWER_HEIGHT;

  private final TilePowerMonitor te;

  private boolean isRedstoneMode = false;

  private CheckBoxEIO enabledB;

  private GuiTextField startTF;

  private GuiTextField endTF;

  private String titleStr;

  private String engineTxt1;
  private String engineTxt2;
  private String engineTxt3;
  private String engineTxt4;
  private String engineTxt5;
  private String engineTxt6;

  private String monHeading1;
  private String monHeading2;
  private String monHeading3;
  private String monHeading4;
  private String monHeading5;

  public GuiPowerMonitor(final TilePowerMonitor te) {
    super(new ContainerPowerMonitor());
    this.te = te;
    xSize = WIDTH;
    ySize = HEIGHT;   

    titleStr = Lang.localize("gui.powerMonitor.engineControl");
    engineTxt1 = Lang.localize("gui.powerMonitor.engineSection1");
    engineTxt2 = Lang.localize("gui.powerMonitor.engineSection2");
    engineTxt3 = Lang.localize("gui.powerMonitor.engineSection3");
    engineTxt4 = Lang.localize("gui.powerMonitor.engineSection4");
    engineTxt5 = Lang.localize("gui.powerMonitor.engineSection5");
    engineTxt6 = Lang.localize("gui.powerMonitor.engineSection6");

    monHeading1 = Lang.localize("gui.powerMonitor.monHeading1");
    monHeading2 = Lang.localize("gui.powerMonitor.monHeading2");
    monHeading3 = Lang.localize("gui.powerMonitor.monHeading3");
    monHeading4 = Lang.localize("gui.powerMonitor.monHeading4");
    monHeading5 = Lang.localize("gui.powerMonitor.monHeading5");

    addToolTip(new GuiToolTip(new Rectangle(POWER_X, POWER_Y, POWER_WIDTH, POWER_HEIGHT), "") {

      @Override
      protected void updateText() {
        text.clear();
        text.add(formatPower(te.getEnergyStored()) + "/" + formatPower(te.getMaxEnergyStored()) + " "
            + PowerDisplayUtil.abrevation());
      }

    });

    int x = MARGIN + Minecraft.getMinecraft().fontRenderer.getStringWidth(titleStr) + SPACING;

    enabledB = new CheckBoxEIO(this, 21267, x, 8);
    enabledB.setSelectedToolTip(Lang.localize("gui.enabled"));
    enabledB.setUnselectedToolTip(Lang.localize("gui.disabled"));
    enabledB.setSelected(te.engineControlEnabled);

  }

  @Override
  public void initGui() {
    super.initGui();

    buttonList.clear();
    //enabledB.onGuiInit();

    int x = guiLeft + MARGIN + getFontRenderer().getStringWidth(engineTxt2) + 4;
    int y = guiTop + MARGIN + ICON_SIZE + ICON_SIZE + getFontRenderer().FONT_HEIGHT;
    startTF = new GuiTextField(getFontRenderer(), x, y, 28, 14);
    startTF.setCanLoseFocus(true);
    startTF.setMaxStringLength(3);
    startTF.setFocused(true);
    startTF.setText(INT_NF.format(te.asPercentInt(te.startLevel)));

    y = y + getFontRenderer().FONT_HEIGHT + ICON_SIZE + ICON_SIZE + 4;
    x = guiLeft + MARGIN + getFontRenderer().getStringWidth(engineTxt5);
    endTF = new GuiTextField(getFontRenderer(), x, y, 28, 14);
    endTF.setCanLoseFocus(true);
    endTF.setMaxStringLength(3);
    endTF.setFocused(false);
    endTF.setText(INT_NF.format(te.asPercentInt(te.stopLevel)));

  }

  @Override
  public boolean doesGuiPauseGame() {
    return false;
  }

  @Override
  protected void keyTyped(char par1, int par2) {
    super.keyTyped(par1, par2);
    startTF.textboxKeyTyped(par1, par2);
    endTF.textboxKeyTyped(par1, par2);

  }

  @Override
  public void updateScreen() {
    startTF.updateCursorCounter();
    endTF.updateCursorCounter();
  }

  @Override
  public int getOverlayOffsetX() { 
    return 0;
  }

  @Override
  protected void mouseClicked(int x, int y, int par3) {
    super.mouseClicked(x, y, par3);

    startTF.mouseClicked(x, y, par3);
    endTF.mouseClicked(x, y, par3);

    x = (x - guiLeft);
    y = (y - guiTop);
    if(x > 200 && x < 220) {
      if(y > 9 && y < 27) {
        isRedstoneMode = false;
        enabledB.detach();
      } else if(y > 34 && y < 53) {
        isRedstoneMode = true;
        enabledB.onGuiInit();
      }
    }

  }

  @Override
  protected void drawGuiContainerBackgroundLayer(float ptick, int mouseX, int mouseY) {
 
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    RenderUtil.bindTexture("enderio:textures/gui/powerMonitor.png");
    int sx = (width - xSize) / 2;
    int sy = (height - ySize) / 2;

    drawTexturedModalRect(sx, sy, 0, 0, xSize, ySize);

    int i1 = te.getEnergyStoredScaled(POWER_HEIGHT);
    drawTexturedModalRect(sx + POWER_X, sy + BOTTOM_POWER_Y - i1, 245, 0, POWER_WIDTH, i1);

    if(isRedstoneMode) {
      renderRedstoneTab(sx, sy);
    } else {
      renderInfoTab(sx, sy);
    }

    checkForModifications();

  }

  private void checkForModifications() {
    if(enabledB.isSelected() != te.engineControlEnabled ||
        getInt(startTF) != te.asPercentInt(te.startLevel) ||
        getInt(endTF) != te.asPercentInt(te.stopLevel)) {

      te.engineControlEnabled = enabledB.isSelected();
      int i = getInt(startTF);
      if(i >= 0) {
        te.startLevel = te.asPercentFloat(i);
      }
      i = getInt(endTF);
      if(i >= 0) {
        te.stopLevel = te.asPercentFloat(i);
      }
      PacketHandler.INSTANCE.sendToServer(new PacketPowerMonitor(te));
    }

  }

  private int getInt(GuiTextField tf) {
    String txt = tf.getText();
    if(txt == null) {
      return -1;
    }
    try {
      int val = Integer.parseInt(tf.getText());
      if(val >= 0 && val <= 100) {
        return val;
      }
      return -1;
    } catch (Exception e) {
      return -1;
    }
  }

  private void renderRedstoneTab(int sx, int sy) {
    drawTexturedModalRect(sx + 200, sy + SPACING, 225, 0, 20, 48);
    int left = guiLeft + MARGIN;
    int rgb;
    int x = left;
    int y = guiTop + MARGIN + SPACING;
    if(!enabledB.isSelected()) {
      rgb = ColorUtil.getRGB(Color.darkGray);
    } else {
      rgb = ColorUtil.getRGB(Color.black);
    }
    FontRenderer fontRenderer = getFontRenderer();
    fontRenderer.drawString(titleStr, x, y, rgb, false);

    x = left + fontRenderer.getStringWidth(titleStr) + SPACING + ICON_SIZE + SPACING;
    y = guiTop + 14;
    if(!enabledB.isSelected()) {
      rgb = ColorUtil.getRGB(Color.darkGray);
      enabledB.drawButton(mc, guiLeft, guiTop);
    } else {
      //      rgb = ColorUtil.getRGB(Color.blue);
      //      rgb = ColorUtil.getRGB(0, 18, 127);
      rgb = ColorUtil.getRGB(Color.black);
    }

    enabledB.drawButton(mc, guiLeft, guiTop);

    y += SPACING + ICON_SIZE;
    x = left;

    String txt = engineTxt1;
    fontRenderer.drawString(txt, x, y, rgb, false);

    y += SPACING + fontRenderer.FONT_HEIGHT;

    x = left;
    txt = engineTxt2;
    fontRenderer.drawString(txt, x, y, rgb, false);

    x = left + fontRenderer.getStringWidth(txt) + SPACING + startTF.getWidth() + 12;
    txt = engineTxt3;
    fontRenderer.drawString(txt, x, y, rgb, false);

    x = left;
    y += ICON_SIZE + fontRenderer.FONT_HEIGHT + SPACING;
    txt = engineTxt4;
    fontRenderer.drawString(txt, x, y, rgb, false);

    x = left;
    y += SPACING + fontRenderer.FONT_HEIGHT;
    txt = engineTxt5;
    fontRenderer.drawString(txt, x, y, rgb, false);
    x += fontRenderer.getStringWidth(txt);

    txt = engineTxt3;
    x += MARGIN + endTF.getWidth() + 10;
    fontRenderer.drawString(txt, x, y, rgb, false);

    startTF.drawTextBox();
    endTF.drawTextBox();

  }

  private void renderInfoTab(int sx, int sy) {
    drawTexturedModalRect(sx + 200, sy + SPACING, 225, 53, 20, 48);

    int headingCol = ColorUtil.getRGB(Color.white);
    int valuesCol = ColorUtil.getRGB(Color.black);
    int rgb;
    int x = guiLeft + MARGIN;
    int y = guiTop + MARGIN;

    int sectionGap = SPACING;

    FontRenderer fontRenderer = getFontRenderer();
    rgb = headingCol;
    StringBuilder sb = new StringBuilder();
    sb.append(monHeading1);
    fontRenderer.drawString(sb.toString(), x, y, rgb, true);

    rgb = valuesCol;
    y += fontRenderer.FONT_HEIGHT + 2;
    sb = new StringBuilder();
    sb.append(formatPower(te.powerInConduits));
    sb.append(" ");
    sb.append(PowerDisplayUtil.ofStr());
    sb.append(" ");
    sb.append(formatPower(te.maxPowerInCoduits));
    sb.append(" ");
    sb.append(PowerDisplayUtil.abrevation());
    fontRenderer.drawString(sb.toString(), x, y, rgb, false);

    rgb = headingCol;
    y += fontRenderer.FONT_HEIGHT + sectionGap;
    sb = new StringBuilder();
    sb.append(monHeading2);
    fontRenderer.drawString(sb.toString(), x, y, rgb, true);

    rgb = valuesCol;
    y += fontRenderer.FONT_HEIGHT + 2;
    sb = new StringBuilder();
    sb.append(formatPower(te.powerInCapBanks));
    sb.append(" ");
    sb.append(PowerDisplayUtil.ofStr());
    sb.append(" ");
    sb.append(formatPower(te.maxPowerInCapBanks));
    sb.append(" ");
    sb.append(PowerDisplayUtil.abrevation());
    fontRenderer.drawString(sb.toString(), x, y, rgb, false);

    rgb = headingCol;
    y += fontRenderer.FONT_HEIGHT + sectionGap;
    sb = new StringBuilder();
    sb.append(monHeading3);
    fontRenderer.drawString(sb.toString(), x, y, rgb, true);

    rgb = valuesCol;
    y += fontRenderer.FONT_HEIGHT + 2;
    sb = new StringBuilder();
    sb.append(formatPower(te.powerInMachines));
    sb.append(" ");
    sb.append(PowerDisplayUtil.ofStr());
    sb.append(" ");
    sb.append(formatPower(te.maxPowerInMachines));
    sb.append(" ");
    sb.append(PowerDisplayUtil.abrevation());
    fontRenderer.drawString(sb.toString(), x, y, rgb, false);

    rgb = headingCol;
    y += fontRenderer.FONT_HEIGHT + sectionGap;
    sb = new StringBuilder();
    sb.append(monHeading4);
    fontRenderer.drawString(sb.toString(), x, y, rgb, true);

    rgb = valuesCol;
    y += fontRenderer.FONT_HEIGHT + 2;
    sb = new StringBuilder();
    sb.append(formatPowerFloat(te.aveRfSent));
    sb.append(" ");
    sb.append(PowerDisplayUtil.abrevation());
    sb.append(PowerDisplayUtil.perTickStr());
    fontRenderer.drawString(sb.toString(), x, y, rgb, false);

    rgb = headingCol;
    y += fontRenderer.FONT_HEIGHT + sectionGap;
    sb = new StringBuilder();
    sb.append(monHeading5);
    fontRenderer.drawString(sb.toString(), x, y, rgb, true);

    rgb = valuesCol;
    y += fontRenderer.FONT_HEIGHT + 2;
    sb = new StringBuilder();
    sb.append(formatPowerFloat(te.aveRfRecieved));
    sb.append(" ");
    sb.append(PowerDisplayUtil.abrevation());
    sb.append(PowerDisplayUtil.perTickStr());
    fontRenderer.drawString(sb.toString(), x, y, rgb, false);
  }

}
TOP

Related Classes of crazypants.enderio.machine.monitor.GuiPowerMonitor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.