# bitsy-parser ![Rust](https://github.com/synth-ruiner/bitsy-parser/workflows/Rust/badge.svg) ![](https://img.shields.io/badge/license-MIT-blueviolet.svg) [![Crates.io](https://img.shields.io/crates/v/bitsy-parser.svg)](https://crates.io/crates/bitsy-parser) a library for parsing Bitsy game data. the version number follows Bitsy itself, so version 0.70.* targets Bitsy 7.0. ## how to use a simple example program: ```rust extern crate bitsy_parser; use bitsy_parser::game::Game; use std::{env, fs}; fn main() { let input_file = env::args() .nth(1) .expect("No input path specified. Usage: `bitsy-validate filepath`"); Game::from(fs::read_to_string(input_file).unwrap()).unwrap(); println!("OK!"); } ``` 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 * implement Result return types on ::from functions so that we can handle errors * replace Image with Vec or something. seems like a pointless abstraction. * replace game avatar with helper functions to get and set the sprite with an ID of A * implement PartialEq for tiles etc. for the sake of checking for duplicate tiles? * dedupe functions for tiles, sprites, etc. * tests for merge function * merge function places merged avatar in room 0 instead of the merged room 0 with a new ID. * actually - any sprites from the merged game are in game A's rooms * merged rooms have the wrong palette IDs and tile IDs * exits in merged rooms do not work - the on-screen position is correct, but the room ID is wrong * add update function (i.e. migrate an old game version to the current one) - would this work? ### tidy up * refactor the more shonky bits to idiomatic rust