Only make display mode switch avaliable after loading

bevy0.12
Elijah Voigt 2 years ago
parent cc0299a65a
commit e2c2f50ab3

@ -124,7 +124,7 @@ fn audio_trigger(
.for_each(|source| source.stop());
// we are playing a sound
} else {
info!("Playing audoi {}", event_str);
info!("Playing audio {}", event_str);
commands.spawn(audio_source);
}
} else {

@ -5,12 +5,17 @@ pub(crate) struct UiPlugin;
impl Plugin for UiPlugin {
fn build(&self, app: &mut App) {
app.add_systems(Startup, initialize);
app.add_systems(OnExit(GameState::Loading), sync_display_mode);
app.add_systems(OnEnter(GameState::Menu), sync_display_mode);
app.add_systems(
Update,
(
toggle_display_mode.run_if(any_component_changed::<Interaction>),
sync_display_mode.run_if(state_changed::<DisplayState>()),
sync_display_mode
.run_if(state_changed::<DisplayState>())
.run_if(in_state(GameState::Menu)),
sync_display_mode
.run_if(state_changed::<DisplayState>())
.run_if(in_state(GameState::Play)),
),
);
}
@ -30,7 +35,8 @@ fn initialize(mut commands: Commands) {
bottom: Val::Px(5.0),
..default()
},
background_color: Color::WHITE.with_a(0.5).into(),
background_color: Color::WHITE.into(),
visibility: Visibility::Hidden,
..default()
},
UiRoot,
@ -42,7 +48,7 @@ fn initialize(mut commands: Commands) {
padding: UiRect::all(Val::Px(10.0)),
..default()
},
visibility: Visibility::Visible,
background_color: Color::WHITE.into(),
..default()
},
DisplayState::Display2d,
@ -71,6 +77,7 @@ fn toggle_display_mode(
/// Runs every time the DisplayState changes
fn sync_display_mode(
mut query: Query<(&mut UiImage, &mut DisplayState), With<Button>>,
mut visibilities: Query<&mut Visibility, With<UiRoot>>,
state: Res<State<DisplayState>>,
server: Res<AssetServer>,
) {
@ -85,4 +92,7 @@ fn sync_display_mode(
};
*display_state = target_state;
});
visibilities
.iter_mut()
.for_each(|mut visibility| *visibility = Visibility::Visible);
}

Loading…
Cancel
Save