Implement damage UI, damage and stale moves. (#45)
CI / build-and-test (push) Successful in 1m30s

Reviewed-on: #45
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #45.
This commit is contained in:
2026-09-19 15:40:44 +00:00
committed by EIREXE
parent 7269a1cb49
commit 804e5e37e0
11 changed files with 178 additions and 60 deletions
+57
View File
@@ -0,0 +1,57 @@
use bevy::prelude::*;
use crate::{fighter::{attack::FighterDamage, manifest::{FighterManifest}}, match_loading::MatchPlayer, player::Player};
#[derive(Component, FromTemplate)]
pub struct FighterInfoUI {
percentage_text: Entity,
_name_text: Entity,
player_handle: usize,
visible_damage: FighterDamage,
}
impl FighterInfoUI {
pub fn build(_manifest: &FighterManifest, match_player: &MatchPlayer) -> impl Scene {
let fighter_name = "El grande padre";
bsn! {
FighterInfoUI {
percentage_text: #PercentageText,
_name_text: #NameText,
player_handle: {match_player.handle}
}
Node {
flex_direction: FlexDirection::Column,
align_items: AlignItems::Center,
justify_content: JustifyContent::Center,
}
Children [
(
#PercentageText
Text("0.00%")
TextFont {
font_size: px(crate::menus::style::H2_SIZE),
}
),
(
#NameText
Text({fighter_name})
)
]
}
}
}
pub fn update_fighter_info_damage(fighters: Query<(&Player, &FighterDamage)>, ui_elements: Query<&mut FighterInfoUI>, mut commands: Commands) {
for mut ui_element in ui_elements {
let Some((_, damage)) = fighters.iter().find(|(player, _)| {
player.handle == ui_element.player_handle
}) else {
continue;
};
if *damage != ui_element.visible_damage {
commands.entity(ui_element.percentage_text).insert(Text(format!("{}%", damage)));
ui_element.visible_damage = damage.clone();
}
}
}