diff options
Diffstat (limited to 'src/input.rs')
| -rw-r--r-- | src/input.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/input.rs b/src/input.rs new file mode 100644 index 0000000..c86daf4 --- /dev/null +++ b/src/input.rs @@ -0,0 +1,27 @@ +use crossterm::event::KeyCode; +use rustc_hash::FxHashSet; + +#[derive(Debug, Default, Clone)] +pub struct InputManager { + pressed_keys: FxHashSet<KeyCode>, +} + +impl InputManager { + pub fn new() -> Self { + Self { + pressed_keys: FxHashSet::default(), + } + } + + pub fn press_key(&mut self, key_code: KeyCode) { + self.pressed_keys.insert(key_code); + } + + pub fn reset_next_frame(&mut self) { + self.pressed_keys.clear(); + } + + pub fn is_key_pressed_this_frame(&self, key_code: KeyCode) -> bool { + self.pressed_keys.contains(&key_code) + } +} |
