44 lines
1.4 KiB
GDScript
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"
|