Added health bar

This commit is contained in:
2025-11-15 03:52:16 +03:00
parent 67b629baad
commit 85a4fc7381
14 changed files with 258 additions and 10 deletions
+18
View File
@@ -2,6 +2,10 @@ class_name Health
extends Node
signal shield_updated(value: int)
signal armor_updated(value: int)
signal hull_updated(value: int)
signal depleted
@@ -10,6 +14,17 @@ signal depleted
@export_range(1, 5000) var max_hull: int = 1
var shield: int:
get: return _shield
set(value): pass
var armor: int:
get: return _armor
set(value): pass
var hull: int:
get: return _hull
set(value): pass
@onready var _shield := max_shield
@onready var _armor := max_armor
@onready var _hull := max_hull
@@ -19,14 +34,17 @@ func apply_damage(damage: AbstractDamage) -> void:
if _shield > 0:
var damage_value := ceili(damage.value * damage.shield_damage_multiplier())
_shield = max(_shield - damage_value, 0)
shield_updated.emit(_shield)
elif _armor > 0:
var damage_value := ceili(damage.value * damage.armor_damage_multiplier())
_armor = max(_armor - damage_value, 0)
armor_updated.emit(_armor)
else:
if _hull == 0: return
var damage_value := ceili(damage.value * damage.hull_damage_multiplier())
_hull = max(_hull - damage_value, 0)
hull_updated.emit(_hull)
if _hull == 0:
depleted.emit()