super rudimentary mod config

This commit is contained in:
minjaesong
2023-10-14 15:34:04 +09:00
parent 108c4d3e3f
commit 4362966128
3 changed files with 54 additions and 2 deletions

View File

View File

@@ -15,6 +15,7 @@ import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.utils.CSVFetcher
import net.torvald.terrarum.utils.JsonFetcher
import net.torvald.terrarum.utils.forEachSiblings
@@ -67,8 +68,10 @@ object ModMgr {
val version: String,
val jar: String,
val dependencies: Array<String>,
val isInternal: Boolean
val isInternal: Boolean,
val configPlan: List<String>
) {
override fun toString() =
"\tModule #$order -- $properName | $version | $author\n" +
"\t$description | $releaseDate\n" +
@@ -192,7 +195,14 @@ object ModMgr {
val dependency = modMetadata.getProperty("dependency").split(Regex(""";[ ]*""")).filter { it.isNotEmpty() }.toTypedArray()
val isDir = FileSystems.getDefault().getPath("$modDir/$moduleName").toFile().isDirectory
module = ModuleMetadata(index, isDir, getGdxFile("$modDir/$moduleName/icon.png"), properName, description, descTranslations, author, packageName, entryPoint, releaseDate, version, jar, dependency, isInternal)
val configPlan = ArrayList<String>()
File("$modDirInternal/$moduleName/configplan.csv").let {
if (it.exists() && it.isFile) {
configPlan.addAll(it.readLines(Common.CHARSET).filter { it.isNotBlank() })
}
}
module = ModuleMetadata(index, isDir, getGdxFile("$modDir/$moduleName/icon.png"), properName, description, descTranslations, author, packageName, entryPoint, releaseDate, version, jar, dependency, isInternal, configPlan)
val versionNumeral = version.split('.')
val versionNumber = versionNumeral.toVersionNumber()

View File

@@ -1,10 +1,16 @@
package net.torvald.terrarum
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.ui.ControlPanelCommon
import net.torvald.terrarum.modulebasegame.ui.ControlPanelOptions
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
import net.torvald.unicode.TIMES
class ModOptionsHost(val remoCon: UIRemoCon) : UICanvas() {
init {
@@ -17,10 +23,46 @@ class ModOptionsHost(val remoCon: UIRemoCon) : UICanvas() {
override var width = App.scr.width - UIRemoCon.remoConWidth - moduleAreaHMargin
override var height = App.scr.height - moduleAreaHMargin * 2
init {
}
private var currentlySelectedModule = "basegame"
override fun show() {
super.show()
makeConfig(currentlySelectedModule)
}
private fun makeConfig(modname: String) {
val mod = ModMgr.moduleInfo[modname]!!
if (mod.configPlan.isEmpty()) return
val modOptions: ControlPanelOptions = mod.configPlan.map {
val options = it.split("->")
val labelfun = if (options[1].startsWith("Lang:")) {
{ Lang[options[1].substringAfter(":")] }
}
else {
{ options[1] }
}
arrayOf("$modname:${options[0]}", labelfun, options[2])
}.toTypedArray()
ControlPanelCommon.register(this, width, "basegame.modcontrolpanel.$modname", modOptions)
}
override fun updateUI(delta: Float) {
uiItems.forEach { it.update(delta) }
}
override fun renderUI(batch: SpriteBatch, camera: OrthographicCamera) {
// TODO draw currently editing mod name
ControlPanelCommon.render("basegame.modcontrolpanel.$currentlySelectedModule", width, batch)
uiItems.forEach { it.render(batch, camera) }
}
override fun dispose() {