aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-09-07 22:20:00 +0200
committerGitHub <noreply@github.com>2022-09-07 16:20:00 -0400
commit7c077e278b7266950a968a7e7f2f28b9a140ed96 (patch)
tree56b351874c48126f70e4ef6cbcf914ea832bdcd9
parent17cfe96255f1ec3ab5609aa153d4abed2075c435 (diff)
downloadOneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.gz
OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.bz2
OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.zip
new: option descriptions (#127)
-rw-r--r--api/OneConfig.api55
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java62
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java16
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java11
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java11
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/hud/HUDUtils.java27
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/assets/SVGs.java1
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/config/compatibility/vigilance/VigilanceConfig.java24
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/gui/HudGui.java81
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/hud/HudCore.java1
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java46
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/NVGAsset.java25
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/IOUtils.java48
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/NetworkUtils.java34
-rw-r--r--src/main/kotlin/cc/polyfrost/oneconfig/utils/dsl/IOUtilsDSL.kt12
-rw-r--r--src/main/kotlin/cc/polyfrost/oneconfig/utils/dsl/NetworkUtilsDSL.kt7
-rw-r--r--src/main/resources/assets/oneconfig/icons/InfoArrow.svg1
36 files changed, 383 insertions, 147 deletions
diff --git a/api/OneConfig.api b/api/OneConfig.api
index aafb10b..a922b10 100644
--- a/api/OneConfig.api
+++ b/api/OneConfig.api
@@ -28,6 +28,7 @@ public class cc/polyfrost/oneconfig/config/Config {
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Button : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun size ()I
public abstract fun subcategory ()Ljava/lang/String;
@@ -36,6 +37,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Checkbox : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun size ()I
public abstract fun subcategory ()Ljava/lang/String;
@@ -44,6 +46,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Color : java/lang/annotation/Annotation {
public abstract fun allowAlpha ()Z
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun size ()I
public abstract fun subcategory ()Ljava/lang/String;
@@ -55,6 +58,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Dropdown : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun options ()[Ljava/lang/String;
public abstract fun size ()I
@@ -63,6 +67,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/DualOption : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun left ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun right ()Ljava/lang/String;
@@ -96,6 +101,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/KeyBind : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun size ()I
public abstract fun subcategory ()Ljava/lang/String;
@@ -114,6 +120,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Slider : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun max ()F
public abstract fun min ()F
public abstract fun name ()Ljava/lang/String;
@@ -123,6 +130,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Switch : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun name ()Ljava/lang/String;
public abstract fun size ()I
public abstract fun subcategory ()Ljava/lang/String;
@@ -130,6 +138,7 @@ public abstract interface annotation class cc/polyfrost/oneconfig/config/annotat
public abstract interface annotation class cc/polyfrost/oneconfig/config/annotations/Text : java/lang/annotation/Annotation {
public abstract fun category ()Ljava/lang/String;
+ public abstract fun description ()Ljava/lang/String;
public abstract fun multiline ()Z
public abstract fun name ()Ljava/lang/String;
public abstract fun placeholder ()Ljava/lang/String;
@@ -281,16 +290,18 @@ public final class cc/polyfrost/oneconfig/config/data/PageLocation : java/lang/E
public abstract class cc/polyfrost/oneconfig/config/elements/BasicOption {
public final field category Ljava/lang/String;
+ public final field description Ljava/lang/String;
protected final field field Ljava/lang/reflect/Field;
public final field name Ljava/lang/String;
protected field parent Ljava/lang/Object;
public final field size I
public final field subcategory Ljava/lang/String;
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
public fun addDependency (Ljava/util/function/Supplier;)V
public fun addHideCondition (Ljava/util/function/Supplier;)V
public fun addListener (Ljava/lang/Runnable;)V
public abstract fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
+ public fun drawDescription (JIIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun drawLast (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun get ()Ljava/lang/Object;
public fun getField ()Ljava/lang/reflect/Field;
@@ -301,6 +312,7 @@ public abstract class cc/polyfrost/oneconfig/config/elements/BasicOption {
public fun keyTyped (CI)V
protected fun set (Ljava/lang/Object;)V
public fun setParent (Ljava/lang/Object;)V
+ protected fun shouldDrawDescription ()Z
}
public class cc/polyfrost/oneconfig/config/elements/OptionCategory {
@@ -702,9 +714,9 @@ public class cc/polyfrost/oneconfig/gui/elements/Slider : cc/polyfrost/oneconfig
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigButton : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/Runnable;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
- public fun <init> (Ljava/lang/reflect/Method;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+ public fun <init> (Ljava/lang/Runnable;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+ public fun <init> (Ljava/lang/reflect/Method;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigButton;
public static fun create (Ljava/lang/reflect/Method;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigButton;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
@@ -712,14 +724,14 @@ public class cc/polyfrost/oneconfig/gui/elements/config/ConfigButton : cc/polyfr
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
@@ -728,15 +740,16 @@ public class cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement : cc/
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun drawLast (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
+ protected fun shouldDrawDescription ()Z
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
@@ -757,7 +770,7 @@ public class cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo : cc/polyfros
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
@@ -774,7 +787,7 @@ public class cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton : cc/po
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;FFI)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;FFI)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigSlider;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
@@ -782,18 +795,19 @@ public class cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider : cc/polyfr
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
}
public class cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox : cc/polyfrost/oneconfig/config/elements/BasicOption {
- public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZ)V
+ public fun <init> (Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZ)V
public static fun create (Ljava/lang/reflect/Field;Ljava/lang/Object;)Lcc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox;
public fun draw (JIILcc/polyfrost/oneconfig/utils/InputHandler;)V
public fun getHeight ()I
public fun keyTyped (CI)V
+ protected fun shouldDrawDescription ()Z
}
public class cc/polyfrost/oneconfig/gui/elements/text/NumberInputField : cc/polyfrost/oneconfig/gui/elements/text/TextInputField {
@@ -1163,6 +1177,8 @@ public final class cc/polyfrost/oneconfig/renderer/AssetLoader {
public fun clearImages (J)V
public fun clearSVGs (J)V
public fun getImage (Ljava/lang/String;)I
+ public fun getNVGImage (Ljava/lang/String;)Lcc/polyfrost/oneconfig/renderer/NVGAsset;
+ public fun getNVGSVG (Ljava/lang/String;)Lcc/polyfrost/oneconfig/renderer/NVGAsset;
public fun getSVG (Ljava/lang/String;FF)I
public fun imageToIntBuffer (Ljava/lang/String;)Ljava/nio/IntBuffer;
public fun loadImage (JLcc/polyfrost/oneconfig/renderer/Image;)Z
@@ -1201,6 +1217,13 @@ public class cc/polyfrost/oneconfig/renderer/Image {
public fun <init> (Ljava/lang/String;I)V
}
+public class cc/polyfrost/oneconfig/renderer/NVGAsset {
+ protected fun <init> (III)V
+ public fun getHeight ()I
+ public fun getImage ()I
+ public fun getWidth ()I
+}
+
public final class cc/polyfrost/oneconfig/renderer/RenderManager {
public static fun color (JI)Lorg/lwjgl/nanovg/NVGColor;
public static fun drawBorderedText (Ljava/lang/String;FFII)I
@@ -1321,6 +1344,7 @@ public final class cc/polyfrost/oneconfig/utils/IOUtils {
public fun <init> ()V
public static fun copyImageToClipboard (Ljava/awt/Image;)V
public static fun copyStringToClipboard (Ljava/lang/String;)V
+ public static fun getFileChecksum (Ljava/io/File;)Ljava/lang/String;
public static fun getImageFromClipboard ()Ljava/awt/Image;
public static fun getStringFromClipboard ()Ljava/lang/String;
public static fun resourceToByteBuffer (Ljava/lang/String;)Ljava/nio/ByteBuffer;
@@ -1383,11 +1407,11 @@ public final class cc/polyfrost/oneconfig/utils/NetworkUtils {
public static fun browseLink (Ljava/lang/String;)V
public static fun downloadFile (Ljava/lang/String;Ljava/io/File;)Z
public static fun downloadFile (Ljava/lang/String;Ljava/io/File;Ljava/lang/String;IZ)Z
- public static fun getFileChecksum (Ljava/io/File;)Ljava/lang/String;
public static fun getJsonElement (Ljava/lang/String;)Lcom/google/gson/JsonElement;
public static fun getJsonElement (Ljava/lang/String;Ljava/lang/String;IZ)Lcom/google/gson/JsonElement;
public static fun getString (Ljava/lang/String;)Ljava/lang/String;
public static fun getString (Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String;
+ public static fun setupConnection (Ljava/lang/String;Ljava/lang/String;IZ)Ljava/io/InputStream;
}
public final class cc/polyfrost/oneconfig/utils/Notifications {
@@ -1555,6 +1579,10 @@ public final class cc/polyfrost/oneconfig/utils/dsl/ColorUtilsDSLKt {
public static final fun toColor (I)Lcc/polyfrost/oneconfig/config/core/OneColor;
}
+public final class cc/polyfrost/oneconfig/utils/dsl/IOUtilsDSLKt {
+ public static final fun checksum (Ljava/io/File;)Ljava/lang/String;
+}
+
public final class cc/polyfrost/oneconfig/utils/dsl/JsonUtilsDSLKt {
public static final fun asJsonElement (Ljava/lang/String;Z)Lcom/google/gson/JsonElement;
public static synthetic fun asJsonElement$default (Ljava/lang/String;ZILjava/lang/Object;)Lcom/google/gson/JsonElement;
@@ -1572,7 +1600,6 @@ public final class cc/polyfrost/oneconfig/utils/dsl/MultithreadingDSLKt {
public final class cc/polyfrost/oneconfig/utils/dsl/NetworkUtilsDSLKt {
public static final fun browseLink (Lcc/polyfrost/oneconfig/libs/universal/UDesktop;Ljava/lang/String;)V
- public static final fun checksum (Ljava/io/File;)Ljava/lang/String;
public static final fun download (Ljava/io/File;Ljava/lang/String;Ljava/lang/String;IZ)Z
public static synthetic fun download$default (Ljava/io/File;Ljava/lang/String;Ljava/lang/String;IZILjava/lang/Object;)Z
}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java
index 783832e..0a6b66f 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java
@@ -42,6 +42,8 @@ public @interface Button {
String text();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java
index daddfbd..825549d 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java
@@ -40,6 +40,8 @@ import java.lang.annotation.Target;
public @interface Checkbox {
String name();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java
index 09dfa68..caa69f3 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java
@@ -40,6 +40,8 @@ import java.lang.annotation.Target;
public @interface Color {
String name();
+ String description() default "";
+
boolean allowAlpha() default true;
int size() default 1;
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java
index c3ebc6c..02f2ff2 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java
@@ -42,6 +42,8 @@ public @interface Dropdown {
String[] options();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java
index 3bcef12..20b340b 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java
@@ -44,6 +44,8 @@ public @interface DualOption {
String right();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java
index d59a316..cab3a2f 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java
@@ -40,6 +40,8 @@ import java.lang.annotation.Target;
public @interface KeyBind {
String name();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java
index 8cdffc8..f01aaf6 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java
@@ -46,6 +46,8 @@ public @interface Slider {
int step() default 0;
+ String description() default "";
+
String category() default "General";
String subcategory() default "";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java
index ba8f5d7..253d08d 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java
@@ -40,6 +40,8 @@ import java.lang.annotation.Target;
public @interface Switch {
String name();
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java
index a2ced12..e68c2a9 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java
@@ -46,6 +46,8 @@ public @interface Text {
boolean multiline() default false;
+ String description() default "";
+
int size() default 1;
String category() default "General";
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java
index 3394c52..a06002c 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java
@@ -26,8 +26,15 @@
package cc.polyfrost.oneconfig.config.elements;
-import cc.polyfrost.oneconfig.config.Config;
+import cc.polyfrost.oneconfig.gui.animations.Animation;
+import cc.polyfrost.oneconfig.gui.animations.DummyAnimation;
+import cc.polyfrost.oneconfig.gui.animations.EaseOutQuad;
+import cc.polyfrost.oneconfig.internal.assets.Colors;
+import cc.polyfrost.oneconfig.internal.assets.SVGs;
+import cc.polyfrost.oneconfig.renderer.RenderManager;
+import cc.polyfrost.oneconfig.renderer.font.Fonts;
import cc.polyfrost.oneconfig.utils.InputHandler;
+import cc.polyfrost.oneconfig.utils.gui.GuiUtils;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -39,27 +46,36 @@ public abstract class BasicOption {
protected final Field field;
protected Object parent;
public final String name;
+ public final String description;
public final String category;
public final String subcategory;
private final ArrayList<Supplier<Boolean>> dependencies = new ArrayList<>();
private final ArrayList<Runnable> listeners = new ArrayList<>();
private final ArrayList<Supplier<Boolean>> hideConditions = new ArrayList<>();
+ private Animation descriptionAnimation = new DummyAnimation(0f);
+ private float mouseStillTime = 0f;
+ private float prevMouseX = 0f;
+ private float prevMouseY = 0f;
/**
* Initialize option
*
- * @param field variable attached to option (null for category)
- * @param parent the parent object of the field, used for getting and setting the variable
- * @param name name of option
- * @param size size of option, 0 for single column, 1 for double.
+ * @param field variable attached to option (null for category)
+ * @param parent the parent object of the field, used for getting and setting the variable
+ * @param name name of option
+ * @param description The description
+ * @param category The category
+ * @param subcategory The subcategory
+ * @param size size of option, 0 for single column, 1 for double.
*/
- public BasicOption(Field field, Object parent, String name, String category, String subcategory, int size) {
+ public BasicOption(Field field, Object parent, String name, String description, String category, String subcategory, int size) {
this.field = field;
this.parent = parent;
this.name = name;
- this.size = size;
+ this.description = description;
this.category = category;
this.subcategory = subcategory;
+ this.size = size;
if (field != null) field.setAccessible(true);
}
@@ -114,6 +130,38 @@ public abstract class BasicOption {
public void keyTyped(char key, int keyCode) {
}
+ public void drawDescription(long vg, int x, int y, int height, InputHandler inputHandler) {
+ if (description.trim().equals("")) return;
+ if (inputHandler.isAreaHovered(x - 16, y, size == 1 ? 512f : 1024f, height) && prevMouseX == inputHandler.mouseX() && prevMouseY == inputHandler.mouseY()) {
+ mouseStillTime += GuiUtils.getDeltaTime();
+ } else {
+ mouseStillTime = 0;
+ }
+ prevMouseX = inputHandler.mouseX();
+ prevMouseY = inputHandler.mouseY();
+ boolean shouldDrawDescription = shouldDrawDescription();
+ if (descriptionAnimation.getEnd() != 1f && shouldDrawDescription) {
+ descriptionAnimation = new EaseOutQuad(150, descriptionAnimation.get(0), 1f, false);
+ } else if (descriptionAnimation.getEnd() != 0f && !shouldDrawDescription) {
+ descriptionAnimation = new EaseOutQuad(150, descriptionAnimation.get(0), 0f, false);
+ }
+ if (!shouldDrawDescription && descriptionAnimation.isFinished()) return;
+ float textWidth = RenderManager.getTextWidth(vg, description, 16, Fonts.MEDIUM);
+ RenderManager.setAlpha(vg, descriptionAnimation.get());
+ RenderManager.drawRoundedRect(vg, x, y - 42f, textWidth + 68f, 44f, Colors.GRAY_700, 8f);
+ RenderManager.drawDropShadow(vg, x, y - 42f, textWidth + 68f, 44f, 32f, 0f, 8f);
+ RenderManager.drawSvg(vg, SVGs.INFO_ARROW, x + 16, y - 30f, 20f, 20f, Colors.WHITE_80);
+ RenderManager.drawText(vg, description, x + 52, y - 20, Colors.WHITE_80, 16, Fonts.MEDIUM);
+ RenderManager.setAlpha(vg, 1f);
+ }
+
+ /**
+ * @return If this option should draw its description
+ */
+ protected boolean shouldDrawDescription() {
+ return mouseStillTime > 350;
+ }
+
/**
* @return If the option is enabled, based on the dependencies
*/
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java
index 08c59b8..628e973 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java
@@ -90,11 +90,15 @@ public class OptionSubcategory {
for (int i = 0; i < filteredOptions.size(); i++) {
BasicOption option = filteredOptions.get(i);
option.draw(vg, x, optionY, inputHandler);
+ int op