Skip to content

Crossterm plugin for the bevy game engine

License

Notifications You must be signed in to change notification settings

ecrax/bevy_crossterm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bevy_crossterm

What is bevy_crossterm?

bevy_crossterm is a Bevy plugin that uses crossterm as a renderer. It provides custom components and events which allow users to develop games for the terminal.

Table of Contents

Features

  • Sprites and styles with colors and attributes
    • Up to 24-bit color (depends on what the host terminal supports)
  • Incremental drawing: Only draw on the screen when something has changed
  • Transparency: Sprites can have holes so any sprites underneath will not be covered
  • Position, show, and hide the cursor
  • Set window title
  • Plugs into Bevy's asset system so sprites and styles can be loaded from disk and also hot reloaded

Demo GIF

demo

Getting Started

See the examples for runnable code and detailed comments.

[dependencies]
bevy = { version = "0.4", default-features = false }
bevy_crossterm = "0.4.0"
use bevy::prelude::*;
use bevy_crossterm::prelude::*;

pub fn main() {
    let mut settings = CrosstermWindowSettings::default();
    settings.set_title("Hello, World!");

    App::build()
        // Add our window settings
        .add_resource(settings)
        // Add the DefaultPlugins before the CrosstermPlugin. The crossterm plugin needs bevy's asset server, and if it's
        // not available you'll trigger an assert
        .add_plugins(DefaultPlugins)
        .add_plugin(CrosstermPlugin)
        .add_startup_system(startup_system.system())
        .run();
}

fn startup_system(
    commands: &mut Commands,
    mut sprites: ResMut<Assets<Sprite>>,
    mut stylemaps: ResMut<Assets<StyleMap>>,
) {
    commands
        .spawn(SpriteBundle {
            sprite: sprites.add(Sprite::new("Hello, world!")),
            stylemap: stylemaps.add(StyleMap::default()),
            ..Default::default()
        });
}

Press Control-c to exit at any time.

About

Crossterm plugin for the bevy game engine

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%