Package com.kaijin.AdvPowerMan

Source Code of com.kaijin.AdvPowerMan.GuiChargingBench

/*******************************************************************************
* Copyright (c) 2012-2013 Yancarlo Ramsey and CJ Bowman
* Licensed as open source with restrictions. Please see attached LICENSE.txt.
******************************************************************************/
package com.kaijin.AdvPowerMan;

import java.text.DecimalFormat;

import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class GuiChargingBench extends GuiContainer
{
  IInventory playerInventory;
  public TEChargingBench tile;

  private int xLoc;
  private int yLoc;
  private int xCenter;

  private DecimalFormat fraction = new DecimalFormat("##0.00");
  private DecimalFormat time = new DecimalFormat("00");
  private DecimalFormat days = new DecimalFormat("#0");
  private DecimalFormat dayFrac = new DecimalFormat("0.#");

  private static final int GREEN = 0x55FF55;
  private static final int GREENGLOW = Utils.multiplyColorComponents(GREEN, 0.16F);

  public GuiChargingBench(InventoryPlayer player, TEChargingBench tileentity)
  {
    super(new ContainerChargingBench(player, tileentity));
    tile = tileentity;
    xSize = 176; // The X size of the GUI window in pixels.
    ySize = 226; // The Y size of the GUI window in pixels.
  }

  @Override
  public void initGui()
  {
    super.initGui(); // Don't forget this or MC will crash

    // Upper left corner of GUI panel
    xLoc = (width - xSize) / 2; // Half the difference between screen width and GUI width
    yLoc = (height - ySize) / 2; // Half the difference between screen height and GUI height
    xCenter = width / 2;
  }

  @Override
  protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3)
  {
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    mc.renderEngine.func_110577_a(new ResourceLocation(Info.TITLE_PACKED.toLowerCase(), Info.GUI_TEX_CHARGING_BENCH));

    // Draw GUI background
    drawTexturedModalRect(xLoc, yLoc, 0, 0, xSize, ySize);

    // Energy bar
    if (tile.currentEnergy > 0)
    {
      // Make each box light up all at once like a LED instead of gradually using barLength = tile.gaugeEnergyScaled(66);
      int barLength = 5 * tile.gaugeEnergyScaled(13);
      if (barLength > 0) barLength++;
      drawTexturedModalRect(xLoc + 32, yLoc + 136 - barLength, 176, 66 - barLength, 12, barLength);
    }

    // Redstone power indicator
    drawTexturedModalRect(xLoc + 129, yLoc + 48, tile.receivingRedstoneSignal() ? 188 : 206, 0, 18, 15);

    // Draw labels
    Utils.drawCenteredText(fontRenderer, I18n.func_135053_a(tile.getInvName()), xCenter, yLoc + 7, 4210752);

    Utils.drawRightAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_EU), xLoc + 25, yLoc + 23, 4210752);
    Utils.drawLeftAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_CHARGER_MAX), xLoc + 151, yLoc + 23, 4210752);

    Utils.drawRightAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_CHARGER_REQ), xLoc + 25, yLoc + 33, 4210752);
    Utils.drawLeftAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_CHARGER_ETC), xLoc + 151, yLoc + 33, 4210752);

    Utils.drawRightAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_CHARGER_AVG), xLoc + 70, yLoc + 52, 4210752);
    Utils.drawLeftAlignedText(fontRenderer, I18n.func_135053_a(Info.KEY_CHARGER_PWR), xLoc + 151, yLoc + 52, 4210752);

    // Draw current and max storage
    Utils.drawRightAlignedGlowingText(fontRenderer, Integer.toString(tile.currentEnergy), xCenter - 7, yLoc + 23, GREEN, GREENGLOW);
    Utils.drawGlowingText(fontRenderer, " / " + Integer.toString(tile.adjustedStorage), xCenter - 7, yLoc + 23, GREEN, GREENGLOW);

    // Factor of 100 because data is in fixed point (x100)
    final float rate = (float)(((ContainerChargingBench)inventorySlots).averageInput) / 100F;
    Utils.drawRightAlignedGlowingText(fontRenderer, fraction.format(rate), xLoc + 122, yLoc + 52, GREEN, GREENGLOW);

    // Charging stats (only displayed while charging items)
    if (tile.energyRequired > 0)
    {
      final String clock;
      if (tile.ticksRequired > 0)
      {
        int timeScratch = tile.ticksRequired / 20;
        if (timeScratch <= 345600) // 60 * 60 * 96 or 4 days
        {
          final int sec = timeScratch % 60;
          timeScratch /= 60;
          final int min = timeScratch % 60;
          timeScratch /= 60;
          clock = time.format(timeScratch) + ":" + time.format(min) + ":" + time.format(sec);
        }
        else
        {
          float dayScratch = ((float)timeScratch) / 86400F; // 60 * 60 * 24 or 1 day
          clock = (dayScratch < 10F ? dayFrac.format(dayScratch) : dayScratch < 100 ? days.format((int)dayScratch) : "??") + I18n.func_135053_a(Info.KEY_STATS_DISPLAY_DAYS);
        }
      }
      else clock = I18n.func_135053_a(Info.KEY_STATS_DISPLAY_UNKNOWN);
      final String energyReq = tile.energyRequired > 9999999 ? dayFrac.format(((float)tile.energyRequired) / 1000000F) + "M" : Integer.toString(tile.energyRequired);
      Utils.drawRightAlignedGlowingText(fontRenderer, energyReq, xCenter - 7, yLoc + 33, GREEN, GREENGLOW);
      Utils.drawRightAlignedGlowingText(fontRenderer, clock, xLoc + 144, yLoc + 33, GREEN, GREENGLOW);
    }
  }
}
TOP

Related Classes of com.kaijin.AdvPowerMan.GuiChargingBench

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.