use std::collections::HashSet; use sfml::window::{Key, Event, mouse::Button}; pub struct Input { held_keys: HashSet, held_mouse: HashSet, } impl Input { pub fn new() -> Input { let mut key_container = HashSet::new(); let mut mouse_container = HashSet::new(); Input { held_keys: key_container, held_mouse: mouse_container, } } pub fn is_held(&self, key: Key) -> bool { self.held_keys.contains(&key) } pub fn is_mousebutton_held(&self, button: Button) -> bool { self.held_mouse.contains(&(button as u8)) } pub fn ingest(&mut self, event: &Event) { match event { Event::KeyPressed { code, .. } => { self.held_keys.insert(code.clone()); } Event::KeyReleased { code, .. } => { self.held_keys.remove(code); } Event::MouseButtonPressed { button, x, y } => { self.held_mouse.insert(button.clone() as u8); }, Event::MouseButtonReleased { button, x, y } => { self.held_mouse.remove(&(button.clone() as u8)); }, _ => {} } } }