use bevy::prelude::*;
use bevy_mod_bbcode::{Bbcode, BbcodePlugin, BbcodeSettings, ColorMap};
#[derive(Component, Clone)]
struct TimeMarker;
fn main() {
App::new()
.add_plugins((DefaultPlugins, BbcodePlugin::new().with_fonts("fonts")))
.add_systems(Startup, setup)
.add_systems(Update, (update_text, update_color))
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2d);
commands.spawn((
Bbcode::new("Time passed: [m=time]0.0[/m] s with [c=rainbow]rainbow[/c]"),
BbcodeSettings::new("Fira Sans", 40., Color::WHITE)
.with_marker("time", TimeMarker),
));
}
fn update_text(time: Res<Time>, mut query: Query<&mut TextSpan, With<TimeMarker>>) {
for mut text in query.iter_mut() {
*text = format!("{:.0}", time.elapsed_secs()).into();
}
}
fn update_color(time: Res<Time>, mut color_map: ResMut<ColorMap>) {
let hue = (time.elapsed_secs() * 20.) % 360.;
color_map.insert("rainbow", Hsva::hsv(hue, 1., 1.));
}