Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 26m34s
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use bevy_ecs::world::World;
|
|
use winit::{
|
|
application::ApplicationHandler,
|
|
event::WindowEvent,
|
|
event_loop::ActiveEventLoop,
|
|
window::{Window, WindowId},
|
|
};
|
|
|
|
use crate::core::app::App;
|
|
|
|
use super::config::WindowConfig;
|
|
|
|
pub struct WindowState {
|
|
app: App,
|
|
window: Option<Window>,
|
|
}
|
|
|
|
impl WindowState {
|
|
pub fn new(app: App) -> Self {
|
|
Self { app, window: None }
|
|
}
|
|
|
|
fn world(&self) -> &World {
|
|
self.app.world()
|
|
}
|
|
}
|
|
|
|
impl ApplicationHandler for WindowState {
|
|
fn resumed(&mut self, event_loop: &ActiveEventLoop) {
|
|
let window_config = self.world().get_resource::<WindowConfig>().unwrap();
|
|
|
|
let window = event_loop.create_window(window_config.into()).unwrap();
|
|
self.window = Some(window);
|
|
}
|
|
|
|
fn window_event(&mut self, event_loop: &ActiveEventLoop, _id: WindowId, event: WindowEvent) {
|
|
match event {
|
|
WindowEvent::CloseRequested => {
|
|
log::debug!("The close button was pressed; stopping");
|
|
event_loop.exit();
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
}
|