From 688790b5dc0ea8f51a99e42a00c7510b9bd87aa6 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Wed, 4 Dec 2024 14:23:42 +0100 Subject: next commit --- byte_stream.gd | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 byte_stream.gd (limited to 'byte_stream.gd') diff --git a/byte_stream.gd b/byte_stream.gd new file mode 100644 index 0000000..df55a7d --- /dev/null +++ b/byte_stream.gd @@ -0,0 +1,72 @@ +class_name ByteStream + + +var bytes: PackedByteArray + +var position: int = 0 + + +@warning_ignore("shadowed_variable") +static func from_bytes(bytes: PackedByteArray): + var byte_stream = ByteStream.new() + + byte_stream.bytes = bytes + + return byte_stream + + +@warning_ignore("shadowed_variable") +func seek(position: int): + if position > 0: + assert(position < bytes.size()) + + self.position = position + + +func decode_u8(): + var result = bytes.decode_u8(position) + seek(position + 1) + + return result + +func decode_u16(): + var result = bytes.decode_u16(position) + seek(position + 2) + + return result + +func decode_u32(): + var result = bytes.decode_u32(position) + seek(position + 4) + + return result + +func decode_u64(): + var result = bytes.decode_u64(position) + seek(position + 8) + + return result + +func decode_s8(): + var result = bytes.decode_s8(position) + seek(position + 1) + + return result + +func decode_s16(): + var result = bytes.decode_s16(position) + seek(position + 2) + + return result + +func decode_s32(): + var result = bytes.decode_s32(position) + seek(position + 4) + + return result + +func decode_s64(): + var result = bytes.decode_s64(position) + seek(position + 8) + + return result -- cgit v1.2.3