Newer
Older
ultramine_private_regions / src / main / java / org / ultramine / gui / GuiBase.java
@vlad20012 vlad20012 on 29 Mar 2016 2 KB Initial commit
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);
	}
}