Implement damage UI
This commit is contained in:
@@ -32,9 +32,15 @@ use crate::{
|
||||
#[derive(Deref, Component, Default, Hash, Debug, Copy, Clone)]
|
||||
pub struct FighterKnockbackVelocity(pub FGVec2);
|
||||
|
||||
#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize, Component, Hash)]
|
||||
#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize, Component, Hash, PartialEq)]
|
||||
pub struct FighterDamage(FGi32);
|
||||
|
||||
impl std::fmt::Display for FighterDamage {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:.2}", self.0)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Hash, Clone)]
|
||||
pub enum HitReactionKind {
|
||||
Flinch,
|
||||
@@ -48,6 +54,7 @@ pub struct FighterHitReaction {
|
||||
pub hitstop_frames: HitStop,
|
||||
pub hitstun_frames: u32,
|
||||
pub kind: HitReactionKind,
|
||||
pub damage: FighterDamage,
|
||||
}
|
||||
|
||||
#[derive(Component, DerefMut, Deref, Debug, Default, Hash, Clone)]
|
||||
|
||||
@@ -49,10 +49,11 @@ pub fn resolve_fighter_hits(
|
||||
};
|
||||
let attack_script = attack_scripts.get(&hit.attack_script)?;
|
||||
let hitbox = attack_script.hitboxes.get(hit.hitbox_index)?;
|
||||
dbg!(hitbox.damage.0);
|
||||
let damage_received = stale_move_queue
|
||||
.get_attack_damage_multiplier(hit.attack_kind)
|
||||
* hitbox.damage.0;
|
||||
|
||||
dbg!(damage_received);
|
||||
Some((
|
||||
hit.attacker,
|
||||
damage_received,
|
||||
@@ -100,6 +101,7 @@ pub fn resolve_fighter_hits(
|
||||
hitstun_frames: knockback.get_hitstun_frames(&game_settings),
|
||||
hitstop_frames: hitstop,
|
||||
kind: HitReactionKind::Flinch,
|
||||
damage: FighterDamage(attack_damage)
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ impl FighterStateImpl for GroundAttackState {
|
||||
fn on_enter(&mut self, state_context: &mut EnterContext) {
|
||||
state_context.play_animation(self.attack_kind.get_animation(), false);
|
||||
let script = state_context.attack_script_assets.scripts[&self.attack_kind].clone();
|
||||
state_context.stale_move_queue.push(self.attack_kind);
|
||||
state_context.hitboxes.0 = Some(crate::fighter::FighterActiveAttack {
|
||||
kind: self.attack_kind,
|
||||
script,
|
||||
|
||||
Reference in New Issue
Block a user