diff options
| author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-09-07 22:20:00 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-07 16:20:00 -0400 |
| commit | 7c077e278b7266950a968a7e7f2f28b9a140ed96 (patch) | |
| tree | 56b351874c48126f70e4ef6cbcf914ea832bdcd9 | |
| parent | 17cfe96255f1ec3ab5609aa153d4abed2075c435 (diff) | |
| download | OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.gz OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.bz2 OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.zip | |
new: option descriptions (#127)
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 |
