From 656958937fe29da90d7229b979996a68b5ea5b67 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Mon, 23 Dec 2024 23:02:08 +0100 Subject: feat: Add /dh command --- src/main/kotlin/gui/config/ManagedConfig.kt | 5 +++-- src/main/kotlin/gui/config/ManagedOption.kt | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src/main/kotlin/gui/config') diff --git a/src/main/kotlin/gui/config/ManagedConfig.kt b/src/main/kotlin/gui/config/ManagedConfig.kt index 641b673..7ddda9e 100644 --- a/src/main/kotlin/gui/config/ManagedConfig.kt +++ b/src/main/kotlin/gui/config/ManagedConfig.kt @@ -15,7 +15,6 @@ import org.lwjgl.glfw.GLFW import kotlinx.serialization.encodeToString import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject -import kotlin.enums.enumEntries import kotlin.io.path.createDirectories import kotlin.io.path.readText import kotlin.io.path.writeText @@ -135,7 +134,7 @@ abstract class ManagedConfig( return StringIdentifiable.createCodec { x() } } -// TODO: wait on https://youtrack.jetbrains.com/issue/KT-73434 + // TODO: wait on https://youtrack.jetbrains.com/issue/KT-73434 // protected inline fun choice( // propertyName: String, // noinline default: () -> E @@ -148,6 +147,8 @@ abstract class ManagedConfig( // default // ) // } + open fun onChange(option: ManagedOption<*>) { + } protected fun duration( propertyName: String, diff --git a/src/main/kotlin/gui/config/ManagedOption.kt b/src/main/kotlin/gui/config/ManagedOption.kt index d1aba83..383f392 100644 --- a/src/main/kotlin/gui/config/ManagedOption.kt +++ b/src/main/kotlin/gui/config/ManagedOption.kt @@ -6,7 +6,6 @@ import kotlinx.serialization.json.JsonObject 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( @@ -28,7 +27,13 @@ class ManagedOption( val descriptionTranslationKey = "firmament.config.${element.name}.${propertyName}.description" val labelDescription: Text = Text.translatable(descriptionTranslationKey) - lateinit var value: T + private var actualValue: T? = null + var value: T + get() = actualValue ?: error("Lateinit variable not initialized") + set(value) { + actualValue = value + element.onChange(this) + } override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { this.value = value -- cgit