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) { let ui_id = 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 )).id(); debug!(?ui_id, "spawned ui component"); } fn update_ui( mut fuel_text: Single<&mut Text, With>, mut power_text: Single<&mut Text, (With, Without)>, player: Single<&PlayerStorage, (With, Without)>, ) { fuel_text.0 = format!("Fuel: {}/{}", player.fuel, player.fuel_capacity); power_text.0 = format!("Power: {}/{}", player.power, player.power_capacity); }