Files
voxel-game/src/client/app.rs

49 lines
1.2 KiB
Rust

use winit::{application::ApplicationHandler, event::WindowEvent, event_loop::ControlFlow};
use super::Client;
pub struct ClientApp {
client: Option<Client>,
}
impl ClientApp {
fn client(&mut self) -> &mut Client {
self.client.as_mut().expect("bruh")
}
pub fn new() -> Self {
Self { client: None }
}
}
impl ApplicationHandler for ClientApp {
fn resumed(&mut self, event_loop: &winit::event_loop::ActiveEventLoop) {
if self.client.is_none() {
self.client = Some(Client::new(event_loop));
}
event_loop.set_control_flow(ControlFlow::Poll);
}
fn window_event(
&mut self,
_event_loop: &winit::event_loop::ActiveEventLoop,
_window_id: winit::window::WindowId,
event: WindowEvent,
) {
self.client().window_event(event);
}
fn device_event(
&mut self,
_event_loop: &winit::event_loop::ActiveEventLoop,
_device_id: winit::event::DeviceId,
event: winit::event::DeviceEvent,
) {
self.client().input.update_device(event);
}
fn about_to_wait(&mut self, event_loop: &winit::event_loop::ActiveEventLoop) {
self.client().update(event_loop);
}
}