Max Bradbury 41a08d7a61 | ||
---|---|---|
.github/workflows | ||
src | ||
.gitignore | ||
Cargo.toml | ||
LICENSE | ||
README.md |
README.md
bitsy-parser
a library for parsing Bitsy game data.
the version number follows Bitsy itself, so version 0.65.* targets Bitsy 6.5.
how to use
a simple example program:
extern crate bitsy_parser;
use std::{env, fs};
use bitsy_parser::game::Game;
use bitsy_parser::image::Image;
/// replaces the player avatar with a smiley face.
fn main() {
let input_file = env::args().nth(1)
.expect("No input path specified. Usage: `smiley infile outfile`");
let output_file = env::args().nth(2)
.expect("No output path specified. Usage: `smiley infile outfile`");
let mut game = Game::from(fs::read_to_string(input_file).unwrap()).unwrap();
game.avatar.animation_frames = vec![
Image {
pixels: vec![
0,0,1,1,1,1,0,0,
0,1,1,1,1,1,1,0,
1,1,0,1,1,0,1,1,
1,1,0,1,1,0,1,1,
1,1,1,1,1,1,1,1,
1,1,0,1,1,0,1,1,
0,1,1,0,0,1,1,0,
0,0,1,1,1,1,0,0,
]
}
];
fs::write(output_file, &game.to_string())
.expect("Failed to write to output file");
}
some more practical uses would be things like:
- remove duplicate tiles
- merge two Bitsy games together
- programmatically create Bitsy games
- a Bitsy game editor
todo
- test for bitsy 7.0 and implement new features
- add dialogues to exits
- titles can have multiple lines of dialog
- dialogue names
- implement Result return types on ::from functions so we can handle errors
- handle old out-of-bounds editor errors (extra image pixels, exits/endings with position -1,-0 etc.)
- it's ok if the output of these does not match the input as we're fixing it
- "unquote" function for dialogues, game title, anything else that supports """
- add Bitsy HD and Bitsy 7.0 test data
- fix variables/endings becoming "DLG DLG"?
- ITM in avatars? are these starting items?
- make the avatar a sprite - they're not fundamentally different according to Bitsy
tidy up
- refactor the more shonky bits to idiomatic rust