brink_format/inkl/
write.rs1use crate::codec::{write_def_id, write_str, write_u8, write_u16, write_u32};
4use crate::definition::LocaleData;
5use crate::inkb::write::encode_line_content;
6
7use super::{INKL_MAGIC, INKL_VERSION};
8
9#[expect(clippy::cast_possible_truncation)]
11pub fn write_inkl(data: &LocaleData, buf: &mut Vec<u8>) {
12 buf.extend_from_slice(INKL_MAGIC);
14 write_u8(buf, INKL_VERSION);
15 write_u32(buf, data.base_checksum);
16 write_u16(buf, data.locale_tag.len() as u16);
17 buf.extend_from_slice(data.locale_tag.as_bytes());
18
19 write_u32(buf, data.line_tables.len() as u32);
21 for scope in &data.line_tables {
22 write_def_id(buf, scope.scope_id);
23 write_u32(buf, scope.lines.len() as u32);
24 for entry in &scope.lines {
25 encode_line_content(&entry.content, buf);
26 match &entry.audio_ref {
27 Some(audio) => {
28 write_u8(buf, 1);
29 write_str(buf, audio);
30 }
31 None => {
32 write_u8(buf, 0);
33 }
34 }
35 }
36 }
37}