Skip to content

Commit

Permalink
ui::text example works
Browse files Browse the repository at this point in the history
  • Loading branch information
UkoeHB committed Oct 3, 2024
1 parent ee9ccbc commit cd6dc92
Showing 1 changed file with 56 additions and 61 deletions.
117 changes: 56 additions & 61 deletions examples/ui/text.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,44 +28,43 @@ struct ColorText;
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
// UI camera
commands.spawn(Camera2dBundle::default());
// Text with one section
// Text with one section.
commands.spawn((
// Create a TextBundle that has a Text with a single section.
TextBundle::from_section(
// Accepts a `String` or any type that converts into a `String`, such as `&str`
"hello\nbevy!",
TextStyle {
// This font is loaded and will be used instead of the default font.
font: asset_server.load("fonts/FiraSans-Bold.ttf"),
font_size: 67.0,
..default()
},
) // Set the justification of the Text
.with_text_justify(JustifyText::Center)
// Set the style of the TextBundle itself.
.with_style(Style {
// Accepts a `String` or any type that converts into a `String`, such as `&str`
TextNEW::new("hello\nbevy!"),
TextStyle {
// This font is loaded and will be used instead of the default font.
font: asset_server.load("fonts/FiraSans-Bold.ttf"),
font_size: 67.0,
..default()
},
// Set the justification of the Text
TextBlock::new_with_justify(JustifyText::Center),
// Set the style of the Node itself.
Style {
position_type: PositionType::Absolute,
bottom: Val::Px(5.0),
right: Val::Px(5.0),
..default()
}),
},
ColorText,
));

// Text with multiple sections
commands.spawn((
// Create a TextBundle that has a Text with a list of sections.
TextBundle::from_sections([
TextSection::new(
"FPS: ",
TextStyle {
// This font is loaded and will be used instead of the default font.
font: asset_server.load("fonts/FiraSans-Bold.ttf"),
font_size: 42.0,
..default()
},
),
TextSection::from_style(if cfg!(feature = "default_font") {
commands
.spawn((
// Create a Text with multiple child spans.
TextNEW::new("FPS: "),
TextStyle {
// This font is loaded and will be used instead of the default font.
font: asset_server.load("fonts/FiraSans-Bold.ttf"),
font_size: 42.0,
..default()
},
))
.with_child((
TextSpan::default(),
if cfg!(feature = "default_font") {
TextStyle {
font_size: 33.0,
color: GOLD.into(),
Expand All @@ -79,49 +78,45 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
font_size: 33.0,
color: GOLD.into(),
}
}),
]),
FpsText,
));
},
FpsText,
));

#[cfg(feature = "default_font")]
commands.spawn(
commands.spawn((
// Here we are able to call the `From` method instead of creating a new `TextSection`.
// This will use the default font (a minimal subset of FiraMono) and apply the default styling.
TextBundle::from("From an &str into a TextBundle with the default font!").with_style(
Style {
position_type: PositionType::Absolute,
bottom: Val::Px(5.0),
left: Val::Px(15.0),
..default()
},
),
);
TextNEW::new("From an &str into a Text with the default font!"),
Style {
position_type: PositionType::Absolute,
bottom: Val::Px(5.0),
left: Val::Px(15.0),
..default()
},
));

#[cfg(not(feature = "default_font"))]
commands.spawn(
TextBundle::from_section(
"Default font disabled",
TextStyle {
font: asset_server.load("fonts/FiraMono-Medium.ttf"),
..default()
},
)
.with_style(Style {
commands.spawn((
TextNEW::new("Default font disabled"),
TextStyle {
font: asset_server.load("fonts/FiraMono-Medium.ttf"),
..default()
},
Style {
position_type: PositionType::Absolute,
bottom: Val::Px(5.0),
left: Val::Px(15.0),
..default()
}),
);
},
));
}

fn text_color_system(time: Res<Time>, mut query: Query<&mut Text, With<ColorText>>) {
for mut text in &mut query {
fn text_color_system(time: Res<Time>, mut query: Query<&mut TextStyle, With<ColorText>>) {
for mut style in &mut query {
let seconds = time.elapsed_seconds();

// Update the color of the first and only section.
text.sections[0].style.color = Color::srgb(
// Update the color of the ColorText span.
style.color = Color::srgb(
ops::sin(1.25 * seconds) / 2.0 + 0.5,
ops::sin(0.75 * seconds) / 2.0 + 0.5,
ops::sin(0.50 * seconds) / 2.0 + 0.5,
Expand All @@ -131,13 +126,13 @@ fn text_color_system(time: Res<Time>, mut query: Query<&mut Text, With<ColorText

fn text_update_system(
diagnostics: Res<DiagnosticsStore>,
mut query: Query<&mut Text, With<FpsText>>,
mut query: Query<&mut TextSpan, With<FpsText>>,
) {
for mut text in &mut query {
for mut span in &mut query {
if let Some(fps) = diagnostics.get(&FrameTimeDiagnosticsPlugin::FPS) {
if let Some(value) = fps.smoothed() {
// Update the value of the second section
text.sections[1].value = format!("{value:.2}");
**span = format!("{value:.2}");
}
}
}
Expand Down

0 comments on commit cd6dc92

Please sign in to comment.