1个不稳定版本
新 0.1.0 | 2024年8月26日 |
---|
#3 in #halo
695KB
9K SLoC
infinite-rs
Halo Infinite的简单快速反序列化库。
提供加载模块文件、读取和解压缩其中标签的工具。将内置类型转换为rust原生结构,为Halo Infinite模组项目架起桥梁。
此crate目前处于早期开发阶段。请通过Github issues告诉我您在使用此项目时遇到的问题。
文档
- 此项目的文档可在docs.rs找到。
使用/示例
use infinite_rs::ModuleFile
fn load_modules() -> std::io::Result<()> {
// Create new instance of a Module file.
// These are the main archive files used in Halo Infinite.
let mut module = ModuleFile::new();
// Reads to the module file given a file path.
module.read("path/to/.module/file");
// The tag file is made up of a header and other structures.
// This is an "asset" stored in the module.
// Reads file at index 0 of the module.
println!("{:#?}", module.files[0]);
/*
ModuleFileEntry {
resource_count: 0,
parent_index: 7,
unknown: 788,
block_count: 2,
block_index: 7,
resource_index: 0,
tag_group: "LigS",
...
*/
// Read tag at index 0 into "tag info".
module.read_tag(0)
println!("{:#?}", module.files[0].tag_info);
/*
TagFile {
header: TagHeader {
magic: "ucsh",
version: 27,
root_struct_guid: -8339828558656697538,
checksum: 7960564650044378456,
...
*/
Ok(())
}
依赖项
~0.6–8.5MB
~64K SLoC