class_name Lanceur
extends Node2D
## Gere les balles du jeu.


signal partie_perdue
signal nb_balles_change(int)

const SceneBalle = preload("res://composants/objets/balle/balle.tscn")

## Quand il ne reste plus de balle, la partie est perdue !
@export_range(1, 10) var nombre_de_balles: int = 1


func _ready() -> void:
	lancer_balle()


## S'il en reste en reserve, lance une balle
func lancer_balle() -> void:
	if nombre_de_balles <= 0:
		partie_perdue.emit()
		return # on ne lance pas la balle

	_decrementer_nombre_de_balles()
	var nouvelle_balle: Balle = SceneBalle.instantiate()
	add_child.call_deferred(nouvelle_balle) # Appeler plus tard sinon Godot pas content


func incrementer_nombre_de_balles() -> void:
	nombre_de_balles += 1
	nb_balles_change.emit(nombre_de_balles)


func _quand_balle_detruite() -> void:
	lancer_balle()


func _decrementer_nombre_de_balles() -> void:
	nombre_de_balles -= 1
	nb_balles_change.emit(nombre_de_balles)
