From 2e39423d11a6cd1e25b54c30d9afd22e8eff9dfe Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Tue, 19 Mar 2024 07:36:54 +0100 Subject: feat: shield ability --- src/shared/health.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/shared/health.rs') diff --git a/src/shared/health.rs b/src/shared/health.rs index b88f19c..f9cc300 100644 --- a/src/shared/health.rs +++ b/src/shared/health.rs @@ -1,4 +1,20 @@ use crate::shared::*; #[derive(Component, Message, Serialize, Deserialize, Clone, Copy, Debug, PartialEq)] -pub struct Health(pub f32); +pub struct Health { + pub health: f32, + pub shield: f32, +} + +impl Health { + pub fn apply_damage(&mut self, damage: f32) { + let shield_damage = damage.min(self.shield); + let health_damage = damage - shield_damage; + self.shield = self.shield - shield_damage; + self.health = (self.health - health_damage).max(0.); + } + + pub fn heal(&mut self, health: f32, max_health: f32) { + self.health = (self.health + health).min(max_health); + } +} -- cgit v1.2.3