summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/config
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-09-07 19:59:58 +0200
committerGitHub <noreply@github.com>2024-09-07 19:59:58 +0200
commit83d48c6aeee1656c5a6966839a1951e67fccbc53 (patch)
treea2c94427ba09763f36cb495ea91ffc4111ab322b /src/main/java/at/hannibal2/skyhanni/config
parent4663ebc4c9d5ef6ed890eced49d90dd8e3589fb5 (diff)
downloadskyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.tar.gz
skyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.tar.bz2
skyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.zip
Feature: Display Tab Widgets (#1276)
Co-authored-by: Cal <cwolfson58@gmail.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/config')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/core/config/PositionList.kt47
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/TabWidgetConfig.java40
5 files changed, 108 insertions, 9 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
index db70f7e89..4ac3f7925 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt
@@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.config
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.core.config.Position
+import at.hannibal2.skyhanni.config.core.config.PositionList
import at.hannibal2.skyhanni.data.jsonobjects.local.FriendsJson
import at.hannibal2.skyhanni.data.jsonobjects.local.JacobContestsJson
import at.hannibal2.skyhanni.data.jsonobjects.local.KnownFeaturesJson
@@ -39,7 +40,6 @@ import java.nio.file.StandardCopyOption
import java.util.EnumMap
import kotlin.concurrent.fixedRateTimer
import kotlin.reflect.KMutableProperty0
-import kotlin.reflect.KMutableProperty1
private fun GsonBuilder.registerIfBeta(create: TypeAdapterFactory): GsonBuilder {
return if (LorenzUtils.isBetaVersion()) {
@@ -66,8 +66,7 @@ class ConfigManager {
private fun setConfigHolder(type: ConfigFileType, value: Any) {
require(value.javaClass == type.clazz)
- @Suppress("UNCHECKED_CAST")
- (type.property as KMutableProperty0<Any>).set(value)
+ @Suppress("UNCHECKED_CAST") (type.property as KMutableProperty0<Any>).set(value)
(jsonHolder as MutableMap<ConfigFileType, Any>)[type] = value
}
@@ -96,8 +95,7 @@ class ConfigManager {
try {
findPositionLinks(features, mutableSetOf())
} catch (e: Exception) {
- if (LorenzEvent.isInGuardedEventHandler)
- throw e
+ if (LorenzEvent.isInGuardedEventHandler) throw e
}
}
@@ -125,7 +123,7 @@ class ConfigManager {
var missingConfigLink = false
for (field in obj.javaClass.fields) {
field.isAccessible = true
- if (field.type != Position::class.java) {
+ if (field.type != Position::class.java && field.type != PositionList::class.java) {
findPositionLinks(field.get(obj), slog)
continue
}
@@ -141,8 +139,13 @@ class ConfigManager {
}
continue
}
- val position = field.get(obj) as Position
- position.setLink(configLink)
+ if (field.type == Position::class.java) {
+ val position = field.get(obj) as Position
+ position.setLink(configLink)
+ } else if (field.type == PositionList::class.java) {
+ val list = field.get(obj) as PositionList
+ list.setLink(configLink)
+ }
}
if (missingConfigLink) {
println("")
@@ -245,7 +248,7 @@ class ConfigManager {
unit.toPath(),
file.toPath(),
StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
+ StandardCopyOption.ATOMIC_MOVE,
)
} catch (e: AccessDeniedException) {
if (loop == 5) {
diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java b/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java
index d0112766a..eb37131b1 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java
@@ -56,6 +56,10 @@ public class Position {
private boolean clicked = false;
public String internalName = null;
+ public Position() {
+ this(0, 0);
+ }
+
public Position(int x, int y) {
this(x, y, false, false);
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/config/PositionList.kt b/src/main/java/at/hannibal2/skyhanni/config/core/config/PositionList.kt
new file mode 100644
index 000000000..c33f54293
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/core/config/PositionList.kt
@@ -0,0 +1,47 @@
+package at.hannibal2.skyhanni.config.core.config
+
+import io.github.notenoughupdates.moulconfig.annotations.ConfigLink
+
+class PositionList() : ArrayList<Position>(), MutableList<Position> {
+
+ constructor(init: Collection<Position>) : this() {
+ this.addAll(init)
+ }
+
+ constructor(size: Int) : this() {
+ this.addAll((0..<size).map { Position() })
+ }
+
+ @Throws(NoSuchFieldException::class)
+ fun setLink(configLink: ConfigLink) {
+ this.configLink = configLink
+ forEach {
+ it.setLink(configLink)
+ }
+ }
+
+ private var configLink: ConfigLink? = null
+
+ override fun add(element: Position): Boolean {
+ if (configLink != null) {
+ element.setLink(configLink!!)
+ }
+ return super.add(element)
+ }
+
+ override fun addAll(elements: Collection<Position>): Boolean {
+ if (configLink != null) {
+ elements.forEach {
+ it.setLink(configLink!!)
+ }
+ }
+ return super.addAll(elements)
+ }
+
+ override fun set(index: Int, element: Position): Position {
+ if (configLink != null) {
+ element.setLink(configLink!!)
+ }
+ return super.set(index, element)
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
index 6355857f5..74ab755c9 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
@@ -87,6 +87,11 @@ public class GUIConfig {
public TextBoxConfig customTextBox = new TextBoxConfig();
@Expose
+ @ConfigOption(name = "Tab Widget", desc = "")
+ @Accordion
+ public TabWidgetConfig tabWidget = new TabWidgetConfig();
+
+ @Expose
@ConfigOption(name = "In-Game Date", desc = "")
@Accordion
public InGameDateConfig inGameDate = new InGameDateConfig();
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/TabWidgetConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/TabWidgetConfig.java
new file mode 100644
index 000000000..2d4b27cb1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/TabWidgetConfig.java
@@ -0,0 +1,40 @@
+package at.hannibal2.skyhanni.config.features.gui;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.PositionList;
+import at.hannibal2.skyhanni.features.gui.TabWidgetDisplay;
+import com.google.gson.annotations.Expose;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorInfoText;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigLink;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TabWidgetConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enables the gui elements for the selected widgets.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @ConfigOption(name = "Not working Info", desc = "If the information isn't shown in the tablist it won't show anything. Use /widget to turn on the information you need.")
+ @ConfigEditorInfoText
+ public String text1;
+
+ @ConfigOption(name = "Enable Info", desc = "Drag only one new value at time into the list, since the default locations are all the same.")
+ @ConfigEditorInfoText
+ public String text2;
+
+ @Expose
+ @ConfigOption(name = "Widgets", desc = "")
+ @ConfigEditorDraggableList
+ public List<TabWidgetDisplay> display = new ArrayList<>();
+
+ @Expose
+ @ConfigLink(owner = TabWidgetConfig.class, field = "enabled")
+ public PositionList displayPositions = new PositionList(TabWidgetDisplay.getEntries().size());
+}