diff options
| author | Mica White <botahamec@outlook.com> | 2026-06-17 17:41:28 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-06-17 17:41:28 -0400 |
| commit | b9570962cfc214bbac0f3fef1e6c1f9848f52658 (patch) | |
| tree | 4c131b0208b394f7c10d395c3a6e72f91b0a57fc /src/main.rs | |
| parent | 0403d02e376fd0b95abe2f06ffbf836dd2a8ddf0 (diff) | |
Basic renderer and framerate test
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index e7a11a9..e8c9f23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,48 @@ +use std::time::Instant; + +use crossterm::{ + event::{Event, KeyCode}, + style::ContentStyle, +}; +use tortuise::buffer::{Buffer, Cell}; + fn main() { - println!("Hello, world!"); + let mut stdout = std::io::stdout().lock(); + let mut buffer = Buffer::new(&mut stdout).unwrap(); + let mut last_frame_start = Instant::now(); + buffer + .render_loop( + |renderer, event| { + if let Event::Key(event) = event + && event.code == KeyCode::Esc + { + let _ = renderer.finish(); + std::process::exit(0); + } + }, + |renderer| { + renderer.cells.clear(); + let end = Instant::now(); + let frame_time = (end - last_frame_start).as_micros(); + let digits = [ + frame_time % 1_000_000 / 100_000, + frame_time % 100_000 / 10_000, + frame_time % 10_000 / 1_000, + frame_time % 1_000 / 100, + frame_time % 100 / 10, + frame_time % 10, + ]; + for (x, digit) in digits.into_iter().enumerate() { + renderer.cells.push(Cell { + character: char::from_digit(digit as u32, 10).unwrap(), + x: x as u16, + y: 0, + z: 0, + style: ContentStyle::new(), + }); + } + last_frame_start = Instant::now(); + }, + ) + .unwrap(); } |
