34 lines
612 B
GDScript
34 lines
612 B
GDScript
extends Node3D
|
|
|
|
signal matador_killed
|
|
signal all_defeated
|
|
|
|
@export var enemy_scene: PackedScene = null
|
|
|
|
var _alive: int = 0
|
|
var _resolved: bool = false
|
|
|
|
|
|
func _ready() -> void:
|
|
add_to_group(&"matador_spawn")
|
|
_spawn.call_deferred()
|
|
|
|
|
|
func _spawn() -> void:
|
|
if enemy_scene == null:
|
|
return
|
|
var bear: Node3D = enemy_scene.instantiate()
|
|
bear.position = Vector3.ZERO
|
|
get_parent().add_child(bear)
|
|
if bear.has_signal(&"killed"):
|
|
bear.killed.connect(_on_bear_killed)
|
|
_alive += 1
|
|
|
|
|
|
func _on_bear_killed() -> void:
|
|
matador_killed.emit()
|
|
_alive -= 1
|
|
if not _resolved:
|
|
_resolved = true
|
|
all_defeated.emit()
|