class_name EnemyCounterHUD extends CanvasLayer @onready var _label: Label = $MarginContainer/Label var _remaining_enemies: int = 0 func _ready() -> void: EventBus.enemy_defeated.connect(_on_enemy_defeated) _count_initial_enemies.call_deferred() func _count_initial_enemies() -> void: _remaining_enemies = get_tree().get_nodes_in_group("enemies").size() _update_label() func _on_enemy_defeated() -> void: _remaining_enemies = maxi(_remaining_enemies - 1, 0) _update_label() func _update_label() -> void: if _remaining_enemies <= 0: visible = false return _label.text = "Enemies remaining: %d" % _remaining_enemies