WIP: Entis GLS CSX v2

This commit is contained in:
2026-01-20 11:40:09 +08:00
parent 8c9f2d7d52
commit ff886e66d3
33 changed files with 955 additions and 214 deletions

View File

@@ -171,7 +171,7 @@ impl<T: Read + Seek + std::fmt::Debug> ArtemisPf2<T> {
let file_count = reader.read_u32()?;
let mut entries = Vec::with_capacity(file_count as usize);
for _ in 0..file_count {
let header = reader.read_struct(false, archive_encoding)?;
let header = reader.read_struct(false, archive_encoding, &None)?;
entries.push(header);
}
let output_ext = std::path::Path::new(filename)
@@ -346,7 +346,7 @@ impl<T: Write + Seek + Read> ArtemisPf2Writer<T> {
offset: 0,
size: 0,
};
header.pack(&mut writer, false, encoding)?;
header.pack(&mut writer, false, encoding, &None)?;
headers.insert(file.to_string(), header);
}
let size = writer.stream_position()?;
@@ -390,7 +390,7 @@ impl<T: Write + Seek + Read> Archive for ArtemisPf2Writer<T> {
let mut files = self.headers.values().collect::<Vec<_>>();
files.sort_by_key(|d| d.offset);
for file in files.iter() {
file.pack(&mut self.writer, false, self.encoding)?;
file.pack(&mut self.writer, false, self.encoding, &None)?;
}
self.writer.write_u32_at(3, self.index_size)?;
self.writer.write_u32_at(7, 0)?;

View File

@@ -169,7 +169,7 @@ impl<T: Read + Seek + std::fmt::Debug> ArtemisArc<T> {
let file_count = reader.read_u32()?;
let mut entries = Vec::with_capacity(file_count as usize);
for _ in 0..file_count {
let header = reader.read_struct(false, archive_encoding)?;
let header = reader.read_struct(false, archive_encoding, &None)?;
entries.push(header);
}
let xor_key = if version == b'8' {
@@ -374,7 +374,7 @@ impl<T: Write + Seek + Read> ArtemisArcWriter<T> {
offset: 0,
size: 0,
};
header.pack(&mut writer, false, encoding)?;
header.pack(&mut writer, false, encoding, &None)?;
headers.insert(file.to_string(), header);
}
let size = writer.stream_position()?;
@@ -418,7 +418,7 @@ impl<T: Write + Seek + Read> Archive for ArtemisArcWriter<T> {
let mut files = self.headers.values().collect::<Vec<_>>();
files.sort_by_key(|d| d.offset);
for file in files.iter() {
file.pack(&mut self.writer, false, self.encoding)?;
file.pack(&mut self.writer, false, self.encoding, &None)?;
}
if !self.disable_xor {
self.writer.seek(SeekFrom::Start(7))?;