From 0a96dd618acba15269627c7eae8a2291fb2dc84a Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 14 Sep 2025 19:46:52 +0200 Subject: snapshot --- src/main/kotlin/util/data/DataHolder.kt | 5 ----- src/main/kotlin/util/data/IDataHolder.kt | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src/main/kotlin/util/data') diff --git a/src/main/kotlin/util/data/DataHolder.kt b/src/main/kotlin/util/data/DataHolder.kt index 9f21125..c138d78 100644 --- a/src/main/kotlin/util/data/DataHolder.kt +++ b/src/main/kotlin/util/data/DataHolder.kt @@ -1,11 +1,6 @@ package moe.nea.firmament.util.data -import java.nio.file.Path import kotlinx.serialization.KSerializer -import kotlin.io.path.exists -import kotlin.io.path.readText -import kotlin.io.path.writeText -import moe.nea.firmament.Firmament import moe.nea.firmament.gui.config.storage.ConfigStorageClass abstract class DataHolder( diff --git a/src/main/kotlin/util/data/IDataHolder.kt b/src/main/kotlin/util/data/IDataHolder.kt index 81198ee..541fc1b 100644 --- a/src/main/kotlin/util/data/IDataHolder.kt +++ b/src/main/kotlin/util/data/IDataHolder.kt @@ -9,23 +9,27 @@ import moe.nea.firmament.gui.config.storage.ConfigStorageClass import moe.nea.firmament.gui.config.storage.FirmamentConfigLoader import moe.nea.firmament.util.SBData -sealed interface IDataHolder { +sealed class IDataHolder { fun markDirty() { FirmamentConfigLoader.markDirty(this) } - fun keys(): Collection - fun saveTo(key: T): JsonObject - fun loadFrom(key: T, jsonObject: JsonObject) - fun clear() - val storageClass: ConfigStorageClass + init { + require(this.javaClass.getAnnotation(Config::class.java) != null) + } + + abstract fun keys(): Collection + abstract fun saveTo(key: T): JsonObject + abstract fun loadFrom(key: T, jsonObject: JsonObject) + abstract fun clear() + abstract val storageClass: ConfigStorageClass } open class ProfileKeyedConfig( val prefix: String, val serializer: KSerializer, val default: () -> T, -) : IDataHolder { +) : IDataHolder() { override val storageClass: ConfigStorageClass get() = ConfigStorageClass.PROFILE @@ -65,7 +69,7 @@ abstract class GenericConfig( val prefix: String, val serializer: KSerializer, val default: () -> T, -) : IDataHolder { +) : IDataHolder() { private var _data: T? = null -- cgit