diff --git a/src/keyboard.rs b/src/keyboard.rs index 1fb2ed4..ffc33a8 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -1,8 +1,8 @@ use std::collections::HashMap; +use sdl2::event::Event; use sdl2::keyboard::Keycode; - pub struct KeyboardHandler { pressed_keys: HashMap, released_keys: HashMap, @@ -18,6 +18,20 @@ impl KeyboardHandler { } } + pub fn process(&mut self, event: &Event) { + match *event { + Event::KeyDown {keycode, repeat, ..} => { + if repeat == false { + self.key_down(keycode.unwrap()); + } + }, + Event::KeyUp {keycode, ..} => { + self.key_up(keycode.unwrap()); + }, + _ => (), + } + } + pub fn clear(&mut self) { self.pressed_keys.clear(); self.released_keys.clear(); diff --git a/src/main.rs b/src/main.rs index 61a5f62..766f678 100644 --- a/src/main.rs +++ b/src/main.rs @@ -181,21 +181,12 @@ fn main() { use sdl2::event::Event; match event { + Event::KeyDown {keycode, ..} if keycode == Some(Keycode::Escape) => break 'main, Event::Quit {..} => break 'main, - Event::KeyDown {keycode, repeat, ..} => { - if repeat == false { - keyboard.key_down(keycode.unwrap()); - } - }, - Event::KeyUp {keycode, ..} => { - keyboard.key_up(keycode.unwrap()); - }, _ => (), } - } - if keyboard.was_pressed(Keycode::Escape) { - break 'main; + keyboard.process(&event); } if keyboard.is_held(Keycode::Right) && (player.dx >= 0.0 || player.on_ground) {