冗長な変換処理を削除

This commit is contained in:
mii
2020-09-23 21:39:52 +09:00
parent a44ee45c28
commit 00a91154cb
38 changed files with 30 additions and 69 deletions

View File

@@ -1,2 +1,2 @@
50 57
38 45

View File

@@ -1 +1 @@
<EFBFBD>;<3B>)<29>)<29>)<29>"<22>!<21>!<21><17><1D><15><18><17><17><16><14><14> <EFBFBD>;<3B>)<29>)<29>)<29>"<22>!<21>!<21><17><1D><15><18><17><17><16><14><14><EFBFBD><15><15><17><15><10><10><0F>

View File

@@ -4,7 +4,6 @@ import codes.mii.SaveEditor.Types.*
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.nio.file.Files import java.nio.file.Files
import kotlin.experimental.and
class Converter { class Converter {
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes
@@ -22,17 +21,8 @@ class Converter {
val name = StringBuilder() val name = StringBuilder()
if (nowByte != 0.toByte()) { if (nowByte != 0.toByte()) {
val nameLengthText = StringBuilder() nameLength = readMultiByte(byte, readingPosition, 2).toInt()
repeat(2) { readingPosition += 2
readingPosition++
val n = if (it != 1){
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
nameLengthText.append(if (n.length == 2) { n } else { "0$n" })
}
nameLength = nameLengthText.toString().toInt(16)
repeat(nameLength) { repeat(nameLength) {
readingPosition++ readingPosition++
@@ -51,62 +41,20 @@ class Converter {
result.data.add(NBT_Byte(nameLength.toByte(), name.toString(), byte[readingPosition])) result.data.add(NBT_Byte(nameLength.toByte(), name.toString(), byte[readingPosition]))
} }
2.toByte() -> { // SHORT 2.toByte(), 3.toByte(), 4.toByte() -> {
val bytes = StringBuilder() val n = when(nowByte) {
repeat(2) { 3.toByte() -> { 4 }
readingPosition++ 4.toByte() -> { 8 }
val n = if (it != 1){ else -> { 2 }
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
bytes.append(if (n.length == 2) { n } else { "0$n" })
} }
result.data.add(NBT_Short(nameLength.toByte(), name.toString(), readMultiByte(byte, readingPosition, n).toInt()))
result.data.add(NBT_Short(nameLength.toByte(), name.toString(), bytes.toString().toInt(16))) readingPosition += n
}
3.toByte() -> { // INT
var intText = StringBuilder()
repeat(4) {
readingPosition++
val n = if (it != 1){
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
intText.append(if (n.length == 2) { n } else { "0$n" })
}
result.data.add(NBT_Int(nameLength.toByte(), name.toString(), intText.toString().toInt(16)))
}
4.toByte() -> { // LONG
val intText = StringBuilder()
repeat(8) {
readingPosition++
val n = if (it != 1){
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
intText.append(if (n.length == 2) { n } else { "0$n" })
}
result.data.add(NBT_Long(nameLength.toByte(), name.toString(), intText.toString().toLong(16)))
} }
8.toByte() -> { // STRING 8.toByte() -> { // STRING
val textLengthText = StringBuilder()
repeat(2) { val textLength = readMultiByte(byte, readingPosition, 2).toInt()
readingPosition++ readingPosition += 2
val n = if (it != 1){
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
textLengthText.append(if (n.length == 2) { n } else { "0$n" })
}
val textLength = textLengthText.toString().toInt(16)
val text = StringBuilder() val text = StringBuilder()
repeat(textLength) { repeat(textLength) {
@@ -120,8 +68,6 @@ class Converter {
10.toByte() -> { // COMPOUND 10.toByte() -> { // COMPOUND
result.data.add(NBT_Compound(nameLength.toByte(), name.toString())) result.data.add(NBT_Compound(nameLength.toByte(), name.toString()))
} }
} }
readingPosition++ readingPosition++
@@ -133,6 +79,21 @@ class Converter {
return result return result
} }
fun readMultiByte(byte: ByteArray, position: Int, count: Int): Long {
var readingPosition = position
val multiByteText = StringBuilder()
repeat(count) {
readingPosition++
val n = if (it != 1){
(byte[readingPosition].toUByte()).toString(16)
} else {
(byte[readingPosition]).toString(16)
}
multiByteText.append(if (n.length == 2) { n } else { "0$n" })
}
return multiByteText.toString().toLong(16)
}
fun byteToString(byte: ByteArray, readingPosition: Int) { fun byteToString(byte: ByteArray, readingPosition: Int) {
} }