修复某些模板加载时程序崩溃的问题。添加minVersion编辑框。

This commit is contained in:
Cold-Mint 2023-04-10 13:55:53 +08:00
parent b614503b0d
commit 7686687c27
5 changed files with 83 additions and 47 deletions

View File

@ -26,9 +26,10 @@ class TemplateParserViewModel : BaseViewModel() {
//json数据
private var jsonData: JSONObject? = null
private var template: Template? = null
private lateinit var arrayList :ArrayList<TemplateParser>
private lateinit var arrayList: ArrayList<TemplateParser>
//文件输出目录
private var outPutPath : String? = null
private var outPutPath: String? = null
//创建目录
@ -58,7 +59,12 @@ class TemplateParserViewModel : BaseViewModel() {
* @return String
*/
fun getCode(): String {
return jsonData?.getString("data") ?: ""
try {
return jsonData?.getString("data") ?: ""
} catch (e: Exception) {
e.printStackTrace()
return ""
}
}
@ -97,7 +103,7 @@ class TemplateParserViewModel : BaseViewModel() {
createDirectory
}
LogCat.d("构建文件", "是否需要独立创建文件夹${independentFolder} 文件夹目录${createPath}")
if (independentFolder){
if (independentFolder) {
val folder = File(createPath)
if (folder.exists()) {
LogCat.e("构建文件", "创建目录${createPath}已存在。")
@ -124,7 +130,7 @@ class TemplateParserViewModel : BaseViewModel() {
* 获取文件输出目录当构建文件完毕后返回有效值否则返回null
* @return String?
*/
fun getOutputPath():String?{
fun getOutputPath(): String? {
return outPutPath
}
@ -175,57 +181,63 @@ class TemplateParserViewModel : BaseViewModel() {
* @return ArrayList<TemplateParser>
*/
fun getTemplateParserList(context: Context): ArrayList<TemplateParser> {
if (this::arrayList.isInitialized)
{
LogCat.d("获取模板解析器","已经被调用了一次,返回成员变量")
if (this::arrayList.isInitialized) {
LogCat.d("获取模板解析器", "已经被调用了一次,返回成员变量")
return arrayList
}
arrayList = ArrayList()
val gson = Gson()
val jsonArray = jsonData?.getJSONArray("action")
if (jsonArray == null) {
LogCat.e("获取模板解析器", "此模板没有action无法读取。")
return arrayList
} else {
val len = jsonArray.length()
for (i in 0 until len) {
val templateParserData = jsonArray.getJSONObject(i)
when (templateParserData.getString("type")) {
"input" -> {
arrayList.add(
InputParser(
context,
gson.fromJson(
templateParserData.toString(4),
InputParserDataBean::class.java
try {
val jsonArray = jsonData?.getJSONArray("action")
if (jsonArray == null) {
LogCat.e("获取模板解析器", "此模板没有action无法读取。")
return arrayList
} else {
val len = jsonArray.length()
for (i in 0 until len) {
val templateParserData = jsonArray.getJSONObject(i)
when (templateParserData.getString("type")) {
"input" -> {
arrayList.add(
InputParser(
context,
gson.fromJson(
templateParserData.toString(4),
InputParserDataBean::class.java
)
)
)
)
}
"comment" -> {
arrayList.add(
IntroducingParser(
context, gson.fromJson(
templateParserData.toString(4),
IntroducingDataBean::class.java
}
"comment" -> {
arrayList.add(
IntroducingParser(
context, gson.fromJson(
templateParserData.toString(4),
IntroducingDataBean::class.java
)
)
)
)
}
"valueSelector" -> {
arrayList.add(
ListParser(
context, gson.fromJson(
templateParserData.toString(4),
ListParserDataBean::class.java
}
"valueSelector" -> {
arrayList.add(
ListParser(
context, gson.fromJson(
templateParserData.toString(4),
ListParserDataBean::class.java
)
)
)
)
}
}
}
return arrayList
}
} catch (e: Exception) {
e.printStackTrace()
LogCat.e("获取模板解析器", "解析action出错$e")
return arrayList
}
}
}

View File

@ -70,11 +70,27 @@
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/createbutton"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/minVersionInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:counterEnabled="true"
android:layout_below="@id/modDescribeInputLayout"
app:counterMaxLength="20"
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.ExposedDropdownMenu">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:layout_width="match_parent"
android:hint="@string/minVersion"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/createbutton"
android:layout_below="@id/minVersionInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/create" />

View File

@ -140,6 +140,7 @@
android:orientation="horizontal">
<LinearLayout
android:layout_marginTop="8dp"
android:id="@+id/numberLayout"
android:layout_width="match_parent"
android:layout_height="46dp">

View File

@ -955,4 +955,5 @@
<string name="search_type_template_package">模板包</string>
<string name="public_mod">公开</string>
<string name="private_mod">私有</string>
<string name="minVersion">最低游戏版本</string>
</resources>

View File

@ -52,11 +52,17 @@ data class WebTemplateData(
}
override fun getName(language: String): String {
return if (getJson().has("name_$language")) {
return getJson().getString("name_$language")
} else {
return getJson().getString("name")
try {
return if (getJson().has("name_$language")) {
return getJson().getString("name_$language")
} else {
return getJson().getString("name")
}
}catch (e:Exception){
e.printStackTrace()
return "Unknown"
}
}
override fun getIcon(): Any? {