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(serializer(), "features", ::Config) { data class Config( val enabledFeatures: MutableMap = mutableMapOf() ) private val features = mutableMapOf() 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() } }