Package mekanism.client.gui

Source Code of mekanism.client.gui.GuiGauge

package mekanism.client.gui;

import mekanism.client.render.MekanismRenderer;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;

import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;

import codechicken.lib.vec.Rectangle4i;

public abstract class GuiGauge<T> extends GuiElement
{
  protected int xLocation;
  protected int yLocation;

  protected int width;
  protected int height;

  protected int number;
  protected boolean dummy;
 
  protected T dummyType;

  public GuiGauge(Type type, IGuiWrapper gui, ResourceLocation def, int x, int y)
  {
    super(MekanismUtils.getResource(ResourceType.GUI_ELEMENT, type.textureLocation), gui, def);

    xLocation = x;
    yLocation = y;

    width = type.width;
    height = type.height;
    number = type.number;
  }

  public abstract int getScaledLevel();

  public abstract IIcon getIcon();

  public abstract String getTooltipText();

  @Override
  public void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight)
  {
    mc.renderEngine.bindTexture(RESOURCE);

    guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, 0, 0, width, height);
   
    if(!dummy)
    {
      renderScale(xAxis, yAxis, guiWidth, guiHeight);
    }

    mc.renderEngine.bindTexture(defaultLocation);
  }
 
  public void renderScale(int xAxis, int yAxis, int guiWidth, int guiHeight)
  {
    if(getScaledLevel() == 0 || getIcon() == null)
    {
      guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, width, 0, width, height);
      return;
    }
   
    int scale = getScaledLevel();
    int start = 0;
   
    while(scale > 0)
    {
      int renderRemaining = 0;

      if(scale > 16)
      {
        renderRemaining = 16;
        scale -= 16;
      }
      else {
        renderRemaining = scale;
        scale = 0;
      }

      mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture());

      for(int i = 0; i < number; i++)
      {
        guiObj.drawTexturedRectFromIcon(guiWidth + xLocation + 16*i + 1, guiHeight + yLocation + height - renderRemaining - start - 1, getIcon(), 16, renderRemaining);
      }

      start+=16;

      if(renderRemaining == 0 || scale == 0)
      {
        break;
      }
    }

    mc.renderEngine.bindTexture(RESOURCE);
    guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, width, 0, width, height);
  }

  @Override
  public void renderForeground(int xAxis, int yAxis)
  {
    if(xAxis >= xLocation + 1 && xAxis <= xLocation + width - 1 && yAxis >= yLocation + 1 && yAxis <= yLocation + height - 1)
    {
      guiObj.displayTooltip(getTooltipText(), xAxis, yAxis);
    }
  }

  @Override
  public void preMouseClicked(int xAxis, int yAxis, int button)
  {

  }

  @Override
  public void mouseClicked(int xAxis, int yAxis, int button)
  {

  }

  public void setDummyType(T type)
  {
    dummyType = type;
  }
 
  @Override
  public Rectangle4i getBounds(int guiWidth, int guiHeight)
  {
    return new Rectangle4i(guiWidth + xLocation, guiHeight + yLocation, width, height);
  }
 
  public static enum Type
  {
    STANDARD(18, 60, 1, "GuiGaugeStandard.png"),
    WIDE(66, 50, 4, "GuiGaugeWide.png"),
    SMALL(18, 30, 1, "GuiGaugeSmall.png");

    public int width;
    public int height;
    public int number;
    public String textureLocation;

    private Type(int w, int h, int n, String t)
    {
      width = w;
      height = h;
      number = n;
      textureLocation = t;
    }
  }
}
TOP

Related Classes of mekanism.client.gui.GuiGauge

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.