package dark.lib.prefab.invgui;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import resonantinduction.core.Reference;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;

public class GuiMessageBox extends GuiBase
{
	public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.GUI_DIRECTORY + "gui_message_box.png");

	GuiBase returnGuiYes, returnGuiNo;
	int id;
	String title;
	String message;

	public GuiMessageBox(GuiBase returnGui, int id, String title, String message)
	{
		this.guiSize.y = 380 / 2;
		this.returnGuiYes = returnGui;
		this.returnGuiNo = returnGui;
		this.id = id;
		this.title = title;
		this.message = message;
	}

	public GuiMessageBox(GuiBase returnGui, GuiBase returnGuiNo, int id, String title, String message)
	{
		this(returnGui, id, title, message);
		this.returnGuiNo = returnGuiNo;
	}

	@SuppressWarnings("unchecked")
	@Override
	public void initGui()
	{
		super.initGui();
		this.buttonList.clear();
		this.buttonList.add(new GuiButton(0, (this.width - this.guiSize.intX()) / 2 + 25, (this.height - this.guiSize.intY()) / 2 + 35, 50, 20, "Yes"));

		this.buttonList.add(new GuiButton(1, (this.width - this.guiSize.intX()) / 2 + 80, (this.height - this.guiSize.intY()) / 2 + 35, 50, 20, "no"));

	}

	@Override
	public void onGuiClosed()
	{
		super.onGuiClosed();
	}

	@Override
	protected void actionPerformed(GuiButton button)
	{
		super.actionPerformed(button);
		switch (button.id)
		{
			case 0:
				this.exit(true);
				break;
			case 1:
				this.exit(false);
				break;
		}
	}

	@Override
	protected void drawForegroundLayer(int var2, int var3, float var1)
	{
		this.fontRenderer.drawString("" + this.title, (this.guiSize.intX() / 2 - 30), 5, 4210752);
		this.fontRenderer.drawString("\u00a77" + this.message, ((this.guiSize.intX() / 2) - 50), 20, 4210752);
	}

	@Override
	protected void drawBackgroundLayer(int var2, int var3, float var1)
	{
		FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);

		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

		int containerWidth = (this.width - this.guiSize.intX()) / 2;
		int containerHeight = (this.height - this.guiSize.intY()) / 2;
		this.drawTexturedModalRect(containerWidth, containerHeight, 0, 0, this.guiSize.intX(), this.guiSize.intY());
	}

	public void show()
	{
		FMLCommonHandler.instance().showGuiScreen(this);
	}

	public void exit(boolean yes)
	{
		if (yes)
		{
			FMLCommonHandler.instance().showGuiScreen(this.returnGuiYes);
		}
		else
		{
			FMLCommonHandler.instance().showGuiScreen(this.returnGuiNo);
		}
		if (this.returnGuiYes instanceof IMessageBoxDialog)
		{
			((IMessageBoxDialog) this.returnGuiYes).onMessageBoxClosed(this.id, yes);
		}
	}
}
