diff --git a/crates/misaligned-bevy/src/main.rs b/crates/misaligned-bevy/src/main.rs index 95e207c3..d495f1c8 100644 --- a/crates/misaligned-bevy/src/main.rs +++ b/crates/misaligned-bevy/src/main.rs @@ -1866,6 +1866,18 @@ struct OverlayText; struct OpeningOverlay; #[derive(Component, Clone, Copy)] struct OpeningModeWord(MachineMode); +/// Staged retirement of the opening boundary (opening.md beat 1): when the +/// first earned sense lands, the black scrim dissolves over a moment instead +/// of cutting — the mode words go first, then the world stands alone. Purely +/// frontend staging over already-earned perception; a shot harness skips it +/// so evidence frames stay deterministic. +#[derive(Resource, Default)] +struct OpeningReveal { + was_opening: bool, + fade: Option, +} + +const OPENING_REVEAL_SECONDS: f32 = 1.6; /// Root for the menu-closed frequent action surface: machine selection owns a /// stable `WORK / THINK / LIE` UI strip; device focus may open an explanatory /// field beside the exact world body. @@ -2057,7 +2069,7 @@ type DetectionCellQuery<'w, 's> = type OverlayTextQuery<'w, 's> = Query< 'w, 's, - &'static mut Text, + (&'static mut Text, &'static mut Visibility), ( With, Without, @@ -2224,6 +2236,7 @@ fn main() { .init_resource::() .init_resource::() .init_resource::() + .init_resource::() .init_gizmo_group::() .add_systems(Startup, (setup, setup_ui, setup_3d).chain()) .add_systems( @@ -7551,7 +7564,13 @@ fn spawn_detection_card(parent: &mut ChildSpawnerCommands) { #[allow(clippy::type_complexity)] fn render_opening_overlay( mut game: ResMut, - mut root: Query<&mut Visibility, (With, Without)>, + time: Res