package org.ultramine.gui;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
@SideOnly(Side.CLIENT)
public class GuiBase implements IGui, IActionListener
{
protected Minecraft mc = Minecraft.getMinecraft();
public int width;
public int height;
protected int xSize;
protected int ySize;
protected int guiLeft;
protected int guiTop;
protected List<IGuiElement> controlList = new ArrayList<IGuiElement>();
@Override
public final void resizeGui(Minecraft mc, int width, int height)
{
this.mc = mc;
this.width = width;
this.height = height;
this.guiLeft = (this.width - this.xSize) >> 1;
this.guiTop = (this.height - this.ySize) >> 1;
for (int i = 0, s = controlList.size(); i < s; ++i)
{
controlList.get(i).init(this, xSize, ySize, guiLeft, guiTop);
}
}
@Override
public void relayout()
{
}
@Override
public void draw(int mx, int my, float par3)
{
for(int i = 0, s = controlList.size(); i < s; ++i)
{
controlList.get(i).draw(mc, mx, my);
}
}
@Override
public void keyTyped(char c, int code)
{
if(code == 1)
{
this.mc.displayGuiScreen(null);
}
else
{
for (int i = 0, s = controlList.size(); i < s; ++i)
controlList.get(i).keyTyped(c, code);
}
}
@Override
public void mouseClicked(int mx, int my, int buttonCode)
{
for (IGuiElement el : new ArrayList<IGuiElement>(controlList))
{
el.mouseClicked(mx, my, buttonCode);
}
}
@Override
public void mouseMovedOrUp(int mx, int my, int buttonCode)
{
}
@Override
public void mouseWheel(int wheel)
{
}
@Override
public void onGuiClosed()
{
}
protected void addElement(IGuiElement element)
{
if(mc != null)
element.init(this, xSize, ySize, guiLeft, guiTop);
controlList.add(element);
}
protected void addElements(Collection<IGuiElement> elements)
{
controlList.addAll(elements);
if(mc != null)
for(IGuiElement el : elements)
el.init(this, xSize, ySize, guiLeft, guiTop);
}
protected void removeElement(IGuiElement element)
{
controlList.remove(element);
}
protected void removeElements(Collection<IGuiElement> elements)
{
controlList.removeAll(elements);
}
@Override
public void actionPerformed(int id, IGuiElement element, Object... data)
{
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
public void update()
{
for (int i = 0, s = controlList.size(); i < s; ++i)
{
controlList.get(i).update();
}
}
protected void setSize(int w, int h)
{
xSize = w;
ySize = h;
this.guiLeft = (this.width - this.xSize) >> 1;
this.guiTop = (this.height - this.ySize) >> 1;
}
public final void drawString(int x, int y, String str)
{
drawString(str, x, y, 0x404040);
}
public final void drawString(String str, int x, int y, int color)
{
mc.fontRenderer.drawString(str, guiLeft + x, guiTop + y , color);
}
}