Move Eventhandling around.

I still want to use fabric still "array backed" events, but these here are just a bit easier to use from kotlin.
This commit is contained in:
nea
2022-09-10 03:48:03 +02:00
parent d9353ff54c
commit ec66c82198
13 changed files with 149 additions and 44 deletions

View File

@@ -0,0 +1,36 @@
package moe.nea.notenoughupdates.features
import kotlinx.serialization.serializer
import moe.nea.notenoughupdates.NotEnoughUpdates
import moe.nea.notenoughupdates.features.world.FairySouls
import moe.nea.notenoughupdates.util.ConfigHolder
object FeatureManager : ConfigHolder<FeatureManager.Config>(serializer(), "features", ::Config) {
data class Config(
val enabledFeatures: MutableMap<String, Boolean> = mutableMapOf()
)
private val features = mutableMapOf<String, NEUFeature>()
fun autoload() {
loadFeature(FairySouls)
}
fun loadFeature(feature: NEUFeature) {
if (feature.identifier in features) {
NotEnoughUpdates.logger.error("Double registering feature ${feature.identifier}. Ignoring second instance $feature")
return
}
features[feature.identifier] = feature
}
fun isEnabled(identifier: String): Boolean? =
config.enabledFeatures[identifier]
fun setEnabled(identifier: String, value: Boolean) {
config.enabledFeatures[identifier] = value
markDirty()
}
}