mirror of
https://github.com/Eaglercraft-Archive/EaglercraftX-1.8-workspace.git
synced 2026-06-22 17:58:18 +02:00
169 lines
5.9 KiB
Java
Executable File
169 lines
5.9 KiB
Java
Executable File
package net.minecraft.client.gui;
|
|
|
|
import static net.lax1dude.eaglercraft.v1_8.opengl.RealOpenGLEnums.*;
|
|
|
|
import net.lax1dude.eaglercraft.v1_8.Mouse;
|
|
import net.lax1dude.eaglercraft.v1_8.internal.EnumCursorType;
|
|
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
|
import net.minecraft.client.audio.SoundHandler;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
/**+
|
|
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
|
*
|
|
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
|
|
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
|
|
*
|
|
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
public class GuiButton extends Gui {
|
|
protected static final ResourceLocation buttonTextures = new ResourceLocation("textures/gui/widgets.png");
|
|
public int width;
|
|
public int height;
|
|
public int xPosition;
|
|
public int yPosition;
|
|
public String displayString;
|
|
public int id;
|
|
public boolean enabled;
|
|
public boolean visible;
|
|
protected boolean hovered;
|
|
public float fontScale = 1.0f;
|
|
|
|
public GuiButton(int buttonId, int x, int y, String buttonText) {
|
|
this(buttonId, x, y, 200, 20, buttonText);
|
|
}
|
|
|
|
public GuiButton(int buttonId, int x, int y, int widthIn, int heightIn, String buttonText) {
|
|
this.width = 200;
|
|
this.height = 20;
|
|
this.enabled = true;
|
|
this.visible = true;
|
|
this.id = buttonId;
|
|
this.xPosition = x;
|
|
this.yPosition = y;
|
|
this.width = widthIn;
|
|
this.height = heightIn;
|
|
this.displayString = buttonText;
|
|
}
|
|
|
|
/**+
|
|
* Returns 0 if the button is disabled, 1 if the mouse is NOT
|
|
* hovering over this button and 2 if it IS hovering over this
|
|
* button.
|
|
*/
|
|
protected int getHoverState(boolean mouseOver) {
|
|
byte b0 = 1;
|
|
if (!this.enabled) {
|
|
b0 = 0;
|
|
} else if (mouseOver) {
|
|
b0 = 2;
|
|
}
|
|
|
|
return b0;
|
|
}
|
|
|
|
/**+
|
|
* Draws this button to the screen.
|
|
*/
|
|
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
|
|
if (this.visible) {
|
|
FontRenderer fontrenderer = mc.fontRendererObj;
|
|
mc.getTextureManager().bindTexture(buttonTextures);
|
|
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
this.hovered = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width
|
|
&& mouseY < this.yPosition + this.height;
|
|
if (this.enabled && this.hovered) {
|
|
Mouse.showCursor(EnumCursorType.HAND);
|
|
}
|
|
int i = this.getHoverState(this.hovered);
|
|
GlStateManager.enableBlend();
|
|
GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, 1, 0);
|
|
GlStateManager.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + i * 20, this.width / 2, this.height);
|
|
this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2,
|
|
46 + i * 20, this.width / 2, this.height);
|
|
this.mouseDragged(mc, mouseX, mouseY);
|
|
int j = 14737632;
|
|
if (!this.enabled) {
|
|
j = 10526880;
|
|
} else if (this.hovered) {
|
|
j = 16777120;
|
|
}
|
|
|
|
if (fontScale == 1.0f) {
|
|
this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2,
|
|
this.yPosition + (this.height - 8) / 2, j);
|
|
} else {
|
|
float xScale = fontScale;
|
|
float yScale = 1.0f + (fontScale - 1.0f) * 0.7f;
|
|
float strWidth = fontrenderer.getStringWidth(displayString) / xScale;
|
|
GlStateManager.pushMatrix();
|
|
GlStateManager.translate(this.xPosition + this.width / 2,
|
|
this.yPosition + (this.height - 8 * yScale) / 2, 1.0f);
|
|
GlStateManager.scale(xScale, yScale, 1.0f);
|
|
GlStateManager.translate(-strWidth * 0.5f * xScale, 0.0f, 0.0f);
|
|
fontrenderer.drawStringWithShadow(displayString, 0, 0, j);
|
|
GlStateManager.popMatrix();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**+
|
|
* Fired when the mouse button is dragged. Equivalent of
|
|
* MouseListener.mouseDragged(MouseEvent e).
|
|
*/
|
|
protected void mouseDragged(Minecraft mc, int mouseX, int mouseY) {
|
|
}
|
|
|
|
/**+
|
|
* Fired when the mouse button is released. Equivalent of
|
|
* MouseListener.mouseReleased(MouseEvent e).
|
|
*/
|
|
public void mouseReleased(int mouseX, int mouseY) {
|
|
}
|
|
|
|
/**+
|
|
* Returns true if the mouse has been pressed on this control.
|
|
* Equivalent of MouseListener.mousePressed(MouseEvent e).
|
|
*/
|
|
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) {
|
|
return this.enabled && this.visible && mouseX >= this.xPosition && mouseY >= this.yPosition
|
|
&& mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
|
|
}
|
|
|
|
/**+
|
|
* Whether the mouse cursor is currently over the button.
|
|
*/
|
|
public boolean isMouseOver() {
|
|
return this.hovered;
|
|
}
|
|
|
|
public void drawButtonForegroundLayer(int mouseX, int mouseY) {
|
|
}
|
|
|
|
public void playPressSound(SoundHandler soundHandlerIn) {
|
|
soundHandlerIn.playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F));
|
|
}
|
|
|
|
public int getButtonWidth() {
|
|
return this.width;
|
|
}
|
|
|
|
public void setWidth(int width) {
|
|
this.width = width;
|
|
}
|
|
} |