diff options
author | nea <romangraef@gmail.com> | 2022-10-22 00:34:22 +0200 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-10-22 00:34:22 +0200 |
commit | f85c449ed586c7ced780423943e55bfa5abaeb0f (patch) | |
tree | 0c5f59c73cc9e5fcb07de6e3f1f102e2413def27 /src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt | |
parent | c98d4693f1fc9dcae8d78cb33e6233629f4cb2e7 (diff) | |
download | Firmament-f85c449ed586c7ced780423943e55bfa5abaeb0f.tar.gz Firmament-f85c449ed586c7ced780423943e55bfa5abaeb0f.tar.bz2 Firmament-f85c449ed586c7ced780423943e55bfa5abaeb0f.zip |
rudimentary config gui (again)
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt deleted file mode 100644 index 2acc99d..0000000 --- a/src/main/kotlin/moe/nea/notenoughupdates/util/config/IConfigHolder.kt +++ /dev/null @@ -1,75 +0,0 @@ -package moe.nea.notenoughupdates.util.config - -import java.util.concurrent.CopyOnWriteArrayList -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents -import kotlin.reflect.KClass -import net.minecraft.client.MinecraftClient -import net.minecraft.server.command.CommandOutput -import net.minecraft.text.Text -import moe.nea.notenoughupdates.NotEnoughUpdates -import moe.nea.notenoughupdates.events.ScreenOpenEvent - -interface IConfigHolder<T> { - companion object { - internal var badLoads: MutableList<String> = CopyOnWriteArrayList() - private val allConfigs: MutableMap<KClass<out IConfigHolder<*>>, IConfigHolder<*>> = mutableMapOf() - private val dirty: MutableSet<KClass<out IConfigHolder<*>>> = mutableSetOf() - - internal fun <T : IConfigHolder<K>, K> putConfig(kClass: KClass<T>, inst: IConfigHolder<K>) { - allConfigs[kClass] = inst - } - - fun <T : IConfigHolder<K>, K> markDirty(kClass: KClass<T>) { - if (kClass !in allConfigs) { - NotEnoughUpdates.logger.error("Tried to markDirty '${kClass.qualifiedName}', which isn't registered as 'IConfigHolder'") - return - } - dirty.add(kClass) - } - - private fun performSaves() { - val toSave = dirty.toList().also { - dirty.clear() - } - for (it in toSave) { - val obj = allConfigs[it] - if (obj == null) { - NotEnoughUpdates.logger.error("Tried to save '${it}', which isn't registered as 'ConfigHolder'") - continue - } - obj.save() - } - } - - private fun warnForResetConfigs(player: CommandOutput) { - if (badLoads.isNotEmpty()) { - player.sendMessage( - Text.literal( - "The following configs have been reset: ${badLoads.joinToString(", ")}. " + - "This can be intentional, but probably isn't." - ) - ) - badLoads.clear() - } - } - - fun registerEvents() { - ScreenOpenEvent.subscribe { event -> - performSaves() - val p = MinecraftClient.getInstance().player - if (p != null) { - warnForResetConfigs(p) - } - } - ClientLifecycleEvents.CLIENT_STOPPING.register(ClientLifecycleEvents.ClientStopping { - performSaves() - }) - } - - } - - val config: T - fun save() - fun markDirty() - fun load() -} |