#json-format #deserialize #serialization #rhythm #bccad #brcad #bxcad

bin+lib flour

将 BCCAD / BRCAD 文件序列化和反序列化为 JSON

3 个版本 (稳定)

2.0.0 2023 年 10 月 31 日
2.0.0-pre12022 年 9 月 19 日
1.0.0 2022 年 4 月 21 日

#2 in #rhythm

LGPL-3.0

54KB
1K SLoC

flour

Version 2.0 Crates.io Documentation

一个将 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::Serializeserde::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