5 个版本 (3 个破坏性更新)

0.4.1 2022 年 9 月 26 日
0.4.0 2022 年 9 月 26 日
0.3.1 2022 年 5 月 29 日
0.2.0 2022 年 4 月 23 日
0.1.0 2022 年 4 月 21 日

#1830 in 数据库接口

MIT 许可证

110KB
3.5K SLoC

ironworks

ironworks

用 Rust 编写的模块化 FFXIV 数据工具包。

Crates.io docs.rs

ironworks 是预 1.0 版本,因此其 API 应被视为不稳定。破坏性 API 更改将在新的小版本上发布。


为了最小化未使用的代码和依赖,ironworks 被分割成多个离散的功能。默认情况下没有启用任何功能 - 选择您想要使用的功能!

功能 描述
excel 从 Excel 数据库读取数据。
ffxiv 与 FFXIV 一起使用 ironworks 的绑定。
sqpack 在 SqPack 包格式中导航和提取文件。

此外,文件类型读取器是可选的。上述功能模块将自动启用它们需要的文件类型,但是如果您需要用于定制目的的附加文件类型,它们可以手动启用。文件类型功能以文件的扩展名命名,例如 exl 用于 .exl 文件。

入门指南

[dependencies]
ironworks = {version = "0.4.1", features = ["excel", "ffxiv", "sqpack"]}
use ironworks::{excel::Excel, ffxiv, file::exl, sqpack::SqPack, Error, Ironworks};

fn main() -> Result<(), Error> {
  // Build the core ironworks instance. Additional resources can be registered
  // for more complicated file layouts.
  let ironworks = Ironworks::new()
    .with_resource(SqPack::new(ffxiv::FsResource::search().unwrap()));

  // Read out files as raw bytes or structured data.
  let bytes = ironworks.file::<Vec<u8>>("exd/root.exl")?;
  let list = ironworks.file::<exl::ExcelList>("exd/root.exl")?;

  // Read fields out of excel.
  let excel = Excel::with()
    .language(ffxiv::Language::English)
    .build(&ironworks, ffxiv::Mapper::new());
  let field = excel.sheet("Item")?.row(37362)?.field(0)?;

  Ok(())
}

使用从 Excel 生成的表

除了像上面那样逐个读取字段之外,还可以一次将整个行读入一个结构体。为此,生成的表定义可作为 Git 依赖项提供。

警告:用于生成这些结构的数据不提供任何稳定性保证。因此,任何对表结构的更新都应被视为 semver-major 更新。

[dependencies]
# ...
ironworks_sheets = {git = "https://github.com/ackwell/ironworks", branch = "sheets/saint-coinach"}
// ...
use ironworks_sheets::{for_type, sheet};

fn main() -> Result<(), Error> {
  // ...
  let field = excel.sheet(for_type::<sheet::Item>())?.row(37362)?.singular;
  // ...
}

依赖项

~1.5–2MB
~46K SLoC