diff options
author | Linnea Gräf <nea@nea.moe> | 2024-06-15 19:54:47 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-06-15 19:54:47 +0200 |
commit | dff1f9c0e2b728dba902d72816104abccc61f511 (patch) | |
tree | 4b6df287f876851bb6e8b47657d90d0d10917e6f /src/main/kotlin/moe/nea/firmament/gui/config | |
parent | df0a0ded977a3613e57b64512ea77ff992387d43 (diff) | |
download | firmament-dff1f9c0e2b728dba902d72816104abccc61f511.tar.gz firmament-dff1f9c0e2b728dba902d72816104abccc61f511.tar.bz2 firmament-dff1f9c0e2b728dba902d72816104abccc61f511.zip |
WIP: Terrible MoulConfig rewrite
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/gui/config')
-rw-r--r-- | src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt | 72 |
1 files changed, 22 insertions, 50 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt index 1b2b2e4..a7d34b2 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt @@ -1,29 +1,21 @@ /* * SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe> + * SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe> * * SPDX-License-Identifier: GPL-3.0-or-later */ package moe.nea.firmament.gui.config -import io.github.cottonmc.cotton.gui.client.BackgroundPainter -import io.github.cottonmc.cotton.gui.client.CottonClientScreen -import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription -import io.github.cottonmc.cotton.gui.widget.WBox -import io.github.cottonmc.cotton.gui.widget.WButton -import io.github.cottonmc.cotton.gui.widget.WLabel -import io.github.cottonmc.cotton.gui.widget.WScrollPanel -import io.github.cottonmc.cotton.gui.widget.data.Axis -import io.github.cottonmc.cotton.gui.widget.data.Insets +import io.github.notenoughupdates.moulconfig.observer.ObservableList +import io.github.notenoughupdates.moulconfig.xml.Bind +import net.minecraft.client.gui.screen.Screen +import net.minecraft.text.Text import moe.nea.firmament.features.FeatureManager -import moe.nea.firmament.gui.WFixedPanel -import moe.nea.firmament.gui.WSplitPanel import moe.nea.firmament.repo.RepoManager import moe.nea.firmament.util.MC +import moe.nea.firmament.util.MoulConfigUtils import moe.nea.firmament.util.ScreenUtil.setScreenLater -import net.minecraft.client.gui.screen.Screen -import net.minecraft.text.Text -import kotlin.streams.asSequence object AllConfigsGui { @@ -32,45 +24,25 @@ object AllConfigsGui { RepoManager.Config ) + FeatureManager.allFeatures.mapNotNull { it.config } - fun makeScreen(parent: Screen? = null): CottonClientScreen { - val lwgd = LightweightGuiDescription() - var screen: CottonClientScreen? = null - val configs = allConfigs - val box = WBox(Axis.VERTICAL) - configs.forEach { config -> - val panel = WSplitPanel( - WLabel(Text.translatable("firmament.config.${config.name}")), - WButton(Text.translatable("firmanent.config.edit")).also { - it.setOnClick { - config.showConfigEditor(screen) - } - it.setSize(40, 18) - } - ) - panel.insets = Insets.ROOT_PANEL - panel.backgroundPainter = BackgroundPainter.VANILLA - box.add((panel)) - } - box.streamChildren().asSequence() - .forEach { it.setSize(380, 0) } - lwgd.setRootPanel(WBox( - Axis.VERTICAL - ).also { - it.insets = Insets.ROOT_PANEL - box.layout() - it.add(WFixedPanel((WScrollPanel((box)).also { - it.verticalScrollBar.scrollingSpeed = 12 - it.setSize(400, 300) - }))) - it.setSize(400, 300) - }) + fun <T> List<T>.toObservableList(): ObservableList<T> = ObservableList(this) - screen = object : CottonClientScreen(lwgd) { - override fun close() { - MC.screen = parent + class MainMapping(val allConfigs: List<ManagedConfig>) { + @get:Bind("configs") + val configs = allConfigs.map { EntryMapping(it) }.toObservableList() + + class EntryMapping(val config: ManagedConfig) { + @Bind + fun name() = Text.translatable("firmament.config.${config.name}").string + + @Bind + fun openEditor() { + config.showConfigEditor(MC.screen) } } - return screen + } + + fun makeScreen(parent: Screen? = null): Screen { + return MoulConfigUtils.loadScreen("config/main", MainMapping(allConfigs), parent) } fun showAllGuis() { |