bitsy-parser 0.70.2

A parser and utilities for working with Bitsy game data
Documentation
# 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<u8> 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 sprites, items etc. for deduplication
* global dedupe function and dedupe functions for sprites, items etc.
* tests for merge function
* all sprites from the merged game get placed in their respective game's Room 0
* 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