aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-09-10 03:48:03 +0200
committernea <romangraef@gmail.com>2022-09-10 03:48:03 +0200
commitec66c82198fe2d61d699d553c1254f08b43fcc65 (patch)
treeb5d4efaf5d6d6699357c3afb1d6920d89d51b3b8 /src/main/kotlin/moe/nea/notenoughupdates/features/FeatureManager.kt
parentd9353ff54c20a08e4e078e0190fc1f364b08a2d1 (diff)
downloadFirmament-ec66c82198fe2d61d699d553c1254f08b43fcc65.tar.gz
Firmament-ec66c82198fe2d61d699d553c1254f08b43fcc65.tar.bz2
Firmament-ec66c82198fe2d61d699d553c1254f08b43fcc65.zip
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.
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()
+ }
+
+}