use bevy::prelude::*;
use crate::{
client::colors,
ecs::{FuelText, Player, PlayerStorage, PowerText},
};
pub fn ui_plugin(app: &mut App) {
app.add_systems(Startup, setup_ui)
.add_systems(Update, update_ui);
}
fn setup_ui(mut commands: Commands) {
commands.spawn((
Node {
width: Val::Percent(100.0),
height: Val::Percent(100.0),
..Default::default()
},
children![(
Node {
display: Display::Flex,
position_type: PositionType::Absolute,
width: Val::Px(200.0),
height: Val::Px(150.0),
top: Val::Px(5.0),
right: Val::Px(5.0),
..Default::default()
},
BorderRadius::all(Val::Px(5.0)),
BackgroundColor(colors::MANTLE),
children![
(TextColor(colors::PEACH), Text::new("Fuel: 25"), FuelText,),
(TextColor(colors::PEACH), Text::new("Power: 25"), PowerText,),
/*(
Node {
width: Val::Percent(100.0),
height: Val::Px(20.0),
margin: UiRect::all(Val::Px(5.0)),
..Default::default()
},
BorderRadius::all(Val::Px(5.0)),
BackgroundColor(colors::CRUST),
)*/
],
)],
Visibility::Visible
));
}
fn update_ui(
mut fuel_text: Single<&mut Text, With<FuelText>>,
mut power_text: Single<&mut Text, (With<PowerText>, Without<FuelText>)>,
player: Single<&PlayerStorage, (With<Player>, Without<PowerText>)>,
) {
fuel_text.0 = format!("Fuel: {}/{}", player.fuel, player.fuel_capacity);
power_text.0 = format!("Power: {}/{}", player.power, player.power_capacity);
}