diff options
Diffstat (limited to 'src/input/resources.rs')
-rw-r--r-- | src/input/resources.rs | 53 |
1 files changed, 2 insertions, 51 deletions
diff --git a/src/input/resources.rs b/src/input/resources.rs index a733984..f8b9032 100644 --- a/src/input/resources.rs +++ b/src/input/resources.rs @@ -1,56 +1,7 @@ -use bevy::{prelude::*, utils::HashSet}; -use crossterm::event::{Event, KeyCode}; +use bevy::prelude::*; +use crossterm::event::Event; use std::sync::{Arc, Mutex}; -/// Resource containing currently pressed and released keys -#[derive(Resource, Default)] -pub struct TerminalInput { - pressed_keys: HashSet<KeyCode>, - just_pressed_keys: HashSet<KeyCode>, - just_released_keys: HashSet<KeyCode>, -} - -impl TerminalInput { - /// Gets whether the given key is pressed - pub fn is_pressed(&self, code: KeyCode) -> bool { - self.pressed_keys.contains(&code) - } - - /// Gets whether the given key was just pressed - pub fn just_pressed(&self, code: KeyCode) -> bool { - self.just_pressed_keys.contains(&code) - } - - /// Gets whether the given key was just released - pub fn just_released(&self, code: KeyCode) -> bool { - self.just_released_keys.contains(&code) - } - - /// Sets given key to pressed - pub(super) fn press(&mut self, code: KeyCode) { - if !self.pressed_keys.contains(&code) { - self.pressed_keys.insert(code); - self.just_pressed_keys.insert(code); - } - } - - /// Sets given key to released and removes pressed state - pub(super) fn release(&mut self, code: KeyCode) { - self.pressed_keys.remove(&code); - self.just_released_keys.insert(code); - } - - /// Clears all just released keys - pub(super) fn clear_just_released(&mut self) { - self.just_released_keys.clear(); - } - - /// Clears all just pressed keys - pub(super) fn clear_just_pressed(&mut self) { - self.just_pressed_keys.clear(); - } -} - /// Event queue for crossterm input event thread #[derive(Resource, Default)] pub(crate) struct EventQueue(pub(super) Arc<Mutex<Vec<Event>>>); |