use super::card;
use crate::app::Sim;
use crate::app::settings::GameSettings;
use bevy::prelude::*;
#[derive(Component)]
pub struct SideClock;
const CLOCK_TOP: f32 = 10.0;
pub fn update_side_clock(
sim: Res<Sim>,
time: Res<Time>,
settings: Res<GameSettings>,
mut clocks: Query<(&mut Text, &mut TextColor), With<SideClock>>,
) {
let Some(ticks) = sim.0.remaining_ticks() else {
return;
};
let value = crate::app::hud::clock_text(ticks);
let target = crate::app::hud::clock_color(ticks, time.elapsed_secs(), !settings.reduced_motion);
for (mut text, mut color) in &mut clocks {
crate::app::menu_ui::set_text(&mut text, &value);
crate::app::menu_ui::set_color(&mut color, target);
}
}
pub(super) fn spawn_clock(root: &mut ChildSpawnerCommands) {
root.spawn(card(CLOCK_TOP, Some(64.0)))
.with_children(|card| {
card.spawn((
SideClock,
Text::new(""),
TextFont {
font_size: FontSize::Px(44.0),
..default()
},
TextColor(Color::srgb(0.96, 0.93, 0.82)),
));
});
}