use crate::prelude::*;
#[derive(Clone, Component, Debug, Deserialize, Eq, PartialEq, Resource, Serialize)]
#[serde(default)]
pub struct WindowState {
pub mode: WindowMode,
pub monitor: Option<String>,
pub resolution: Option<(u32, u32)>,
pub position: Option<(i32, i32)>,
#[serde(skip)]
pub(crate) sync: bool,
}
impl WindowState {
pub fn fullscreen() -> WindowState {
WindowState {
mode: WindowMode::Fullscreen,
monitor: None,
resolution: None,
position: None,
sync: true,
}
}
pub fn windowed(width: u32, height: u32) -> WindowState {
WindowState {
mode: WindowMode::Windowed,
monitor: None,
resolution: Some((width, height)),
position: None,
sync: true,
}
}
}
impl WindowState {
pub fn at(mut self, x: i32, y: i32) -> WindowState {
if self.mode == WindowMode::Windowed {
self.position = Some((x, y));
}
self
}
}
impl Default for WindowState {
fn default() -> WindowState {
WindowState::fullscreen()
}
}