Crate tinybit[][src]

Terminal game engine

 
fn main() {
    let (width, height) = term_size().expect("Can't get the term size? Can't play the game!");
 
    // Viewport
    let viewport_size = ScreenSize::new(width / 2, height / 2);
    let mut viewport = Viewport::new(ScreenPos::new(0, 4), viewport_size);
 
    // Camera
    let (width, height) = (width as f32, height as f32);
    let camera_size = WorldSize::new(width / 2.0, height / 2.0); let camera_pos =
    WorldPos::new(width, height);
    let mut camera = Camera::new(camera_pos, camera_size);
 
    // Renderer
    let stdout_renderer = StdoutTarget::new().expect("Failed to enter raw mode");
    let mut renderer = Renderer::new(stdout_renderer);
 
    // Player
    let mut player = ('@', camera_pos);
 
    for event in events(EventModel::Fps(20)) {
        match event {
            Event::Tick => {
                let pixel = Pixel::new(player.0, camera.to_screen(player.1), None, None);
                viewport.draw_pixel(pixel);
                let _ = renderer.render(&mut viewport);
            }
            Event::Key(KeyEvent { code: KeyCode::Esc, ..  }) => break,
            Event::Key(KeyEvent { code: kc, .. }) => {
                match kc {
                    KeyCode::Left => { player.1.x -= 1.0; }
                    KeyCode::Right => { player.1.x += 1.0; }
                    KeyCode::Up => { player.1.y -= 1.0; }
                    KeyCode::Down => { player.1.y += 1.0; }
                    _ => {}
                }
            }
            Event::Resize(w, h) => {}
        }
    }
}

Re-exports

pub use camera::Camera;
pub use render::Renderer;
pub use render::StdoutTarget;

Modules

camera
events

Event handling.

render
widgets

A collection of widgets.

Structs

Pixel

A character at a position, with a colour

PixelBuffer

Character buffer holds all the “pixels” to be drawn on the screen

Screen

Constraining units to screen space

Viewport

Represents a drawable area on screen.

World

Constraining units to world space

Enums

Color

Represents a color.

Colored

Represents a foreground or background color.

CrosstermError

Wrapper for all errors that can occur in crossterm.

Functions

term_size

Returns the terminal size (columns, rows).

Type Definitions

ScreenPos

A position on screen, where 0,0 is the top left corner

ScreenRect

A rect on screen

ScreenSize

A size on screen

Vec2D
WorldPos

A position in the world

WorldRect

A rect in the world

WorldSize

A size in the world