KStarbound/src/main/kotlin/ru/dbotthepony/kstarbound/io/Streams.kt

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())
}