diff --git a/src/game.rs b/src/game.rs index e6e5017..e1825d3 100644 --- a/src/game.rs +++ b/src/game.rs @@ -196,6 +196,8 @@ impl Game { } self.handle_input(vw, vh); + + std::thread::sleep(std::time::Duration::from_millis(16)); } if let Err(e) = renderer.shutdown() { @@ -206,7 +208,9 @@ impl Game { pub fn handle_input(&mut self, vw: usize, vh: usize) { let action = self.input.poll(); match action { - Action::Quit => self.running = false, + Action::Quit => { + self.running = false; + } Action::MoveLeft => self.player.move_left(&mut self.entities), Action::MoveRight => self.player.move_right(&mut self.entities), Action::Jump => { diff --git a/src/main.rs b/src/main.rs index 489ee18..4718cbd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,6 +28,17 @@ fn main() { match cli.mode.as_str() { "terminal" => { + std::panic::set_hook(Box::new(|info| { + let _ = crossterm::terminal::disable_raw_mode(); + let _ = crossterm::execute!( + std::io::stdout(), + crossterm::style::ResetColor, + crossterm::cursor::Show, + crossterm::terminal::LeaveAlternateScreen, + crossterm::event::DisableMouseCapture, + ); + eprintln!("PANIC: {}", info); + })); let mut renderer = TerminalRenderer::new(); let mut game = Game::new(); game.run(&mut renderer);