aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/io/polyfrost/oneconfig/config/data/OptionType.java3
-rw-r--r--src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java4
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java55
-rw-r--r--src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java1
-rw-r--r--src/main/java/io/polyfrost/oneconfig/test/TestConfig.java30
-rw-r--r--src/main/resources/assets/oneconfig/textures/dropdown_arrow.pngbin0 -> 164 bytes
6 files changed, 87 insertions, 6 deletions
diff --git a/src/main/java/io/polyfrost/oneconfig/config/data/OptionType.java b/src/main/java/io/polyfrost/oneconfig/config/data/OptionType.java
index 8376786..9145790 100644
--- a/src/main/java/io/polyfrost/oneconfig/config/data/OptionType.java
+++ b/src/main/java/io/polyfrost/oneconfig/config/data/OptionType.java
@@ -24,6 +24,9 @@ public enum OptionType {
TEXT,
SLIDER,
COLOR,
+ /**
+ * Type: int
+ */
DROPDOWN,
MULTI_DROPDOWN,
INFO
diff --git a/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java b/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
index 2af4357..ca151db 100644
--- a/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
+++ b/src/main/java/io/polyfrost/oneconfig/config/interfaces/Config.java
@@ -120,8 +120,12 @@ public class Config {
case UNI_SELECTOR:
options.add(new ConfigUniSelector(field, option.name(), option.size(), option.options()));
break;
+ case DROPDOWN:
+ options.add(new ConfigDropdown(field, option.name(), option.size(), option.options()));
+ break;
case SLIDER:
options.add(new ConfigSlider(field, option.name(), option.size(), option.min(), option.max(), option.step()));
+ break;
}
}
}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java
new file mode 100644
index 0000000..8dea265
--- /dev/null
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java
@@ -0,0 +1,55 @@
+package io.polyfrost.oneconfig.gui.elements.config;
+
+import io.polyfrost.oneconfig.config.OneConfigConfig;
+import io.polyfrost.oneconfig.config.interfaces.BasicOption;
+import io.polyfrost.oneconfig.lwjgl.RenderManager;
+import io.polyfrost.oneconfig.lwjgl.font.Fonts;
+import org.lwjgl.nanovg.NanoVG;
+
+import java.lang.reflect.Field;
+
+public class ConfigDropdown extends BasicOption {
+ private final String[] options;
+ public ConfigDropdown(Field field, String name, int size, String[] options) {
+ super(field, name, size);
+ this.options = options;
+ }
+
+ @Override
+ public void draw(long vg, int x, int y) {
+
+ }
+
+ @Override
+ public void drawLast(long vg, int x, int y) {
+ int selected = 0;
+ try {
+ selected = (int) get();
+ } catch (IllegalAccessException ignored) {
+ }
+
+ RenderManager.drawString(vg, name, x, y + 16, OneConfigConfig.WHITE_90, 14f, Fonts.INTER_MEDIUM);
+
+ if (size == 1) {
+ RenderManager.drawRoundedRect(vg, x + 224, y, 256, 32, OneConfigConfig.GRAY_500, 12);
+ RenderManager.drawString(vg, options[selected], x + 236, y + 16, OneConfigConfig.WHITE_80, 14f, Fonts.INTER_MEDIUM);
+ RenderManager.drawRoundedRect(vg, x + 452, y + 4, 24, 24, OneConfigConfig.BLUE_600, 8);
+ RenderManager.drawImage(vg, "/assets/oneconfig/textures/dropdown_arrow.png", x + 459, y + 8, 10, 6);
+ NanoVG.nvgTranslate(vg, x + 469, y + 24);
+ } else {
+ RenderManager.drawRoundedRect(vg, x + 352, y, 640, 32, OneConfigConfig.GRAY_500, 12);
+ RenderManager.drawString(vg, options[selected], x + 364, y + 16, OneConfigConfig.WHITE_80, 14f, Fonts.INTER_MEDIUM);
+ RenderManager.drawRoundedRect(vg, x + 964, y + 4, 24, 24, OneConfigConfig.BLUE_600, 8);
+ RenderManager.drawImage(vg, "/assets/oneconfig/textures/dropdown_arrow.png", x + 971, y + 8, 10, 6);
+ NanoVG.nvgTranslate(vg, x + 981, y + 24);
+ }
+ NanoVG.nvgRotate(vg, (float) Math.toRadians(180));
+ RenderManager.drawImage(vg, "/assets/oneconfig/textures/dropdown_arrow.png", 0, 0, 10, 6);
+ NanoVG.nvgResetTransform(vg);
+ }
+
+ @Override
+ public int getHeight() {
+ return 32;
+ }
+}
diff --git a/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java b/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java
index b3f689c..b999137 100644
--- a/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java
+++ b/src/main/java/io/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java
@@ -32,7 +32,6 @@ public class ConfigTextBox extends BasicOption {
} catch (IllegalAccessException ignored) {
}
-
textField.draw(vg, x + (size == 1 && hasHalfSize() ? 224 : 352), y);
if (secure) RenderManager.drawImage(vg, "/assets/oneconfig/textures/eye.png", x + 967, y + 7, 18, 18, new Color(196,196,196).getRGB());
diff --git a/src/main/java/io/polyfrost/oneconfig/test/TestConfig.java b/src/main/java/io/polyfrost/oneconfig/test/TestConfig.java
index e482e37..08d4153 100644
--- a/src/main/java/io/polyfrost/oneconfig/test/TestConfig.java
+++ b/src/main/java/io/polyfrost/oneconfig/test/TestConfig.java
@@ -71,12 +71,32 @@ public class TestConfig extends Config {
public static boolean switchTest5;
@Option(
- name = "Test check",
- subcategory = "Other subcategory",
- type = OptionType.CHECKBOX,
- category = "Test category"
+ name = "Favorite food",
+ subcategory = "Dropdowns",
+ type = OptionType.DROPDOWN,
+ category = "Dropdowns",
+ options = {"Taco", "Pizza", "Hamburger", "Paimon"}
+ )
+ public static int dropdown1;
+
+ @Option(
+ name = "Favorite food",
+ subcategory = "Dropdowns",
+ type = OptionType.DROPDOWN,
+ category = "Dropdowns",
+ options = {"Taco", "Pizza", "Hamburger", "Paimon"}
+ )
+ public static int dropdown2;
+
+ @Option(
+ name = "Favorite food",
+ subcategory = "Dropdowns",
+ type = OptionType.DROPDOWN,
+ category = "Dropdowns",
+ size = 2,
+ options = {"Taco", "Pizza", "Hamburger", "Paimon"}
)
- public static boolean switchTest6;
+ public static int dropdown3;
public TestConfig() {
super(new Mod("hacks", ModType.UTIL_QOL, "ShadyDev", "1.0"), "hacksConfig.json");
diff --git a/src/main/resources/assets/oneconfig/textures/dropdown_arrow.png b/src/main/resources/assets/oneconfig/textures/dropdown_arrow.png
new file mode 100644
index 0000000..673458d
--- /dev/null
+++ b/src/main/resources/assets/oneconfig/textures/dropdown_arrow.png
Binary files differ