|
|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
|