From 4c2b5a994cc5e64b8d4fcc5ab21e9d60a821c5fc Mon Sep 17 00:00:00 2001 From: logaritmisk Date: Sun, 12 Jun 2016 21:48:27 +0200 Subject: [PATCH] Let KeyboardManager handle events. Clean up event loop a little. --- src/keyboard.rs | 16 +++++++++++++++- src/main.rs | 13 ++----------- 2 files changed, 17 insertions(+), 12 deletions(-) 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) {