43 lines
1.3 KiB
Kotlin
43 lines
1.3 KiB
Kotlin
package ru.dbotthepony.kstarbound.io
|
|
|
|
import it.unimi.dsi.fastutil.bytes.ByteArrayList
|
|
import ru.dbotthepony.kommons.util.IStruct2d
|
|
import ru.dbotthepony.kommons.util.IStruct2i
|
|
import ru.dbotthepony.kommons.io.readDouble
|
|
import ru.dbotthepony.kommons.io.readLong
|
|
import ru.dbotthepony.kommons.io.readSignedVarInt
|
|
import ru.dbotthepony.kommons.io.writeDouble
|
|
import ru.dbotthepony.kommons.io.writeLong
|
|
import ru.dbotthepony.kommons.io.writeSignedVarInt
|
|
import ru.dbotthepony.kommons.vector.Vector2d
|
|
import ru.dbotthepony.kommons.vector.Vector2i
|
|
import ru.dbotthepony.kstarbound.world.ChunkPos
|
|
import java.io.DataInput
|
|
import java.io.DataOutput
|
|
import java.io.IOException
|
|
import java.io.InputStream
|
|
import java.io.OutputStream
|
|
import java.io.RandomAccessFile
|
|
import java.util.*
|
|
import java.util.function.IntConsumer
|
|
import java.util.function.IntSupplier
|
|
import kotlin.collections.ArrayList
|
|
|
|
fun InputStream.readByteChar(): Char {
|
|
return read().toChar()
|
|
}
|
|
|
|
fun InputStream.readHeader(header: String) {
|
|
for ((i, char) in header.withIndex()) {
|
|
val read = readByteChar()
|
|
|
|
if (read != char) {
|
|
throw IllegalArgumentException("Malformed header at byte $i: expected $char (${char.code}) got $read (${char.code})")
|
|
}
|
|
}
|
|
}
|
|
|
|
fun InputStream.readChunkPos(): ChunkPos {
|
|
return ChunkPos(readSignedVarInt(), readSignedVarInt())
|
|
}
|