// file: crates/engines/engine-v1-common/src/quit.rs // version: 1 /// Origin of a platform-independent request to leave the current game runtime. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum QuitSource { /// The operating-system or window manager requested the window to close. WindowClose, /// The Desktop Escape key requested leaving the runtime. Escape, /// The platform-native Back action requested leaving the runtime. PlatformBack, } /// Decision returned by a game when the runtime requests to leave. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum QuitDecision { /// Leave the current runtime immediately. Exit, /// Keep the runtime active after the game handled the request. Continue, } /// Platform-independent quit request delivered to a game. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct QuitRequest { source: QuitSource, } impl QuitRequest { /// Creates a quit request from the supplied source. #[must_use] pub const fn new(source: QuitSource) -> Self { return Self { source }; } /// Returns the physical or platform-level source of the request. #[must_use] pub const fn source(self) -> QuitSource { return self.source; } }