use crossterm::event::{Event, KeyCode, KeyEvent, KeyEventKind};
use crate::State;
#[derive(Default, Clone, State)]
pub struct Events {
pub event: Option<Event>,
pub(crate) exit: bool,
}
impl Events {
pub fn key(&self, code: KeyCode) -> bool {
if let Some(Event::Key(key_event)) = self.event {
if key_event.code == code && key_event.kind == KeyEventKind::Press {
return true;
}
}
false
}
pub fn key_event(&self, check_event: KeyEvent) -> bool {
if let Some(Event::Key(key_event)) = self.event {
if key_event == check_event && key_event.kind == KeyEventKind::Press {
return true;
}
}
false
}
pub fn consume_key(&mut self, code: KeyCode) -> bool {
if let Some(Event::Key(key_event)) = self.event {
if key_event.code == code && key_event.kind == KeyEventKind::Press {
self.event = None;
return true;
}
}
false
}
pub fn register_exit(&mut self) {
self.exit = true;
}
}