32 个版本 (10 个主要版本更新)
10.0.0 | 2024 年 8 月 15 日 |
---|---|
9.0.1 | 2024 年 6 月 3 日 |
8.0.1 | 2024 年 7 月 16 日 |
8.0.0 | 2024 年 2 月 12 日 |
0.3.2 | 2015 年 11 月 29 日 |
在 游戏 中排名第 7
每月下载量 618
100KB
2.5K SLoC
宝库
vault
是一个用 Rust 编写的 Company of Heroes 回放解析库。它已被完全重写以支持 Company of Heroes 3,同时简化代码并利用 nom 的解析器组合器,以实现 Company of Heroes 3 回放文件的干净、快速解析。
该项目仍在开发中,请随时查看更新,如果您感兴趣的功能尚未被解析,请随时提出问题!
用法
Rust
如果您正在编写 Rust 应用程序,您可以从 crates.io 使用 vault
Cargo.toml
:
[dependencies]
vault = "9"
src/main.rs
:
fn main() {
let data = include_bytes!("/path/to/replay.rec");
let replay = vault::Replay::from_bytes(data);
assert!(replay.is_ok())
}
Ruby
vault
通过 magnus 提供Ruby绑定,允许您直接从 Ruby 代码调用 vault
。这可以通过 magnus
功能启用
Cargo.toml
:
[dependencies]
vault = { version = "9", features = ["magnus"] }
src/lib.rs
:
use magnus::{class, define_module, exception, function, method, prelude::*, Error};
#[magnus::init]
fn init() -> Result<(), Error> {
let module = define_module("VaultCoh")?;
let replay = module.define_class("Replay", class::object())?;
replay.define_singleton_method("from_bytes", function!(from_bytes, 1))?;
replay.define_method("version", method!(vault::Replay::version, 0))?;
Ok(())
}
fn from_bytes(input: Vec<u8>) -> Result<vault::Replay, Error> {
vault::Replay::from_bytes(&input)
.map_err(|err| Error::new(exception::runtime_error(), err.to_string()))
}
irb
:
require 'vault'
bytes = File.open('/path/to/replay.rec').read.unpack('C*')
replay = VaultCoh::Replay.from_bytes(bytes)
puts replay.version
请注意,所有类都必须绑定到 VaultCoh
命名空间,类名与其 Rust 对应项匹配。有关此功能的示例,请参阅 vault-rb。
Serde
vault
为组成解析回放的所有数据结构实现了 serde 的 Serialize
和 Deserialize
特性。这些可以通过 serde
功能访问
Cargo.toml
:
[dependencies]
vault = { version = "9", features = ["serde"] }
src/main.rs
:
fn main() {
let data = include_bytes!("/path/to/replay.rec");
let replay = vault::Replay::from_bytes(data).unwrap();
// Convert the Replay to a JSON string.
let serialized = serde_json::to_string(&replay).unwrap();
// Convert the JSON string back to a Replay.
let deserialized: Replay = serde_json::from_str(&serialized).unwrap();
}
Company of Heroes 2
vault
已从头开始重写以更好地支持未来的开发,这意味着 Company of Heroes 2 解析支持已被弃用。有关 Company of Heroes 2 解析器和用法说明,请参阅 此处。CoH2 回放解析将继续与 vault
的 v1.0.0 版本一起工作。
兼容性
官方支持的最低Rust版本是1.65.0,因为这是magnus所要求的版本。然而,在支持Rust 2021的任何编译器版本上构建,即使这不是官方支持的,也应该没有问题。
Ruby绑定有一些额外的兼容性要求,例如libclang
和最低Ruby版本要求。更多信息请见magnus兼容性。
文档
vault
的文档可以在网上查看。
或者,您可以使用cargo
轻松地为自身构建文档离线副本。
$ cargo doc
对于包含magnus Ruby绑定的文档,请运行
$ cargo doc --features=magnus
生成的文档可以在vault/target/doc
找到。
许可证
MIT
依赖
约2.5-4MB
约70K SLoC