https://github.com/rukai/brawllib_rs
Brawl character file parser, based on brawlbox/brawllib, written in rust.
https://github.com/rukai/brawllib_rs
brawl parser
Last synced: about 1 month ago
JSON representation
Brawl character file parser, based on brawlbox/brawllib, written in rust.
- Host: GitHub
- URL: https://github.com/rukai/brawllib_rs
- Owner: rukai
- License: mit
- Created: 2018-02-28T09:49:54.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-04-24T00:19:22.000Z (about 2 months ago)
- Last Synced: 2025-05-06T06:00:02.742Z (about 1 month ago)
- Topics: brawl, parser
- Language: Rust
- Homepage:
- Size: 846 KB
- Stars: 22
- Watchers: 3
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- License: license.txt
Awesome Lists containing this project
README
# brawllib\_rs
[](https://deps.rs/repo/github/rukai/brawllib_rs)
[](https://crates.io/crates/brawllib_rs)
[](https://docs.rs/brawllib_rs)A brawl file parser, based on brawlbox/brawllib, written in rust.
Doesn't support modifying files, only reading, processing and rendering them.
## Example
In this example we:
* Create a `BrawlMod` from a brawl mod sd card folder and a brawl dump folder.
* Load `Fighter`s from the brawl_mod.
This is the raw data from the fighter folder, stored in a tree of structs.
* Create a `HighLevelFighter` from an exported brawl fighter directory.
This contains processed data from the `Fighter` struct, stored in a tree of structs.```rust
use brawllib_rs::brawl_mod::BrawlMod;
use brawllib_rs::high_level_fighter::HighLevelFighter;
use std::path::PathBuf;let brawl_path = PathBuf::from("path/to/a/brawl/dump/folder");
let mod_path = PathBuf::from("path/to/a/brawl/mod/sd/card/folder");
let brawl_mod = BrawlMod::new(&brawl_path, Some(&mod_path));for fighter in brawl_mod.load_fighters(false).unwrap() {
println!("Fighter name: {}", fighter.cased_name);
println!("The name of the first model file name: {}", fighter.models[0].name);let hl_fighter = HighLevelFighter::new(&fighter);
println!("Hurtboxes on the 4th frame of 'Run' action {:#?}", hl_fighter.subactions.iter().find(|x| x.name == "Run").unwrap().frames[4].hurt_boxes);
}
```