1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
extern crate crossterm; use crossterm::event::{poll, read, Event, KeyCode, KeyModifiers}; extern crate std; use std::time::Duration; use crate::log; use crate::events::UserEvent; use crate::errors::UserError; use crate::views::View; pub fn catch_events(log: &mut log::Log) -> (UserEvent, UserError, View) { if poll(Duration::from_nanos(1)).unwrap() { match read().unwrap() { Event::Key(key_event) => { if key_event.modifiers.is_empty() { match key_event.code { KeyCode::Esc => { return (UserEvent::Exit, UserError::ResizeCheck, View::Parameters) }, KeyCode::Char('g') => { return (UserEvent::SetGenerationNumber, UserError::ResizeCheck, View::Parameters) }, KeyCode::Char('s') => { return (UserEvent::Continue, UserError::ResizeCheck, View::Edit) }, KeyCode::Char('b') => { log.brush_incrbodyderatio(); }, KeyCode::Char('n') => { log.brush_incrbodydrratio(); }, KeyCode::Char('f') => { return (UserEvent::SetTextureFormat, UserError::ResizeCheck, View::Parameters) }, KeyCode::Char('p') => { log.texturessettings_incrpixelratio(); }, _ => (), } } else if key_event.modifiers == KeyModifiers::SHIFT { match key_event.code { KeyCode::Char('B') => { log.brush_decrbodyderatio(); }, KeyCode::Char('N') => { log.brush_decrbodydrratio(); }, KeyCode::Char('P') => { log.texturessettings_decrpixelratio(); }, _ => (), } } }, Event::Resize(_, _) => { return (UserEvent::Continue, UserError::ResizeCheck, View::Parameters) }, _ => {}, } } (UserEvent::Continue, UserError::ResizeCheck, View::Parameters) }