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::manifest::{FighterManifest, FighterManifestRegistry}, match_loading::{PendingMatch}, ui::{errors::UIErrors, fighter_info::FighterInfoUI},
};
#[derive(Component, FromTemplate)]
pub struct BattleUI {
}
pub fn spawn_battle_ui(mut commands: Commands, request: Res<PendingMatch>, fighter_registry: Res<FighterManifestRegistry>, manifests: Res<Assets<FighterManifest>>) -> Result {
let mut fighter_uis = vec![];
for player in &request.players {
let manifest = fighter_registry.get(player.fighter).ok_or_else(|| UIErrors::FighterManifestHandleNotFound(player.fighter))?;
let manifest = manifests.get(manifest).ok_or_else(|| UIErrors::FighterManifestNotFound(player.fighter))?;
fighter_uis.push(FighterInfoUI::build(manifest, player));
}
let scene = bsn! {
BattleUI {
}
Node {
width: percent(100),
height: percent(100),
flex_direction: FlexDirection::Column,
align_items: AlignItems::Center,
justify_content: JustifyContent::End,
}
Children [
(
#FighterInfos
Node {
width: percent(100),
flex_direction: FlexDirection::Row,
align_items: AlignItems::End,
justify_content: JustifyContent::SpaceEvenly,
}
Children [
{fighter_uis}
]
)
]
};
commands.spawn_scene(scene);
Ok(())
}
pub fn cleanup_battle_ui(mut commands: Commands, battle_ui: Query<Entity, With<BattleUI>>) {
for entity in battle_ui {
commands.entity(entity).despawn();
}
}