bracket-terminal 0.7.0

ASCII/Codepage 437 terminal emulator with a game loop. Defaults to OpenGL, also support Amethyst, Curses and Crossterm for output. Part of the bracket-lib family.
Documentation
bracket_terminal::add_wasm_support!();
use bracket_terminal::prelude::*;

struct State {
    nyan: XpFile,
}

impl GameState for State {
    fn tick(&mut self, ctx: &mut BTerm) {
        ctx.cls();
        ctx.print_color(
            0,
            0,
            RGB::named(YELLOW),
            RGB::named(BLACK),
            "Hello Nyan Cat!",
        );
        ctx.print_color(
            0,
            1,
            RGB::named(GREEN),
            RGB::named(BLACK),
            "Loaded from REX Paint (https://www.gridsagegames.com/rexpaint/)",
        );
        ctx.render_xp_sprite(&self.nyan, 2, 4);
    }
}

// This is a helper macro to embed a file in your binary.
bracket_terminal::embedded_resource!(NYAN_CAT, "../resources/nyan.xp");

fn main() {
    // This helper macro links the above embedding, allowing it to be accessed as a resource from various parts of the program.
    bracket_terminal::link_resource!(NYAN_CAT, "../resources/nyan.xp");
    let xp = XpFile::from_resource("../resources/nyan.xp").unwrap();

    let context = BTermBuilder::simple80x50()
        .with_title("Bracket Terminal Example - REX Paint, Hello Nyan Cat")
        .build();
    let gs: State = State { nyan: xp };
    main_loop(context, gs);
}