k4d3's picture
awoo
48ca417
raw
history blame contribute delete
No virus
704 Bytes
use bevy::{ ecs::component::Component, reflect::Reflect };
use super::armor::Armor;
// 🩸
#[derive(Component, Clone, Reflect)]
pub struct Health {
pub current: u32,
pub max: u32,
pub hunger: u32,
}
impl Default for Health {
fn default() -> Self {
Self {
current: 100,
max: 100,
hunger: 0,
}
}
}
impl Health {
pub fn take_damage(&mut self, mut damage: u32, armor: Option<&Armor>) {
if let Some(armor) = armor {
let reduction = ((armor.value as f32) / 100.0) * (damage as f32);
damage -= reduction.ceil() as u32;
}
self.current = self.current.saturating_sub(damage);
}
}