Replace references to NEU with Firmament
This commit is contained in:
94
src/main/kotlin/moe/nea/firmament/gui/ConfigGui.kt
Normal file
94
src/main/kotlin/moe/nea/firmament/gui/ConfigGui.kt
Normal file
@@ -0,0 +1,94 @@
|
||||
package moe.nea.firmament.gui
|
||||
|
||||
import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription
|
||||
import io.github.cottonmc.cotton.gui.widget.WButton
|
||||
import io.github.cottonmc.cotton.gui.widget.WLabel
|
||||
import io.github.cottonmc.cotton.gui.widget.WTextField
|
||||
import io.github.cottonmc.cotton.gui.widget.WToggleButton
|
||||
import io.github.cottonmc.cotton.gui.widget.data.HorizontalAlignment
|
||||
import io.github.cottonmc.cotton.gui.widget.data.Insets
|
||||
import io.github.cottonmc.cotton.gui.widget.data.VerticalAlignment
|
||||
import moe.nea.firmament.Firmament
|
||||
import moe.nea.firmament.util.data.DataHolder
|
||||
import net.minecraft.text.Text
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
|
||||
class ConfigGui<K>(val holder: DataHolder<K>, val build: ConfigGui<K>.() -> Unit) : LightweightGuiDescription() {
|
||||
private val root = WGridPanelWithPadding(verticalPadding = 4)
|
||||
private val reloadables = mutableListOf<(() -> Unit)>()
|
||||
|
||||
init {
|
||||
setRootPanel(root)
|
||||
root.insets = Insets.ROOT_PANEL
|
||||
build()
|
||||
reload()
|
||||
}
|
||||
|
||||
fun title(text: Text) {
|
||||
if (col != 0) {
|
||||
Firmament.logger.warn("Set title not at the top of the ConfigGui")
|
||||
}
|
||||
val label = WLabel(text)
|
||||
label.verticalAlignment = VerticalAlignment.TOP
|
||||
label.horizontalAlignment = HorizontalAlignment.CENTER
|
||||
root.add(label, 0, col, 11, 1)
|
||||
col++
|
||||
}
|
||||
|
||||
private fun label(text: Text) {
|
||||
val label = WLabel(text)
|
||||
label.verticalAlignment = VerticalAlignment.CENTER
|
||||
root.add(label, 0, col, 5, 1)
|
||||
}
|
||||
|
||||
fun toggle(text: Text, prop: KMutableProperty1<K, Boolean>) {
|
||||
val toggle = WToggleButton(text)
|
||||
reloadables.add { toggle.toggle = prop.get(holder.data) }
|
||||
toggle.setOnToggle {
|
||||
prop.set(holder.data, true)
|
||||
holder.markDirty()
|
||||
}
|
||||
root.add(toggle, 5, col, 6, 1)
|
||||
label(text)
|
||||
col++
|
||||
}
|
||||
|
||||
fun button(text: Text, buttonText: Text, runnable: () -> Unit) {
|
||||
val button = WButton(buttonText)
|
||||
button.setOnClick {
|
||||
runnable.invoke()
|
||||
}
|
||||
root.add(button, 5, col, 6, 1)
|
||||
label(text)
|
||||
col++
|
||||
}
|
||||
|
||||
fun textfield(
|
||||
text: Text,
|
||||
background: Text,
|
||||
prop: KMutableProperty1<K, String>,
|
||||
maxLength: Int = 255
|
||||
) {
|
||||
val textfield = WTextField(background)
|
||||
textfield.isEditable = true
|
||||
reloadables.add {
|
||||
textfield.text = prop.get(holder.data)
|
||||
}
|
||||
textfield.maxLength = maxLength
|
||||
textfield.setChangedListener {
|
||||
prop.set(holder.data, it)
|
||||
holder.markDirty()
|
||||
}
|
||||
root.add(textfield, 5, col, 6, 11)
|
||||
label(text)
|
||||
col++
|
||||
}
|
||||
|
||||
fun reload() {
|
||||
reloadables.forEach { it.invoke() }
|
||||
}
|
||||
|
||||
private var col = 0
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package moe.nea.firmament.gui
|
||||
|
||||
import io.github.cottonmc.cotton.gui.widget.WPanelWithInsets
|
||||
import io.github.cottonmc.cotton.gui.widget.WWidget
|
||||
import io.github.cottonmc.cotton.gui.widget.data.Insets
|
||||
|
||||
class WGridPanelWithPadding(
|
||||
val grid: Int = 18,
|
||||
val verticalPadding: Int = 0,
|
||||
val horizontalPadding: Int = 0,
|
||||
) : WPanelWithInsets() {
|
||||
|
||||
private inline val vertOffset get() = grid + verticalPadding
|
||||
private inline val horiOffset get() = grid + horizontalPadding
|
||||
|
||||
fun add(w: WWidget, x: Int, y: Int, width: Int = 1, height: Int = 1) {
|
||||
children.add(w)
|
||||
w.parent = this
|
||||
w.setLocation(x * horiOffset + insets.left, y * vertOffset + insets.top)
|
||||
if (w.canResize())
|
||||
w.setSize(
|
||||
grid + (horiOffset * (width - 1)),
|
||||
grid + (vertOffset * (height - 1)),
|
||||
)
|
||||
expandToFit(w, insets)
|
||||
}
|
||||
|
||||
override fun setInsets(insets: Insets): WGridPanelWithPadding {
|
||||
super.setInsets(insets)
|
||||
return this
|
||||
}
|
||||
|
||||
}
|
||||
36
src/main/kotlin/moe/nea/firmament/gui/repogui.kt
Normal file
36
src/main/kotlin/moe/nea/firmament/gui/repogui.kt
Normal file
@@ -0,0 +1,36 @@
|
||||
package moe.nea.firmament.gui
|
||||
|
||||
import net.minecraft.text.Text
|
||||
import moe.nea.firmament.repo.RepoManager
|
||||
|
||||
fun repoGui(): ConfigGui<RepoManager.Config> {
|
||||
return ConfigGui(RepoManager) {
|
||||
title(Text.translatable("firmament.gui.repo.title"))
|
||||
toggle(Text.translatable("firmament.gui.repo.autoupdate"), RepoManager.Config::autoUpdate)
|
||||
textfield(
|
||||
Text.translatable("firmament.gui.repo.username"),
|
||||
Text.translatable("firmament.gui.repo.hint.username"),
|
||||
RepoManager.Config::user,
|
||||
maxLength = 255
|
||||
)
|
||||
textfield(
|
||||
Text.translatable("firmament.gui.repo.reponame"),
|
||||
Text.translatable("firmament.gui.repo.hint.reponame"),
|
||||
RepoManager.Config::repo
|
||||
)
|
||||
textfield(
|
||||
Text.translatable("firmament.gui.repo.branch"),
|
||||
Text.translatable("firmament.gui.repo.hint.branch"),
|
||||
RepoManager.Config::branch
|
||||
)
|
||||
button(
|
||||
Text.translatable("firmament.gui.repo.reset.label"),
|
||||
Text.translatable("firmament.gui.repo.reset"),
|
||||
) {
|
||||
RepoManager.data.user = "NotEnoughUpdates"
|
||||
RepoManager.data.repo = "NotEnoughUpdates-REPO"
|
||||
RepoManager.data.branch = "dangerous"
|
||||
reload()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user