155 lines
4.6 KiB
Java
155 lines
4.6 KiB
Java
package me.rigamortis.seppuku.api.gui.hud.component;
|
|
|
|
import me.rigamortis.seppuku.Seppuku;
|
|
import me.rigamortis.seppuku.api.util.RenderUtil;
|
|
import me.rigamortis.seppuku.impl.gui.hud.GuiHudEditor;
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
/**
|
|
* Author Seth
|
|
* 12/10/2019 @ 1:26 AM.
|
|
*/
|
|
public class ResizableHudComponent extends DraggableHudComponent {
|
|
|
|
protected final float CLICK_ZONE = 2;
|
|
private boolean resizeDragging;
|
|
private float resizeDeltaX;
|
|
private float resizeDeltaY;
|
|
private float initialWidth;
|
|
private float initialHeight;
|
|
private float maxWidth;
|
|
private float maxHeight;
|
|
|
|
public ResizableHudComponent(String name, float initialWidth, float initialHeight, float maxWidth, float maxHeight) {
|
|
super(name);
|
|
this.initialWidth = initialWidth;
|
|
this.initialHeight = initialHeight;
|
|
this.maxWidth = maxWidth;
|
|
this.maxHeight = maxHeight;
|
|
}
|
|
|
|
@Override
|
|
public void mouseClick(int mouseX, int mouseY, int button) {
|
|
super.mouseClick(mouseX, mouseY, button);
|
|
final boolean inside = mouseX >= this.getX() + this.getW() - CLICK_ZONE && mouseX <= this.getX() + this.getW() + CLICK_ZONE && mouseY >= this.getY() + this.getH() - CLICK_ZONE && mouseY <= this.getY() + this.getH() + CLICK_ZONE;
|
|
|
|
if (inside) {
|
|
if (button == 0) {
|
|
this.setResizeDragging(true);
|
|
this.setDragging(false);
|
|
this.setResizeDeltaX(mouseX - this.getW());
|
|
this.setResizeDeltaY(mouseY - this.getH());
|
|
Seppuku.INSTANCE.getHudManager().moveToTop(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public void render(int mouseX, int mouseY, float partialTicks) {
|
|
super.render(mouseX, mouseY, partialTicks);
|
|
|
|
if (this.isResizeDragging()) {
|
|
this.setW(mouseX - this.getResizeDeltaX());
|
|
this.setH(mouseY - this.getResizeDeltaY());
|
|
this.clampMaxs();
|
|
}
|
|
|
|
if (Minecraft.getMinecraft().currentScreen instanceof GuiHudEditor) {
|
|
RenderUtil.drawRect(this.getX() + this.getW() - CLICK_ZONE, this.getY() + this.getH() - CLICK_ZONE, this.getX() + this.getW() + CLICK_ZONE, this.getY() + this.getH() + CLICK_ZONE, 0x90CCCCCC);
|
|
}
|
|
|
|
final boolean insideClickZone = mouseX >= this.getX() + this.getW() - CLICK_ZONE && mouseX <= this.getX() + this.getW() + CLICK_ZONE && mouseY >= this.getY() + this.getH() - CLICK_ZONE && mouseY <= this.getY() + this.getH() + CLICK_ZONE;
|
|
if (insideClickZone) {
|
|
RenderUtil.drawRect(this.getX() + this.getW() - CLICK_ZONE, this.getY() + this.getH() - CLICK_ZONE, this.getX() + this.getW() + CLICK_ZONE, this.getY() + this.getH() + CLICK_ZONE, 0x45FFFFFF);
|
|
}
|
|
|
|
this.clampMaxs();
|
|
}
|
|
|
|
@Override
|
|
public void mouseRelease(int mouseX, int mouseY, int button) {
|
|
super.mouseRelease(mouseX, mouseY, button);
|
|
|
|
if (button == 0) {
|
|
if (this.isResizeDragging()) {
|
|
this.setResizeDragging(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void clampMaxs() {
|
|
if (this.getW() <= this.getInitialWidth()) {
|
|
this.setW(this.getInitialWidth());
|
|
}
|
|
|
|
if (this.getH() <= this.getInitialHeight()) {
|
|
this.setH(this.getInitialHeight());
|
|
}
|
|
|
|
if (this.getW() >= this.getMaxWidth()) {
|
|
this.setW(this.getMaxWidth());
|
|
}
|
|
|
|
if (this.getH() >= this.getMaxHeight()) {
|
|
this.setH(this.getMaxHeight());
|
|
}
|
|
}
|
|
|
|
public boolean isResizeDragging() {
|
|
return resizeDragging;
|
|
}
|
|
|
|
public void setResizeDragging(boolean resizeDragging) {
|
|
this.resizeDragging = resizeDragging;
|
|
}
|
|
|
|
public float getResizeDeltaX() {
|
|
return resizeDeltaX;
|
|
}
|
|
|
|
public void setResizeDeltaX(float resizeDeltaX) {
|
|
this.resizeDeltaX = resizeDeltaX;
|
|
}
|
|
|
|
public float getResizeDeltaY() {
|
|
return resizeDeltaY;
|
|
}
|
|
|
|
public void setResizeDeltaY(float resizeDeltaY) {
|
|
this.resizeDeltaY = resizeDeltaY;
|
|
}
|
|
|
|
public float getInitialWidth() {
|
|
return initialWidth;
|
|
}
|
|
|
|
public void setInitialWidth(float initialWidth) {
|
|
this.initialWidth = initialWidth;
|
|
}
|
|
|
|
public float getInitialHeight() {
|
|
return initialHeight;
|
|
}
|
|
|
|
public void setInitialHeight(float initialHeight) {
|
|
this.initialHeight = initialHeight;
|
|
}
|
|
|
|
public float getMaxWidth() {
|
|
return maxWidth;
|
|
}
|
|
|
|
public void setMaxWidth(float maxWidth) {
|
|
this.maxWidth = maxWidth;
|
|
}
|
|
|
|
public float getMaxHeight() {
|
|
return maxHeight;
|
|
}
|
|
|
|
public void setMaxHeight(float maxHeight) {
|
|
this.maxHeight = maxHeight;
|
|
}
|
|
}
|