diff options
author | Linnea Gräf <nea@nea.moe> | 2024-11-12 21:38:31 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-11-12 21:38:31 +0100 |
commit | fc88e54a2e88c87bcfd5e7dbd6866764faa3e503 (patch) | |
tree | c5ec7980b67c47ce0d89175cb6ac9a180a94c3f3 /src/main/kotlin/gui/config | |
parent | b774daef5bd961f955d365ce07bd5aa4acb161f4 (diff) | |
download | Firmament-fc88e54a2e88c87bcfd5e7dbd6866764faa3e503.tar.gz Firmament-fc88e54a2e88c87bcfd5e7dbd6866764faa3e503.tar.bz2 Firmament-fc88e54a2e88c87bcfd5e7dbd6866764faa3e503.zip |
feat: Add descriptions for config options
Diffstat (limited to 'src/main/kotlin/gui/config')
-rw-r--r-- | src/main/kotlin/gui/config/ManagedConfig.kt | 1 | ||||
-rw-r--r-- | src/main/kotlin/gui/config/ManagedOption.kt | 99 |
2 files changed, 51 insertions, 49 deletions
diff --git a/src/main/kotlin/gui/config/ManagedConfig.kt b/src/main/kotlin/gui/config/ManagedConfig.kt index c8b6ce8..8222a46 100644 --- a/src/main/kotlin/gui/config/ManagedConfig.kt +++ b/src/main/kotlin/gui/config/ManagedConfig.kt @@ -44,6 +44,7 @@ abstract class ManagedConfig( ; val labelText: Text = Text.translatable("firmament.config.category.${name.lowercase()}") + val description: Text = Text.translatable("firmament.config.category.${name.lowercase()}.description") val configs: MutableList<ManagedConfig> = mutableListOf() } diff --git a/src/main/kotlin/gui/config/ManagedOption.kt b/src/main/kotlin/gui/config/ManagedOption.kt index 4a8d773..d1aba83 100644 --- a/src/main/kotlin/gui/config/ManagedOption.kt +++ b/src/main/kotlin/gui/config/ManagedOption.kt @@ -1,5 +1,3 @@ - - package moe.nea.firmament.gui.config import io.github.notenoughupdates.moulconfig.observer.GetSetter @@ -9,54 +7,57 @@ import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty import net.minecraft.text.Text import moe.nea.firmament.Firmament +import moe.nea.firmament.util.ErrorUtil class ManagedOption<T : Any>( - val element: ManagedConfig, - val propertyName: String, - val default: () -> T, - val handler: ManagedConfig.OptionHandler<T> + val element: ManagedConfig, + val propertyName: String, + val default: () -> T, + val handler: ManagedConfig.OptionHandler<T> ) : ReadWriteProperty<Any?, T>, GetSetter<T> { - override fun set(newValue: T) { - this.value = newValue - } - - override fun get(): T { - return this.value - } - - val rawLabelText = "firmament.config.${element.name}.${propertyName}" - val labelText = Text.translatable(rawLabelText) - - lateinit var value: T - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { - this.value = value - } - - override fun getValue(thisRef: Any?, property: KProperty<*>): T { - return value - } - - fun load(root: JsonElement) { - if (root is JsonObject && root.containsKey(propertyName)) { - try { - value = handler.fromJson(root[propertyName]!!) - return - } catch (e: Exception) { - Firmament.logger.error( - "Exception during loading of config file ${element.name}. This will reset this config.", - e - ) - } - } - value = default() - } - - fun toJson(): JsonElement? { - return handler.toJson(value) - } - - fun appendToGui(guiapp: GuiAppender) { - handler.emitGuiElements(this, guiapp) - } + override fun set(newValue: T) { + this.value = newValue + } + + override fun get(): T { + return this.value + } + + val rawLabelText = "firmament.config.${element.name}.${propertyName}" + val labelText: Text = Text.translatable(rawLabelText) + val descriptionTranslationKey = "firmament.config.${element.name}.${propertyName}.description" + val labelDescription: Text = Text.translatable(descriptionTranslationKey) + + lateinit var value: T + + override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { + this.value = value + } + + override fun getValue(thisRef: Any?, property: KProperty<*>): T { + return value + } + + fun load(root: JsonElement) { + if (root is JsonObject && root.containsKey(propertyName)) { + try { + value = handler.fromJson(root[propertyName]!!) + return + } catch (e: Exception) { + ErrorUtil.softError( + "Exception during loading of config file ${element.name}. This will reset this config.", + e + ) + } + } + value = default() + } + + fun toJson(): JsonElement? { + return handler.toJson(value) + } + + fun appendToGui(guiapp: GuiAppender) { + handler.emitGuiElements(this, guiapp) + } } |