From 8335d5fab44296ae0cb937f56d2bbc48940ff8ba Mon Sep 17 00:00:00 2001 From: extrawurst Date: Sun, 16 Mar 2025 13:32:34 +0100 Subject: [PATCH] head damage ui --- assets/ui/head_bg.png | Bin 782 -> 966 bytes assets/ui/head_damage.png | Bin 0 -> 3189 bytes assets/ui/head_regular.png | Bin 3446 -> 7034 bytes src/heads_ui.rs | 65 +++++++++++++++++++++++++++++-------- 4 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 assets/ui/head_damage.png diff --git a/assets/ui/head_bg.png b/assets/ui/head_bg.png index eccf4e8c83f024f65d198f115b2e75c8950322e1..ed9487083740d0bea381ce2618fc4d0c190f2dd9 100644 GIT binary patch delta 929 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%0AW$$Bpq&}yq?=Sz+_Z1c#XZKG92bIHDMOvNq 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, @@ -21,6 +27,7 @@ struct ActiveHeads { pub struct HeadChanged(pub usize); pub fn plugin(app: &mut App) { + app.register_type::(); app.add_systems(Startup, setup); app.add_systems(Update, (update, toggle_heads)); } @@ -28,6 +35,7 @@ pub fn plugin(app: &mut App) { fn setup(mut commands: Commands, asset_server: Res) { let bg = asset_server.load("ui/head_bg.png"); let regular = asset_server.load("ui/head_regular.png"); + let damage = asset_server.load("ui/head_damage.png"); let selector = asset_server.load("ui/selector.png"); commands @@ -39,11 +47,16 @@ fn setup(mut commands: Commands, asset_server: Res) { ..default() }) .with_children(|parent| { - spawn_head_ui(parent, bg.clone(), regular.clone(), selector.clone(), 0); - spawn_head_ui(parent, bg.clone(), regular.clone(), selector.clone(), 1); - spawn_head_ui(parent, bg.clone(), regular.clone(), selector.clone(), 2); - spawn_head_ui(parent, bg.clone(), regular.clone(), selector.clone(), 3); - spawn_head_ui(parent, bg.clone(), regular.clone(), selector.clone(), 4); + for i in 0..5 { + spawn_head_ui( + parent, + bg.clone(), + regular.clone(), + selector.clone(), + damage.clone(), + i, + ); + } }); let head_01 = asset_server.load("ui/heads/angry demonstrator.png"); @@ -67,20 +80,25 @@ fn spawn_head_ui( bg: Handle, regular: Handle, selector: Handle, + damage: Handle, head: usize, ) { + const SIZE: f32 = 90.0; + const DAMAGE_SIZE: f32 = 74.0; + parent .spawn((Node { position_type: PositionType::Relative, justify_content: JustifyContent::Center, - width: Val::Px(74.0), + align_items: AlignItems::Center, + width: Val::Px(SIZE), ..default() },)) .with_children(|parent| { parent.spawn(( Node { position_type: PositionType::Absolute, - top: Val::Px(-20.0), + top: Val::Px(-30.0), ..default() }, Visibility::Hidden, @@ -97,10 +115,8 @@ fn spawn_head_ui( parent.spawn(( Node { position_type: PositionType::Absolute, - left: Val::Px(2.0), - right: Val::Px(2.0), - top: Val::Px(2.0), - bottom: Val::Px(2.0), + // width: Val::Px(66.0), + // height: Val::Px(66.0), ..default() }, ImageNode::default(), @@ -114,6 +130,29 @@ fn spawn_head_ui( }, ImageNode::new(regular), )); + parent + .spawn((Node { + height: Val::Px(DAMAGE_SIZE), + width: Val::Px(DAMAGE_SIZE), + ..default() + },)) + .with_children(|parent| { + parent + .spawn(( + HeadDamage(head), + Node { + position_type: PositionType::Absolute, + display: Display::Block, + overflow: Overflow::clip(), + top: Val::Px(0.), + left: Val::Px(0.), + right: Val::Px(0.), + height: Val::Percent(25.), + ..default() + }, + )) + .with_child(ImageNode::new(damage)); + }); }); }