Files
mmo/scripts/player/hud.gd
2026-03-29 16:05:31 +02:00

44 lines
1.4 KiB
GDScript

extends CanvasLayer
@onready var health_bar: ProgressBar = $HealthBar
@onready var shield_bar: ProgressBar = $ShieldBar
@onready var respawn_label: Label = $RespawnTimer
@onready var class_icon: Label = $AbilityBar/ClassIcon/Label
var player_node: Node = null
func _ready() -> void:
respawn_label.visible = false
EventBus.health_changed.connect(_on_health_changed)
EventBus.shield_changed.connect(_on_shield_changed)
EventBus.entity_died.connect(_on_entity_died)
EventBus.player_respawned.connect(_on_player_respawned)
EventBus.class_changed.connect(_on_class_changed)
EventBus.respawn_tick.connect(_on_respawn_tick)
func _on_health_changed(entity: Node, current: float, max_val: float) -> void:
if entity.name == "Player":
health_bar.max_value = max_val
health_bar.value = current
func _on_shield_changed(entity: Node, current: float, max_val: float) -> void:
if entity.name == "Player":
shield_bar.max_value = max_val
shield_bar.value = current
func _on_entity_died(entity: Node) -> void:
if entity.name == "Player":
respawn_label.visible = true
func _on_player_respawned(_player: Node) -> void:
respawn_label.visible = false
func _on_respawn_tick(timer: float) -> void:
respawn_label.text = str(ceil(timer))
func _on_class_changed(_player: Node, class_type: int) -> void:
match class_type:
0: class_icon.text = "T"
1: class_icon.text = "D"
2: class_icon.text = "H"