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 |
Functions
term_size | Returns the terminal size |
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 |