1+ #![ allow( clippy:: cast_possible_truncation, clippy:: cast_sign_loss) ]
2+
13use std:: { io, time:: Duration } ;
24
35use chip8:: { Chip8Emulator , SCREEN_WIDTH } ;
@@ -7,15 +9,15 @@ use itertools::Itertools;
79use ratatui:: crossterm:: event:: KeyboardEnhancementFlags ;
810use ratatui:: crossterm:: event:: PushKeyboardEnhancementFlags ;
911use ratatui:: {
12+ DefaultTerminal , Frame ,
1013 crossterm:: event:: { self , Event , KeyCode , KeyEvent , KeyEventKind } ,
1114 layout:: { Constraint , Layout , Position , Rect } ,
1215 style:: Color ,
1316 symbols:: Marker ,
1417 widgets:: {
15- canvas:: { Canvas , Points } ,
1618 Block , Widget ,
19+ canvas:: { Canvas , Points } ,
1720 } ,
18- DefaultTerminal , Frame ,
1921} ;
2022
2123#[ derive( Parser , Debug ) ]
@@ -45,13 +47,14 @@ fn main() -> io::Result<()> {
4547 io:: stderr( ) ,
4648 PushKeyboardEnhancementFlags ( KeyboardEnhancementFlags :: REPORT_EVENT_TYPES )
4749 ) ?;
48- let app_result = App :: new ( command) . run ( & mut terminal) ;
50+ let app_result = App :: new ( & command) . run ( & mut terminal) ;
4951 ratatui:: restore ( ) ;
5052 app_result
5153}
5254
5355impl App {
54- pub fn new ( command : Commands ) -> Self {
56+ #[ must_use]
57+ pub fn new ( command : & Commands ) -> Self {
5558 let pong = include_bytes ! ( "./roms/PONG" ) ;
5659 let guess = include_bytes ! ( "./roms/GUESS" ) ;
5760 let maze = include_bytes ! ( "./roms/MAZE" ) ;
@@ -61,13 +64,15 @@ impl App {
6164 Commands :: Guess => emulator. load_data ( guess) ,
6265 Commands :: Maze => emulator. load_data ( maze) ,
6366 }
64- App {
67+ Self {
6568 emulator,
6669 exit : false ,
6770 points : vec ! [ ] ,
6871 }
6972 }
70-
73+ /// # Errors
74+ /// - reading events
75+ /// - fails to draw state to terminal
7176 pub fn run ( & mut self , terminal : & mut DefaultTerminal ) -> io:: Result < ( ) > {
7277 while !self . exit {
7378 for _ in 0 ..10 {
@@ -89,17 +94,10 @@ impl App {
8994
9095 fn handle_events ( & mut self ) -> io:: Result < ( ) > {
9196 if event:: poll ( Duration :: from_millis ( 16 ) ) ? {
92- match event:: read ( ) ? {
93- Event :: Key ( key_event) => {
94- let pressed = if key_event. kind == KeyEventKind :: Press {
95- true
96- } else {
97- false
98- } ;
99- self . handle_key_event ( key_event, pressed)
100- }
101- _ => { }
102- } ;
97+ if let Event :: Key ( key_event) = event:: read ( ) ? {
98+ let pressed = key_event. kind == KeyEventKind :: Press ;
99+ self . handle_key_event ( key_event, pressed) ;
100+ }
103101 }
104102 Ok ( ( ) )
105103 }
@@ -112,18 +110,18 @@ impl App {
112110 KeyCode :: Char ( '2' ) => Some ( 0x2 ) ,
113111 KeyCode :: Char ( '3' ) => Some ( 0x3 ) ,
114112 KeyCode :: Char ( '4' ) => Some ( 0xC ) ,
115- KeyCode :: Char ( 'q' ) | KeyCode :: Char ( 'Q' ) => Some ( 0x4 ) ,
116- KeyCode :: Char ( 'w' ) | KeyCode :: Char ( 'W' ) => Some ( 0x5 ) ,
117- KeyCode :: Char ( 'e' ) | KeyCode :: Char ( 'E' ) => Some ( 0x6 ) ,
118- KeyCode :: Char ( 'r' ) | KeyCode :: Char ( 'R' ) => Some ( 0xD ) ,
119- KeyCode :: Char ( 'a' ) | KeyCode :: Char ( 'A' ) => Some ( 0x7 ) ,
120- KeyCode :: Char ( 's' ) | KeyCode :: Char ( 'S' ) => Some ( 0x8 ) ,
121- KeyCode :: Char ( 'd' ) | KeyCode :: Char ( 'D' ) => Some ( 0x9 ) ,
122- KeyCode :: Char ( 'f' ) | KeyCode :: Char ( 'F' ) => Some ( 0xE ) ,
123- KeyCode :: Char ( 'z' ) | KeyCode :: Char ( 'Z' ) => Some ( 0xA ) ,
124- KeyCode :: Char ( 'x' ) | KeyCode :: Char ( 'X' ) => Some ( 0x0 ) ,
125- KeyCode :: Char ( 'c' ) | KeyCode :: Char ( 'C' ) => Some ( 0xB ) ,
126- KeyCode :: Char ( 'v' ) | KeyCode :: Char ( 'V' ) => Some ( 0xB ) ,
113+ KeyCode :: Char ( 'q' | 'Q' ) => Some ( 0x4 ) ,
114+ KeyCode :: Char ( 'w' | 'W' ) => Some ( 0x5 ) ,
115+ KeyCode :: Char ( 'e' | 'E' ) => Some ( 0x6 ) ,
116+ KeyCode :: Char ( 'r' | 'R' ) => Some ( 0xD ) ,
117+ KeyCode :: Char ( 'a' | 'A' ) => Some ( 0x7 ) ,
118+ KeyCode :: Char ( 's' | 'S' ) => Some ( 0x8 ) ,
119+ KeyCode :: Char ( 'd' | 'D' ) => Some ( 0x9 ) ,
120+ KeyCode :: Char ( 'f' | 'F' ) => Some ( 0xE ) ,
121+ KeyCode :: Char ( 'z' | 'Z' ) => Some ( 0xA ) ,
122+ KeyCode :: Char ( 'x' | 'X' ) => Some ( 0x0 ) ,
123+ KeyCode :: Char ( 'c' | 'C' ) => Some ( 0xB ) ,
124+ KeyCode :: Char ( 'v' | 'V' ) => Some ( 0xF ) ,
127125 _ => None ,
128126 } ;
129127
@@ -132,7 +130,7 @@ impl App {
132130 }
133131 }
134132
135- fn exit ( & mut self ) {
133+ const fn exit ( & mut self ) {
136134 self . exit = true ;
137135 }
138136
0 commit comments