class_name Quest extends PacketChunk const BYTE_LENGTH := 0 ## Byte Type: u32 ## Byte Length: 4 var quest_id: int ## Byte Type: u8 ## Byte Length: 1 var active: int ## Byte Type: u32 ## Byte Length: 4 var remaining_time: int ## Byte Type: u32 ## Byte Length: 4 var expire_time: int ## Byte Type: u16 ## Byte Length: 2 var objective_count: int var objective_details: Array func get_byte_length(): return 15 + objective_count * QuestObjectiveDetails.BYTE_LENGTH static func from_bytes(bytes: PackedByteArray): var quest = Quest.new() quest.quest_id = bytes.decode_u32(0) quest.active = bytes.decode_u8(4) quest.remaining_time = bytes.decode_u32(5) quest.expire_time = bytes.decode_u32(9) quest.objective_count = bytes.decode_u16(13) quest.objective_details = QuestObjectiveDetails.array_from_bytes( bytes.slice(15, 15 + quest.byte_length) ) return quest static func array_from_bytes(bytes: PackedByteArray) -> Array[Quest]: var array: Array[Quest] = [] var offset = 0 while offset < bytes.size(): var chunk = from_bytes(bytes.slice(offset)) array.append(chunk) offset += chunk.byte_length return array