aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt')
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt b/src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt
new file mode 100644
index 0000000..766cf1f
--- /dev/null
+++ b/src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt
@@ -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()
+ }
+
+}