diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/config')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt | 35 | ||||
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java | 2 |
2 files changed, 20 insertions, 17 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt index fc654983c..36c718028 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt @@ -35,7 +35,10 @@ import java.io.OutputStreamWriter import java.nio.charset.StandardCharsets import java.nio.file.Files import java.nio.file.StandardCopyOption +import java.util.EnumMap import kotlin.concurrent.fixedRateTimer +import kotlin.reflect.KMutableProperty0 +import kotlin.reflect.KMutableProperty1 private fun GsonBuilder.registerIfBeta(create: TypeAdapterFactory): GsonBuilder { return if (LorenzUtils.isBetaVersion()) { @@ -53,20 +56,20 @@ class ConfigManager { var configDirectory = File("config/skyhanni") } - val features get() = jsonHolder[ConfigFileType.FEATURES] as Features - val sackData get() = jsonHolder[ConfigFileType.SACKS] as SackData - val friendsData get() = jsonHolder[ConfigFileType.FRIENDS] as FriendsJson - val knownFeaturesData get() = jsonHolder[ConfigFileType.KNOWN_FEATURES] as KnownFeaturesJson - val jacobContestData get() = jsonHolder[ConfigFileType.JACOB_CONTESTS] as JacobContestsJson - val visualWordsData get() = jsonHolder[ConfigFileType.VISUAL_WORDS] as VisualWordsJson - private val logger = LorenzLogger("config_manager") - private val jsonHolder = mutableMapOf<ConfigFileType, Any>() + private val jsonHolder: Map<ConfigFileType, Any> = EnumMap(ConfigFileType::class.java) lateinit var processor: MoulConfigProcessor<Features> private var disableSaving = false + private fun setConfigHolder(type: ConfigFileType, value: Any) { + require(value.javaClass == type.clazz) + @Suppress("UNCHECKED_CAST") + (type.property as KMutableProperty0<Any>).set(value) + (jsonHolder as MutableMap<ConfigFileType, Any>)[type] = value + } + fun firstLoad() { if (jsonHolder.isNotEmpty()) { logger.log("Loading config despite config being already loaded?") @@ -75,7 +78,7 @@ class ConfigManager { for (fileType in ConfigFileType.entries) { - jsonHolder[fileType] = firstLoadFile(fileType.file, fileType, fileType.clazz.newInstance()) + setConfigHolder(fileType, firstLoadFile(fileType.file, fileType, fileType.clazz.newInstance())) } // TODO use SecondPassedEvent @@ -260,13 +263,13 @@ class ConfigManager { } } -enum class ConfigFileType(val fileName: String, val clazz: Class<*>) { - FEATURES("config", Features::class.java), - SACKS("sacks", SackData::class.java), - FRIENDS("friends", FriendsJson::class.java), - KNOWN_FEATURES("known_features", KnownFeaturesJson::class.java), - JACOB_CONTESTS("jacob_contests", JacobContestsJson::class.java), - VISUAL_WORDS("visual_words", VisualWordsJson::class.java), +enum class ConfigFileType(val fileName: String, val clazz: Class<*>, val property: KMutableProperty0<*>) { + FEATURES("config", Features::class.java, SkyHanniMod::feature), + SACKS("sacks", SackData::class.java, SkyHanniMod::sackData), + FRIENDS("friends", FriendsJson::class.java, SkyHanniMod::friendsData), + KNOWN_FEATURES("known_features", KnownFeaturesJson::class.java, SkyHanniMod::knownFeaturesData), + JACOB_CONTESTS("jacob_contests", JacobContestsJson::class.java, SkyHanniMod::jacobContestsData), + VISUAL_WORDS("visual_words", VisualWordsJson::class.java, SkyHanniMod::visualWordsData), ; val file by lazy { File(ConfigManager.configDirectory, "$fileName.json") } diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java b/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java index 26b0a1e7d..140fbf007 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java +++ b/src/main/java/at/hannibal2/skyhanni/config/core/config/Position.java @@ -91,7 +91,7 @@ public class Position { } public float getEffectiveScale() { - return Math.max(Math.min(getScale() * SkyHanniMod.getFeature().gui.globalScale, 10F), 0.1F); + return Math.max(Math.min(getScale() * SkyHanniMod.feature.gui.globalScale, 10F), 0.1F); } public float getScale() { |
