aboutsummaryrefslogtreecommitdiff
path: root/src/compat/yacl/java/YaclIntegration.kt
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-13 21:46:46 +0200
committerLinnea Gräf <nea@nea.moe>2024-10-13 21:46:46 +0200
commit4e9b0ded27df8b6ce7f5b2fa1b4b1ddbc1cbd452 (patch)
treea489fdd97e6c4dde1bd77bf216ed9c2ec2657db3 /src/compat/yacl/java/YaclIntegration.kt
parent0cc77949c907d38497f8cdf6fd8198fe5f0a9440 (diff)
downloadFirmament-4e9b0ded27df8b6ce7f5b2fa1b4b1ddbc1cbd452.tar.gz
Firmament-4e9b0ded27df8b6ce7f5b2fa1b4b1ddbc1cbd452.tar.bz2
Firmament-4e9b0ded27df8b6ce7f5b2fa1b4b1ddbc1cbd452.zip
Add config categories
Diffstat (limited to 'src/compat/yacl/java/YaclIntegration.kt')
-rw-r--r--src/compat/yacl/java/YaclIntegration.kt24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/compat/yacl/java/YaclIntegration.kt b/src/compat/yacl/java/YaclIntegration.kt
index 6c9354a..fc5ff59 100644
--- a/src/compat/yacl/java/YaclIntegration.kt
+++ b/src/compat/yacl/java/YaclIntegration.kt
@@ -6,6 +6,7 @@ import dev.isxander.yacl3.api.ButtonOption
import dev.isxander.yacl3.api.ConfigCategory
import dev.isxander.yacl3.api.LabelOption
import dev.isxander.yacl3.api.Option
+import dev.isxander.yacl3.api.OptionGroup
import dev.isxander.yacl3.api.YetAnotherConfigLib
import dev.isxander.yacl3.api.controller.ControllerBuilder
import dev.isxander.yacl3.api.controller.DoubleSliderControllerBuilder
@@ -17,7 +18,6 @@ import kotlin.time.Duration.Companion.seconds
import kotlin.time.DurationUnit
import net.minecraft.client.gui.screen.Screen
import net.minecraft.text.Text
-import moe.nea.firmament.gui.config.AllConfigsGui
import moe.nea.firmament.gui.config.BooleanHandler
import moe.nea.firmament.gui.config.ClickHandler
import moe.nea.firmament.gui.config.DurationHandler
@@ -36,15 +36,20 @@ import moe.nea.firmament.util.FirmFormatters
@AutoService(FirmamentConfigScreenProvider::class)
class YaclIntegration : FirmamentConfigScreenProvider {
fun buildCategories() =
- AllConfigsGui.allConfigs
+ ManagedConfig.Category.entries
.map(::buildCategory)
- private fun buildCategory(managedConfig: ManagedConfig): ConfigCategory {
+ private fun buildCategory(category: ManagedConfig.Category): ConfigCategory {
return ConfigCategory.createBuilder()
- .name(managedConfig.labelText)
- .also {
- it.rootGroupBuilder()
- .options(buildOptions(managedConfig.sortedOptions))
+ .name(category.labelText)
+ .also { categoryB ->
+ category.configs.forEach {
+ categoryB.group(
+ OptionGroup.createBuilder()
+ .name(it.labelText)
+ .options(buildOptions(it.sortedOptions))
+ .build())
+ }
}
.build()
}
@@ -54,7 +59,10 @@ class YaclIntegration : FirmamentConfigScreenProvider {
private fun <T : Any> buildOption(managedOption: ManagedOption<T>): Option<*> {
val handler = managedOption.handler
- val binding = Binding.generic(managedOption.default(), managedOption::value, managedOption::value.setter)
+ val binding = Binding.generic(managedOption.default(),
+ managedOption::value,
+ { managedOption.value = it; managedOption.element.save() })
+
fun <T> createDefaultBinding(function: (Option<T>) -> ControllerBuilder<T>): Option.Builder<T> {
return Option.createBuilder<T>()
.name(managedOption.labelText)