Newer
Older
ultramine_private_regions / src / main / java / org / ultramine / gui / GuiScreenToGui.java
@vlad20012 vlad20012 on 29 Mar 2016 2 KB Initial commit
package org.ultramine.gui;

import org.lwjgl.input.Keyboard;

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

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import org.lwjgl.input.Mouse;

@SideOnly(Side.CLIENT)
public final class GuiScreenToGui extends GuiScreen
{
	private int eventButton;
	private long lastMouseEvent;
	private int field_146298_h;

	public final IGui gui;
	
	public GuiScreenToGui(IGui igui)
	{
		gui = igui;
	}
	
	@Override
	public void setWorldAndResolution(Minecraft par1Minecraft, int par2, int par3)
	{
		gui.resizeGui(par1Minecraft, par2, par3);
		super.setWorldAndResolution(par1Minecraft, par2, par3);
	}

	@Override
	public void initGui()
	{
		Keyboard.enableRepeatEvents(true);
		gui.relayout();
	}

	@Override
	public void drawScreen(int mx, int my, float par3)
	{
		gui.draw(mx, my, par3);
	}

	@Override
	protected void keyTyped(char c, int code)
	{
		gui.keyTyped(c, code);
	}

	@Override
	protected void mouseClicked(int mx, int my, int buttonCode)
	{
		gui.mouseClicked(mx, my, buttonCode);
	}

	@Override
	protected void mouseMovedOrUp(int mx, int my, int buttonCode)
	{
		gui.mouseMovedOrUp(mx, my, buttonCode);
	}

	@Override
	public void updateScreen()
	{
		gui.update();
	}

	@Override
	public void onGuiClosed()
	{
		gui.onGuiClosed();
		Keyboard.enableRepeatEvents(false);
	}

	@Override
	public boolean doesGuiPauseGame()
	{
		return gui.doesGuiPauseGame();
	}

	@Override
	public void handleMouseInput()
	{
		int wheel = Mouse.getEventDWheel();
		if(wheel != 0)
			handleMouseWheel(wheel);
		int i = Mouse.getEventX() * this.width / this.mc.displayWidth;
		int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1;
		int k = Mouse.getEventButton();

		if (Mouse.getEventButtonState())
		{
			if (this.mc.gameSettings.touchscreen && this.field_146298_h++ > 0)
			{
				return;
			}

			this.eventButton = k;
			this.lastMouseEvent = Minecraft.getSystemTime();
			this.mouseClicked(i, j, this.eventButton);
		}
		else if (k != -1)
		{
			if (this.mc.gameSettings.touchscreen && --this.field_146298_h > 0)
			{
				return;
			}

			this.eventButton = -1;
			this.mouseMovedOrUp(i, j, k);
		}
		else if (this.eventButton != -1 && this.lastMouseEvent > 0L)
		{
			long l = Minecraft.getSystemTime() - this.lastMouseEvent;
			this.mouseClickMove(i, j, this.eventButton, l);
		}
	}

	private void handleMouseWheel(int wheel)
	{
		gui.mouseWheel(wheel);
	}
}