| 92 | } |
| 93 | |
| 94 | fn window_event(&mut self, event_loop: &ActiveEventLoop, _window_id: winit::window::WindowId, event: WindowEvent) { |
| 95 | match event { |
| 96 | WindowEvent::CloseRequested => event_loop.exit(), |
| 97 | WindowEvent::RedrawRequested => { |
| 98 | if let Err(err) = self.present() { |
| 99 | log::error!("present failed: {err:?}"); |
| 100 | event_loop.exit(); |
| 101 | } |
| 102 | } |
| 103 | WindowEvent::KeyboardInput { event, .. } => { |
| 104 | if let Some(key) = doom_key(&event.physical_key) { |
| 105 | let result = if matches!(event.state, ElementState::Pressed) { |
| 106 | self.runtime.key_down(i32::from(key)) |
| 107 | } else { |
| 108 | self.runtime.key_up(i32::from(key)) |
| 109 | }; |
| 110 | |
| 111 | if let Err(err) = result { |
| 112 | log::error!("keyboard event failed: {err:?}"); |
| 113 | event_loop.exit(); |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | _ => {} |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { |
| 122 | if let Err(err) = self.runtime.tick() { |