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()); .for_each(|source| source.stop());
// we are playing a sound // we are playing a sound
} else { } else {
info!("Playing audoi {}", event_str); info!("Playing audio {}", event_str);
commands.spawn(audio_source); commands.spawn(audio_source);
} }
} else { } else {

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

Loading…
Cancel
Save