diff options
Diffstat (limited to 'packets/map_server/broadcast_formatted_message_packet.gd')
-rw-r--r-- | packets/map_server/broadcast_formatted_message_packet.gd | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/packets/map_server/broadcast_formatted_message_packet.gd b/packets/map_server/broadcast_formatted_message_packet.gd new file mode 100644 index 0000000..c66c4f1 --- /dev/null +++ b/packets/map_server/broadcast_formatted_message_packet.gd @@ -0,0 +1,74 @@ +## rAthena References: +## - clif_broadcast2 +class_name BroadcastFormattedMessagePacket +extends Packet + + +const HEADER := 0x01c3 +const BYTE_LENGTH := 0 + + +## Byte Type: u16 +## Byte Length: 2 +var packet_length: int + +## Byte Type: u8 +## Byte Length: 1 +var font_color_r: int + +## Byte Type: u8 +## Byte Length: 1 +var font_color_g: int + +## Byte Type: u8 +## Byte Length: 1 +var font_color_b: int + +## Byte Type: u8 +## Byte Length: 1 +var font_color_a: int + +## Byte Type: u16 +## Byte Length: 2 +var font_type: int + +## Byte Type: u16 +## Byte Length: 2 +var font_size: int + +## Byte Type: u16 +## Byte Length: 2 +var font_alignment: int + +## Byte Type: u16 +## Byte Length: 2 +var font_y: int + +## Byte Length: variable +var message: String + + +func get_font_color() -> Color: + return Color8( + font_color_r, + font_color_g, + font_color_b, + 255 + ) + + +static func from_bytes(bytes: PackedByteArray) -> BroadcastFormattedMessagePacket: + var packet = BroadcastFormattedMessagePacket.new() + + packet.packet_length = bytes.decode_u16(2) + packet.font_color_r = bytes.decode_u8(4) + packet.font_color_g = bytes.decode_u8(5) + packet.font_color_b = bytes.decode_u8(6) + packet.font_color_a = bytes.decode_u8(7) + packet.font_type = bytes.decode_u16(8) + packet.font_size = bytes.decode_u16(10) + packet.font_alignment = bytes.decode_u16(12) + packet.font_y = bytes.decode_u16(14) + packet.message = bytes.slice(16, packet.packet_length).get_string_from_utf8() + + return packet |