aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java170
1 files changed, 150 insertions, 20 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java b/src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java
index b15300e..6c36256 100644
--- a/src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java
+++ b/src/main/java/cc/polyfrost/oneconfig/hud/BasicHud.java
@@ -3,39 +3,134 @@ package cc.polyfrost.oneconfig.hud;
import cc.polyfrost.oneconfig.lwjgl.OneColor;
import cc.polyfrost.oneconfig.lwjgl.RenderManager;
-import java.awt.*;
-
public abstract class BasicHud {
- public boolean enabled = true;
- public boolean rounded = false;
- public boolean border = false;
- public OneColor bgColor = new OneColor(0, 0, 0, 120);
- public OneColor borderColor = new OneColor(0, 0, 0);
- public float cornerRadius = 2;
- public float borderSize = 2;
- public double xUnscaled = 0;
- public double yUnscaled = 0;
- public float scale = 1;
- public float paddingX = 5;
- public float paddingY = 5;
+ public boolean enabled;
+ public boolean rounded;
+ public boolean border;
+ public OneColor bgColor;
+ public OneColor borderColor;
+ public float cornerRadius;
+ public float borderSize;
+ public double xUnscaled;
+ public double yUnscaled;
+ public float scale;
+ public float paddingX;
+ public float paddingY;
public BasicHud parent;
public BasicHud childRight;
public BasicHud childBottom;
- public abstract int getWidth(float scale);
+ /**
+ * @param enabled If the hud is enabled
+ * @param x X-coordinate of hud on a 1080p display
+ * @param y Y-coordinate of hud on a 1080p display
+ * @param scale Scale of the hud
+ * @param rounded If the corner is rounded or not
+ * @param cornerRadius Radius of the corner
+ * @param paddingX Horizontal background padding
+ * @param paddingY Vertical background padding
+ * @param bgColor Background color
+ * @param border If the hud has a border or not
+ * @param borderSize Thickness of the border
+ * @param borderColor The color of the border
+ */
+ public BasicHud(boolean enabled, int x, int y, float scale, boolean rounded, int cornerRadius, int paddingX, int paddingY, OneColor bgColor, boolean border, float borderSize, OneColor borderColor) {
+ this.enabled = enabled;
+ this.scale = scale;
+ this.rounded = rounded;
+ this.cornerRadius = cornerRadius;
+ this.paddingX = paddingX;
+ this.paddingY = paddingY;
+ this.bgColor = bgColor;
+ this.border = border;
+ this.borderSize = borderSize;
+ this.borderColor = borderColor;
+ if (x / 1920d <= 0.5d) xUnscaled = x / 1920d;
+ else xUnscaled = (x + getWidth(scale)) / 1920d;
+ if (y / 1080d <= 0.5d) yUnscaled = y / 1080d;
+ else yUnscaled = (y + getHeight(scale)) / 1090d;
+ }
- public abstract int getHeight(float scale);
+ /**
+ * @param enabled If the hud is enabled
+ * @param x X-coordinate of hud on a 1080p display
+ * @param y Y-coordinate of hud on a 1080p display
+ * @param scale Scale of the hud
+ */
+ public BasicHud(boolean enabled, int x, int y, int scale) {
+ this(enabled, x, y, scale, false, 2, 5, 5, new OneColor(0, 0, 0, 120), false, 2, new OneColor(0, 0, 0));
+ }
+ /**
+ * @param enabled If the hud is enabled
+ * @param x X-coordinate of hud on a 1080p display
+ * @param y Y-coordinate of hud on a 1080p display
+ */
+ public BasicHud(boolean enabled, int x, int y) {
+ this(enabled, x, y, 1, false, 2, 5, 5, new OneColor(0, 0, 0, 120), false, 2, new OneColor(0, 0, 0));
+ }
+
+ /**
+ * @param enabled If the hud is enabled
+ */
+ public BasicHud(boolean enabled) {
+ this(enabled, 0, 0, 1, false, 2, 5, 5, new OneColor(0, 0, 0, 120), false, 2, new OneColor(0, 0, 0));
+ }
+
+ /**
+ * Function called when drawing the hud
+ * @param x Top left x-coordinate of the hud
+ * @param y Top left y-coordinate of the hud
+ * @param scale Scale of the hud
+ */
public abstract void draw(int x, int y, float scale);
+ /**
+ * Function called when drawing the example version of the hud.
+ * This is used in for example, the hud editor gui.
+ * @param x Top left x-coordinate of the hud
+ * @param y Top left y-coordinate of the hud
+ * @param scale Scale of the hud
+ */
+ public void drawExample(int x, int y, float scale) {
+ draw(x, y, scale);
+ }
+
+ /**
+ * @param scale Scale of the hud
+ * @return The width of the hud
+ */
+ public abstract int getWidth(float scale);
+
+ /**
+ * @param scale Scale of the hud
+ * @return The height of the hud
+ */
+ public abstract int getHeight(float scale);
+
+ /**
+ * @param scale Scale of the hud
+ * @return The width of the example version of the hud
+ */
public int getExampleWidth(float scale) {
return getWidth(scale);
}
+ /**
+ * @param scale Scale of the hud
+ * @return The height of the example version of the hud
+ */
public int getExampleHeight(float scale) {
return getHeight(scale);
}
+ /**
+ * Draw the background, the hud and all childed huds, used by HudCore
+ * @param x X-coordinate
+ * @param y Y-coordinate
+ * @param scale Scale of the hud
+ * @param background If background should be drawn or not
+ */
public void drawAll(float x, float y, float scale, boolean background) {
if (background) drawBackground(x, y, getTotalWidth(scale), getTotalHeight(scale), scale);
draw((int) (x + paddingX * scale / 2f), (int) (y + paddingY * scale / 2f), scale);
@@ -45,6 +140,13 @@ public abstract class BasicHud {
childBottom.drawAll((int) x, (int) y + paddingY * scale / 2f + getHeight(scale), childBottom.scale, false);
}
+ /**
+ * Draw example version of the background, the hud and all childed huds, used by HudGui
+ * @param x X-coordinate
+ * @param y Y-coordinate
+ * @param scale Scale of the hud
+ * @param background If background should be drawn or not
+ */
public void drawExampleAll(float x, float y, float scale, boolean background) {
if (background) drawBackground(x, y, getTotalExampleWidth(scale), getTotalExampleHeight(scale), scale);
drawExample((int) (x + paddingX * scale / 2f), (int) (y + paddingY * scale / 2f), scale);
@@ -54,10 +156,14 @@ public abstract class BasicHud {
childBottom.drawExampleAll((int) x, (int) y + paddingY * scale / 2f + getHeight(scale), childBottom.scale, false);
}
- public void drawExample(int x, int y, float scale) {
- draw(x, y, scale);
- }
-
+ /**
+ * Draw example version of the background, the hud and all childed huds, used by HudGui
+ * @param x X-coordinate
+ * @param y Y-coordinate
+ * @param width Width of the hud
+ * @param height Height of the hud
+ * @param scale Scale of the hud
+ */
private void drawBackground(float x, float y, float width, float height, float scale) {
RenderManager.setupAndDraw(true, (vg) -> {
if (rounded) {
@@ -70,6 +176,10 @@ public abstract class BasicHud {
});
}
+ /**
+ * @param screenWidth width of the screen
+ * @return X-coordinate of the hud
+ */
public float getXScaled(int screenWidth) {
if (parent != null && parent.childRight == this) {
return parent.getXScaled(screenWidth) + parent.getWidth(parent.scale) + parent.paddingX * parent.scale / 2f;
@@ -82,6 +192,10 @@ public abstract class BasicHud {
return (float) (screenWidth - (1d - xUnscaled) * screenWidth - (getWidth(scale) + paddingX * scale));
}
+ /**
+ * @param screenHeight height of the screen
+ * @return Y-coordinate of the hud
+ */
public float getYScaled(int screenHeight) {
if (parent != null && parent.childBottom == this) {
return parent.getYScaled(screenHeight) + parent.getHeight(parent.scale) + parent.paddingY * parent.scale / 2f;
@@ -94,6 +208,10 @@ public abstract class BasicHud {
return (float) (screenHeight - (1d - yUnscaled) * screenHeight - (getHeight(scale) + paddingY * scale));
}
+ /**
+ * @param scale Scale of the hud
+ * @return The width of the hud and all childed huds
+ */
public float getTotalWidth(float scale) {
float width = getWidth(scale);
if (childRight != null) width += childRight.getTotalWidth(childRight.scale) + paddingY * scale / 2f;
@@ -101,6 +219,10 @@ public abstract class BasicHud {
return width;
}
+ /**
+ * @param scale Scale of the hud
+ * @return The height of the hud and all childed huds
+ */
public float getTotalHeight(float scale) {
float height = getHeight(scale);
if (childBottom != null) height += childBottom.getTotalHeight(childBottom.scale) + paddingY * scale / 2f;
@@ -108,6 +230,10 @@ public abstract class BasicHud {
return height;
}
+ /**
+ * @param scale Scale of the hud
+ * @return The example width of the hud and all childed huds
+ */
public float getTotalExampleWidth(float scale) {
float width = getExampleWidth(scale);
if (childRight != null) width += childRight.getTotalExampleWidth(childRight.scale) + paddingX * scale / 2f;
@@ -115,6 +241,10 @@ public abstract class BasicHud {
return width;
}
+ /**
+ * @param scale Scale of the hud
+ * @return The example height of the hud and all childed huds
+ */
public float getTotalExampleHeight(float scale) {
float height = getExampleHeight(scale);
if (childBottom != null) height += childBottom.getTotalExampleHeight(childBottom.scale) + paddingY * scale / 2f;