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