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
+19 -5
View File
@@ -11,9 +11,9 @@ use crate::{
pub fn resolve_fighter_hits(
mut pending_hits: ResMut<FighterPendingHits>,
mut attacker: Query<(
&FighterStaleMoveQueue,
&mut FighterStaleMoveQueue,
&FighterFacingDirection,
&FighterHitboxes,
&mut FighterHitboxes,
&Player,
&mut FighterHitstop,
&mut FighterHitstopShake,
@@ -42,7 +42,7 @@ pub fn resolve_fighter_hits(
let damage_data = hits[hit_offset..next_defender]
.iter()
.filter_map(|hit| {
let Ok((stale_move_queue, facing_dir, _hitboxes, player, _, _)) =
let Ok((stale_move_queue, facing_dir, _, player, _, _)) =
attacker.get(hit.attacker)
else {
return None;
@@ -52,7 +52,6 @@ pub fn resolve_fighter_hits(
let damage_received = stale_move_queue
.get_attack_damage_multiplier(hit.attack_kind)
* hitbox.damage.0;
Some((
hit.attacker,
damage_received,
@@ -90,6 +89,7 @@ pub fn resolve_fighter_hits(
angle
};
// Attacker hitstop and data
let hitstop = HitStop::calculate(FighterDamage(attack_damage), false);
reactions.push((
attacker_entity,
@@ -100,6 +100,7 @@ pub fn resolve_fighter_hits(
hitstun_frames: knockback.get_hitstun_frames(&game_settings),
hitstop_frames: hitstop,
kind: HitReactionKind::Flinch,
damage: FighterDamage(attack_damage)
},
));
}
@@ -107,7 +108,7 @@ pub fn resolve_fighter_hits(
receiver_damage.0 += total_damage_received_this_frame;
for (attacker_entity, _, reaction) in &reactions {
let Ok((.., mut hitstop, mut hitstop_shake)) = attacker.get_mut(*attacker_entity) else {
let Ok((.., _, mut hitstop, mut hitstop_shake)) = attacker.get_mut(*attacker_entity) else {
continue;
};
@@ -134,6 +135,19 @@ pub fn resolve_fighter_hits(
hit_offset = next_defender;
}
for hit in hits {
let Ok((mut stale_move_queue, _facing_direction, mut hitboxes, ..)) = attacker.get_mut(hit.attacker) else {
continue;
};
if let Some(ref mut hitbox) = hitboxes.0 {
if !hitbox.stalled {
hitbox.stalled = true;
stale_move_queue.push(hitbox.kind);
}
}
}
Ok(())
}