aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/polyfrost/oneconfig/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/polyfrost/oneconfig/gui')
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java14
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/SideBar.java67
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java79
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java71
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/pages/Page.java4
5 files changed, 211 insertions, 24 deletions
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java b/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
index 24bfe19..0879bd4 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/OneConfigGui.java
@@ -8,13 +8,20 @@ import io.polyfrost.oneconfig.lwjgl.RenderManager;
import io.polyfrost.oneconfig.lwjgl.font.Fonts;
import net.minecraft.client.gui.GuiScreen;
import org.lwjgl.input.Keyboard;
+import org.lwjgl.nanovg.NVGColor;
+import org.lwjgl.nanovg.NanoVG;
public class OneConfigGui extends GuiScreen {
public static OneConfigGui INSTANCE;
private final BasicElement element = new BasicElement(200, 200, 1, true);
+ public final int x = 320;
+ public final int y = 140;
+
+ private final SideBar sideBar = new SideBar();
+
private final TextInputField textInputField = new TextInputField(776, 32, "Search all of OneConfig...", false, false);
- private final BasicButton btn = new BasicButton(184, 36, "Socials", "/assets/oneconfig/textures/share.png", "/assets/oneconfig/textures/share2.png", 1, true);
+ private final BasicButton btn = new BasicButton(184, 36, "Socials", "/assets/oneconfig/textures/share.png", "/assets/oneconfig/textures/share2.png", 1, BasicButton.ALIGNMENT_CENTER);
public OneConfigGui() {
INSTANCE = this;
@@ -27,6 +34,7 @@ public class OneConfigGui extends GuiScreen {
RenderManager.drawRoundedRect(vg, 544, 140, 1056, 800, OneConfigConfig.GRAY_800, OneConfigConfig.CORNER_RADIUS_WIN);
RenderManager.drawRoundedRect(vg, 320, 140, 244, 800, OneConfigConfig.GRAY_900_80, OneConfigConfig.CORNER_RADIUS_WIN);
RenderManager.drawRect(vg, 544, 140, 20, 800, OneConfigConfig.GRAY_800);
+ //RenderManager.drawDropShadow(vg, 544, 140, 1056, 800, 20f, 32f, OneConfigConfig.GRAY_800);
} else {
// L;
}
@@ -34,10 +42,12 @@ public class OneConfigGui extends GuiScreen {
RenderManager.drawLine(vg, 544, 212, 1600, 212, 1, OneConfigConfig.GRAY_700);
RenderManager.drawLine(vg, 544, 140, 544, 940, 1, OneConfigConfig.GRAY_700);
- RenderManager.drawString(vg, "OneConfig", 389, 163, OneConfigConfig.WHITE, 18f, Fonts.INTER_BOLD);
+ RenderManager.drawImage(vg, "/assets/oneconfig/textures/icon.png", x + 19, y + 19, 42, 42);
+ RenderManager.drawString(vg, "OneConfig", x + 69, y + 23, OneConfigConfig.WHITE, 18f, Fonts.INTER_BOLD);
RenderManager.drawString(vg, "By Polyfrost", 389, 183, OneConfigConfig.WHITE, 12f, Fonts.INTER_REGULAR);
//element.setColorPalette(0);
try {
+ sideBar.draw(vg, x, y);
//element.draw(vg, 0, 0);
textInputField.draw(vg, 792, 548);
btn.draw(vg, 976, 870);
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/SideBar.java b/src/main/java/io/polyfrost/oneconfig/gui/SideBar.java
new file mode 100644
index 0000000..0b8659f
--- /dev/null
+++ b/src/main/java/io/polyfrost/oneconfig/gui/SideBar.java
@@ -0,0 +1,67 @@
+package io.polyfrost.oneconfig.gui;
+
+import io.polyfrost.oneconfig.config.OneConfigConfig;
+import io.polyfrost.oneconfig.gui.elements.BasicButton;
+import io.polyfrost.oneconfig.lwjgl.RenderManager;
+import io.polyfrost.oneconfig.lwjgl.font.Fonts;
+import io.polyfrost.oneconfig.utils.MathUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SideBar {
+ private final List<BasicButton> btnList = new ArrayList<>();
+
+ private float targetY = 0, currentY = 0;
+
+ public SideBar() {
+ btnList.add(new BasicButton(192, 36, "Dashboard", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Global Search", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Mods", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Performance", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Profiles", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Updates", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Screenshots", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "HUD Settings", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "General", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Close", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Minimize", "/assets/oneconfig/textures/share.png", null, -3, BasicButton.ALIGNMENT_LEFT));
+ btnList.add(new BasicButton(192, 36, "Edit HUD", "/assets/oneconfig/textures/share.png", null, 0, BasicButton.ALIGNMENT_LEFT));
+ }
+
+ public void draw(long vg, int x, int y) {
+ //percentMove = 36f;
+
+ currentY = MathUtils.easeInOutCirc(50, currentY, targetY - currentY, 120);
+ RenderManager.drawRoundedRect(vg, x + 16, currentY, 192, 36, OneConfigConfig.BLUE_600, OneConfigConfig.CORNER_RADIUS);
+ int i = 0;
+ if (targetY == 0) {
+ targetY = x + 16;
+ currentY = targetY;
+ }
+ for (BasicButton btn : btnList) {
+ btn.draw(vg, x + 16, y + 96 + i);
+ i += 44;
+ if (i == 88) { // +88
+ RenderManager.drawString(vg, "MOD CONFIG", x + 16, y + 200, OneConfigConfig.WHITE_90, 12f, Fonts.INTER_SEMIBOLD);
+ i = 122;
+ }
+ if (i == 298) {
+ RenderManager.drawString(vg, "PERSONALIZATION", x + 16, y + 420, OneConfigConfig.WHITE_90, 12f, Fonts.INTER_SEMIBOLD);
+ i = 342;
+ }
+ if (i == 474) {
+ i = 518;
+ }
+
+ if (btn.isClicked()) {
+ targetY = btn.y;
+ }
+ }
+
+
+
+
+
+ }
+}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
index e918287..39d5e9c 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/BasicButton.java
@@ -1,5 +1,6 @@
package io.polyfrost.oneconfig.gui.elements;
+import io.polyfrost.oneconfig.config.OneConfigConfig;
import io.polyfrost.oneconfig.lwjgl.RenderManager;
import io.polyfrost.oneconfig.lwjgl.font.Fonts;
import io.polyfrost.oneconfig.utils.ColorUtils;
@@ -12,34 +13,88 @@ public class BasicButton extends BasicElement {
protected String text;
protected String fileNameLeftIco, fileNameRightIco;
+ private final int thisAlignment;
+ private final float fontSize;
+ private final int colorPalette;
- public BasicButton(int width, int height, @NotNull String text, @Nullable String fileNameLeftIco, @Nullable String fileNameRightIco, int colorPalette, boolean hoverFx) {
- super(width, height, colorPalette, hoverFx);
+ public int x, y;
+ public static final int ALIGNMENT_LEFT = 0;
+ public static final int ALIGNMENT_CENTER = 1;
+
+ /**
+ * Create a new basic button. Used mostly on the homepage and the sidebar. Note: The button will not be drawn until you call {@link #draw(long, int, int)}.
+ * The button's content is centered on its total length, so the text is not always in the middle.
+ * @param text Text to display on the button. Has to be there.
+ * @param fileNameLeftIco file path of the icon to display on the left. Can be null if you don't want to display an icon on the left.
+ * @param fileNameRightIco file path of the icon to display on the right. Can be null if you don't want to display an icon on the right.
+ * @param colorPalette color palette to use. see {@link io.polyfrost.oneconfig.utils.ColorUtils} for more info. Can support color palette of -2, which is larger font and icons. Also supports -3, which is just the text changing color.
+ * @param alignment alignment of the button. ALIGNMENT_LEFT or ALIGNMENT_CENTER.
+ */
+ public BasicButton(int width, int height, @NotNull String text, @Nullable String fileNameLeftIco, @Nullable String fileNameRightIco, int colorPalette, int alignment) {
+ super(width, height, colorPalette, true);
this.text = text;
this.fileNameLeftIco = fileNameLeftIco;
this.fileNameRightIco = fileNameRightIco;
+ this.thisAlignment = alignment;
+ if(colorPalette == -2) {
+ fontSize = 24f;
+ this.colorPalette = -1;
+ } else {
+ fontSize = 14f;
+ this.colorPalette = colorPalette;
+ }
}
@Override
public void draw(long vg, int x, int y) {
+ this.x = x;
+ this.y = y;
+ int textColor = -1;
RenderManager.drawRectangle(vg, x, y, this.width, this.height, this.currentColor);
- final float fontSize;
- if(colorPalette == -1) {
- fontSize = 24f;
- } else fontSize = 14f;
- float width = RenderManager.getTextWidth(vg, text, fontSize);
- int middle = x + this.width / 2;
- RenderManager.drawString(vg, text,middle - width / 2, y + ((float) height / 2),-1, fontSize, Fonts.INTER_MEDIUM);
+ float contentWidth = RenderManager.getTextWidth(vg, text, fontSize);
if(fileNameLeftIco != null) {
- RenderManager.drawImage(vg, fileNameLeftIco, middle - width - 8, y + 8, 20, 20);
+ contentWidth += 28;
}
if(fileNameRightIco != null) {
- RenderManager.drawImage(vg, fileNameRightIco, middle + width - 8, y + 8, 20, 20);
+ contentWidth += 28;
+ }
+
+ if(this.colorPalette == -3) {
+ textColor = OneConfigConfig.WHITE_80;
+ if(hovered) textColor = OneConfigConfig.WHITE;
+ if(clicked) textColor = OneConfigConfig.WHITE_80;
+ }
+
+ if(thisAlignment == ALIGNMENT_CENTER) {
+ int middle = x + this.width / 2;
+ RenderManager.drawString(vg, text, middle - contentWidth / 2 + (fileNameLeftIco != null ? 28 : 0), y + ((float) height / 2), textColor, fontSize, Fonts.INTER_MEDIUM);
+ if (fileNameLeftIco != null) {
+ RenderManager.drawImage(vg, fileNameLeftIco, middle - contentWidth / 2, y + 8, 20, 20);
+ }
+ if (fileNameRightIco != null) {
+ RenderManager.drawImage(vg, fileNameRightIco, middle + contentWidth / 2 - (fileNameLeftIco != null ? 20 : 24), y + 8, 20, 20);
+ }
+ }
+ if(thisAlignment == ALIGNMENT_LEFT) {
+ if(fileNameLeftIco != null) {
+ RenderManager.drawImage(vg, fileNameLeftIco, x + 12, y + 8, 20, 20);
+ RenderManager.drawString(vg, text, x + 40, y + ((float) height / 2), textColor, fontSize, Fonts.INTER_MEDIUM);
+ } else {
+ RenderManager.drawString(vg, text, x + 12, y + ((float) height / 2), textColor, fontSize, Fonts.INTER_MEDIUM);
+ }
+ if(fileNameRightIco != null) {
+ RenderManager.drawImage(vg, fileNameRightIco, x + width - 28, y + 8, 20, 20);
+ }
}
this.update(x, y);
if(hoverFx) {
- currentColor = ColorUtils.getColor(currentColor, 1, hovered, clicked);
+ if(colorPalette == -3) {
+ currentColor = OneConfigConfig.TRANSPARENT;
+ return;
+ }
+ currentColor = ColorUtils.getColor(currentColor, colorPalette, hovered, clicked);
+
}
}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
index 7b56a40..e2c7602 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/TextInputField.java
@@ -1,24 +1,30 @@
package io.polyfrost.oneconfig.gui.elements;
+import com.google.common.base.Strings;
import io.polyfrost.oneconfig.config.OneConfigConfig;
import io.polyfrost.oneconfig.lwjgl.RenderManager;
import io.polyfrost.oneconfig.lwjgl.font.Fonts;
import net.minecraft.client.gui.GuiScreen;
+import org.jetbrains.annotations.NotNull;
import org.lwjgl.input.Keyboard;
+import static org.lwjgl.nanovg.NanoVG.*;
+
public class TextInputField extends BasicElement {
protected final String defaultText;
protected String input;
- protected final boolean mulitLine;
+ protected final boolean multiLine;
protected boolean password;
+ protected int caretPos;
+
public TextInputField(int width, int height, String defaultText, boolean multiLine, boolean password) {
super(width, height, false);
- this.mulitLine = multiLine;
+ this.multiLine = multiLine;
this.defaultText = defaultText;
this.password = password;
- this.input = defaultText;
+ this.input = "";
}
public void setInput(String input) {
@@ -35,11 +41,20 @@ public class TextInputField extends BasicElement {
@Override
public void draw(long vg, int x, int y) {
- RenderManager.drawRectangle(vg, x, y, width, height, OneConfigConfig.GRAY_700);
- RenderManager.drawRectangle(vg, x + 2, y + 2, width - 2, height - 4, OneConfigConfig.GRAY_900);
+ RenderManager.drawHollowRoundRect(vg, x, y, width, height, OneConfigConfig.GRAY_700, 12f, 2f);
super.update(x, y);
int color = toggled ? OneConfigConfig.WHITE : OneConfigConfig.WHITE_60;
- float width = RenderManager.getTextWidth(vg, input, 14f);
+ float width;
+ StringBuilder s = new StringBuilder();
+ int offset = 12;
+ if(!password) {
+ width = RenderManager.getTextWidth(vg, input.substring(0, caretPos), 14f);
+ } else {
+ for(int i = 0; i < input.length(); i++) {
+ s.append("*");
+ }
+ width = RenderManager.getTextWidth(vg, s.substring(0, caretPos), 14f);
+ }
if(toggled) {
RenderManager.drawLine(vg, x + width + 12, (float) y + 7, x + width + 13, (float) y + height - 7, 1, OneConfigConfig.WHITE);
@@ -48,8 +63,14 @@ public class TextInputField extends BasicElement {
if(input.equals("")){
RenderManager.drawString(vg, defaultText, x + 12, y + 17, color, 14f, Fonts.INTER_REGULAR);
}
- RenderManager.drawString(vg, input, x + 12, y + 17, color, 14f, Fonts.INTER_REGULAR);
+ nvgScissor(vg, x, y, this.width, height);
+ if(!password) {
+ RenderManager.drawString(vg, input, x + offset, y + 17, color, 14f, Fonts.INTER_REGULAR);
+ nvgResetScissor(vg);
+ } else {
+ RenderManager.drawString(vg, s.toString(), x + offset, y + 17, color, 14f, Fonts.INTER_REGULAR);
+ }
}
public void keyTyped(char c, int key) {
@@ -58,23 +79,48 @@ public class TextInputField extends BasicElement {
if(key == Keyboard.KEY_BACK) {
try {
input = input.substring(0, input.lastIndexOf(" "));
+ caretPos = input.length();
} catch (Exception e) {
input = "";
+ caretPos = 0;
}
}
return;
}
if (key == Keyboard.KEY_BACK) {
if (input.length() > 0) {
- input = input.substring(0, input.length() - 1);
- return;
+ if(caretPos == input.length()) {
+ input = input.substring(0, input.length() - 1);
+ } else {
+ input = input.substring(0, caretPos - 1) + input.substring(caretPos);
+ }
+ caretPos--;
}
+ return;
}
if(key == Keyboard.KEY_TAB) {
input += " ";
+ caretPos += 4;
+ return;
+ }
+
+ if (key == Keyboard.KEY_RIGHT) {
+ caretPos++;
+ if(caretPos > input.length()) {
+ caretPos = input.length();
+ }
+ return;
+ }
+ if (key == Keyboard.KEY_LEFT) {
+ caretPos--;
+ if(caretPos < 0) {
+ caretPos = 0;
+ }
return;
}
+
+
if(key == Keyboard.KEY_RETURN) {
toggled = false;
}
@@ -82,7 +128,12 @@ public class TextInputField extends BasicElement {
if(key == Keyboard.KEY_LCONTROL || key == Keyboard.KEY_RCONTROL || key == Keyboard.KEY_LMENU || key == Keyboard.KEY_RMENU || key == Keyboard.KEY_LMETA || key == Keyboard.KEY_RMETA || key == Keyboard.KEY_LSHIFT || key == Keyboard.KEY_RSHIFT || key == Keyboard.KEY_RETURN || key == Keyboard.KEY_CAPITAL || key == 221) {
return;
}
- input += c;
+ input = addCharAtPoint(caretPos, c);
+ caretPos++;
}
}
+
+ private @NotNull String addCharAtPoint(int index, char c) {
+ return input.substring(0, index) + c + input.substring(index);
+ }
}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/pages/Page.java b/src/main/java/io/polyfrost/oneconfig/gui/pages/Page.java
new file mode 100644
index 0000000..72fa3a3
--- /dev/null
+++ b/src/main/java/io/polyfrost/oneconfig/gui/pages/Page.java
@@ -0,0 +1,4 @@
+package io.polyfrost.oneconfig.gui.pages;
+
+public class Page {
+}