From 484a4b1a61493eb1401ac9c8ac063db3f847cf98 Mon Sep 17 00:00:00 2001
From: nea <nea@nea.moe>
Date: Fri, 26 May 2023 00:36:23 +0200
Subject: Add config gui to mod menu

---
 .../kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt | 16 +++++++++++++---
 .../moe/nea/firmament/modmenu/FirmamentModMenuPlugin.kt  | 12 ++++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 src/main/kotlin/moe/nea/firmament/modmenu/FirmamentModMenuPlugin.kt

(limited to 'src/main/kotlin')

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 411d7bd..dd8108f 100644
--- a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt
+++ b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt
@@ -27,15 +27,17 @@ import io.github.cottonmc.cotton.gui.widget.WLabel
 import io.github.cottonmc.cotton.gui.widget.WListPanel
 import io.github.cottonmc.cotton.gui.widget.data.Insets
 import io.ktor.http.*
+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.repo.RepoManager
+import moe.nea.firmament.util.MC
 import moe.nea.firmament.util.ScreenUtil.setScreenLater
 
 object AllConfigsGui {
 
-    fun showAllGuis() {
+    fun makeScreen(parent: Screen? = null): CottonClientScreen {
         val lwgd = LightweightGuiDescription()
         var screen: CottonClientScreen? = null
         lwgd.setRootPanel(WListPanel(
@@ -56,7 +58,15 @@ object AllConfigsGui {
         }.also {
             it.setSize(10 * 18 + 14 + 16, 300)
         })
-        screen = CottonClientScreen(lwgd)
-        setScreenLater(screen)
+        screen = object :  CottonClientScreen(lwgd) {
+            override fun close() {
+                MC.screen = parent
+            }
+        }
+        return screen
+    }
+
+    fun showAllGuis() {
+        setScreenLater(makeScreen())
     }
 }
diff --git a/src/main/kotlin/moe/nea/firmament/modmenu/FirmamentModMenuPlugin.kt b/src/main/kotlin/moe/nea/firmament/modmenu/FirmamentModMenuPlugin.kt
new file mode 100644
index 0000000..44e491e
--- /dev/null
+++ b/src/main/kotlin/moe/nea/firmament/modmenu/FirmamentModMenuPlugin.kt
@@ -0,0 +1,12 @@
+package moe.nea.firmament.modmenu
+
+import com.terraformersmc.modmenu.api.ConfigScreenFactory
+import com.terraformersmc.modmenu.api.ModMenuApi
+import moe.nea.firmament.gui.config.AllConfigsGui
+
+class FirmamentModMenuPlugin : ModMenuApi {
+    override fun getModConfigScreenFactory(): ConfigScreenFactory<*> {
+        return ConfigScreenFactory { AllConfigsGui.makeScreen(it) }
+    }
+}
+
-- 
cgit