aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/firmament/gui/config
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-06-15 19:54:47 +0200
committerLinnea Gräf <nea@nea.moe>2024-06-15 19:54:47 +0200
commitdff1f9c0e2b728dba902d72816104abccc61f511 (patch)
tree4b6df287f876851bb6e8b47657d90d0d10917e6f /src/main/kotlin/moe/nea/firmament/gui/config
parentdf0a0ded977a3613e57b64512ea77ff992387d43 (diff)
downloadfirmament-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.kt72
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() {