From 290b11eb96c8f898d766f79593af2baa70d6d629 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 9 Sep 2023 15:19:03 +0900 Subject: [PATCH] mod meta update; translations for description --- assets/mods/basegame/metadata.properties | 6 ++-- assets/mods/dwarventech/metadata.properties | 2 +- src/net/torvald/terrarum/ModMgr.kt | 28 ++++++++++++++----- .../terrarum/ui/UIItemModuleInfoCell.kt | 11 +++++++- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/assets/mods/basegame/metadata.properties b/assets/mods/basegame/metadata.properties index 57e9cba8c..a1080fbed 100644 --- a/assets/mods/basegame/metadata.properties +++ b/assets/mods/basegame/metadata.properties @@ -5,7 +5,7 @@ propername=Terrarum description=The base game # Author of the module -author=Terrarum +author=CuriousTo\uA75Bvald # Root package name for the module # The game will look for certain classes base on this package string, so don't mess up! @@ -16,10 +16,10 @@ package=net.torvald.terrarum.modulebasegame entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint # Release date in YYYY-MM-DD -releasedate=2022-01-24 +releasedate=2023-09-08 # The version, must follow Semver 2.0.0 scheme (https://semver.org/) -version=0.3.0 +version=0.3.3 # External JAR that the module is compiled. If your module requires yet another library, the JAR must be compiled as a "Fatjar"; # Due to security reasons, loading an arbitrary JAR is not allowed. diff --git a/assets/mods/dwarventech/metadata.properties b/assets/mods/dwarventech/metadata.properties index bcf84fdf0..548ced7c8 100644 --- a/assets/mods/dwarventech/metadata.properties +++ b/assets/mods/dwarventech/metadata.properties @@ -1,6 +1,6 @@ propername=Dwarven Techs description=Dwarven technicians are emerged from their hiding -author=Terrarum +author=CuriousTo\uA75Bvald package=net.torvald.terrarum.modulecomputers entrypoint=net.torvald.terrarum.modulecomputers.EntryPoint releasedate=2021-12-03 diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index 531867b2d..f46c581fe 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -58,6 +58,7 @@ object ModMgr { val iconFile: FileHandle, val properName: String, val description: String, + val descTranslations: Map, val author: String, val packageName: String, val entryPoint: String, @@ -136,6 +137,7 @@ object ModMgr { val moduleName = it[0] this.loadOrder.add(moduleName) printmsg(this, "Loading module $moduleName") + var module: ModuleMetadata? = null try { val modMetadata = Properties() @@ -171,6 +173,11 @@ object ModMgr { } + val descTranslations = HashMap() + modMetadata.stringPropertyNames().filter { it.startsWith("description_") }.forEach { key -> + val langCode = key.substringAfter('_') + descTranslations[langCode] = modMetadata.getProperty(key) + } val properName = modMetadata.getProperty("propername") val description = modMetadata.getProperty("description") @@ -184,10 +191,12 @@ 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 versionNumeral = version.split('.') val versionNumber = versionNumeral.toVersionNumber() + dependency.forEach { nameAndVersionStr -> val (moduleName, moduleVersionStr) = nameAndVersionStr.split(' ') val numbers = moduleVersionStr.split('.') @@ -204,9 +213,9 @@ object ModMgr { } - moduleInfo[moduleName] = ModuleMetadata(index, isDir, getGdxFile("$modDir/$moduleName/icon.png"), properName, description, author, packageName, entryPoint, releaseDate, version, jar, dependency, isInternal) + moduleInfo[moduleName] = module - printdbg(this, moduleInfo[moduleName]) + printdbg(this, module) // do retexturing if retextures directory exists if (hasFile(moduleName, "retextures")) { @@ -268,7 +277,8 @@ object ModMgr { logError(LoadErrorType.YOUR_FAULT, moduleName, e) - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + moduleInfo.remove(moduleName) + moduleInfoErrored[moduleName] = module } if (newClass != null) { @@ -281,7 +291,8 @@ object ModMgr { printdbg(this, "$moduleName loaded successfully") } else { - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + moduleInfo.remove(moduleName) + moduleInfoErrored[moduleName] = module printdbg(this, "$moduleName did not load...") } @@ -294,14 +305,16 @@ object ModMgr { logError(LoadErrorType.NOT_EVEN_THERE, moduleName, noSuchModule) - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + moduleInfo.remove(moduleName) + if (module != null) moduleInfoErrored[moduleName] = module } catch (noSuchModule2: ModuleDependencyNotSatisfied) { printmsgerr(this, noSuchModule2.message) logError(LoadErrorType.NOT_EVEN_THERE, moduleName, noSuchModule2) - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + moduleInfo.remove(moduleName) + if (module != null) moduleInfoErrored[moduleName] = module } catch (e: Throwable) { // TODO: Instead of skipping module with error, just display the error message onto the face? @@ -313,7 +326,8 @@ object ModMgr { logError(LoadErrorType.YOUR_FAULT, moduleName, e) - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + moduleInfo.remove(moduleName) + if (module != null) moduleInfoErrored[moduleName] = module } finally { diff --git a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt b/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt index 6b043bd6e..455fa470b 100644 --- a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt +++ b/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt @@ -37,7 +37,16 @@ class UIItemModuleInfoCell( private val modVer = modProp.version private val modDate = modProp.releaseDate private val modAuthor = modProp.author - private val modDesc = modProp.description + + private val modDesc = App.getConfigString("language").let { lang -> + val la = lang.substring(0..1) + if (modProp.descTranslations.contains(lang)) + modProp.descTranslations[lang] + else if (modProp.descTranslations.contains(la)) + modProp.descTranslations[la] + else + modProp.description + } init { modIcon.flip(false, false)