3 个版本 (稳定)
2.0.0 | 2023 年 10 月 31 日 |
---|---|
2.0.0-pre1 | 2022 年 9 月 19 日 |
1.0.0 | 2022 年 4 月 21 日 |
#2 in #rhythm
54KB
1K SLoC
flour
一个将 BCCAD / BRCAD 文件序列化和反序列化为 JSON 格式的 crate,附带一个用于解析这些文件的库 crate
flour
使用 JSON,并增加了对 // 单行注释
和 /* 多行注释 */
的支持。
资源
可以在 SPECIFICATION.md 中找到 BCCAD 和 BRCAD 格式的规范(来自各自 Rhythm Heaven 游戏的已知修订版本)
构建
要构建 flour
二进制文件,您需要启用 clap
功能,如下所示
cargo build --features=clap
lib.rs
:
一个具有已知 BXCAD(BRCAD/BCCAD)数据类型的 crate
获取和使用 BXCAD 格式
为了解析 BXCAD 文件的数据,您必须使用在 [BXCAD] 特性中实现的函数。
示例
use flour::{BCCAD, BXCAD};
// Open a BCCAD file
let mut file = File::open("file.bccad")?;
let mut bccad = BCCAD::from_binary(&mut file)?;
// Delete all animations, and save as a new file
bccad.animations = vec![];
let mut out_file = File::create("file.out.bccad")?;
bccad.to_binary(&mut out_file)?;
序列化和 BXCADWrapper
虽然 BXCAD
不需要 serde::Serialize
和 serde::Deserialize
,实现这些是特性背后的主要想法,因为这样 BXCAD 可以封装在 bxcad::BXCADWrapper
中。这个结构体的功能是为所有 flour 兼容的 BXCAD 提供一个通用的元数据 API。
您可以创建一个 BXCADWrapper
如下所示
use flour::bxcad::BXCADWrapper;
// this could instead be BXCADWrapper::from_bxcad_indexized, to allow indexization
let wrapper = BXCADWrapper::from_bxcad(bccad);
这个 BXCADWrapper
现在可以序列化/反序列化,而不会与其他 BXCAD 类型或 flour 的未来/过去版本(1.0 之后)出现兼容性问题。
有关“索引化”的详细信息,请参阅 bxcad::qol::Indexizable
.
注释
flour
支持以下类型的注释
- 单行:
// 注释
- 多行:
/* 注释 */
特性
modder_qol
依赖项
~6MB
~180K SLoC