lanceur.gd 951 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class_name Lanceur
  2. extends Node2D
  3. ## Gere les balles du jeu.
  4. signal partie_perdue
  5. signal nb_balles_change(int)
  6. const SceneBalle = preload("res://composants/objets/balle/balle.tscn")
  7. ## Quand il ne reste plus de balle, la partie est perdue !
  8. @export_range(1, 10) var nombre_de_balles: int = 1
  9. func _ready() -> void:
  10. lancer_balle()
  11. ## S'il en reste en reserve, lance une balle
  12. func lancer_balle() -> void:
  13. if nombre_de_balles <= 0:
  14. partie_perdue.emit()
  15. return # on ne lance pas la balle
  16. _decrementer_nombre_de_balles()
  17. var nouvelle_balle: Balle = SceneBalle.instantiate()
  18. add_child.call_deferred(nouvelle_balle) # Appeler plus tard sinon Godot pas content
  19. func incrementer_nombre_de_balles() -> void:
  20. nombre_de_balles += 1
  21. nb_balles_change.emit(nombre_de_balles)
  22. func _quand_balle_detruite() -> void:
  23. lancer_balle()
  24. func _decrementer_nombre_de_balles() -> void:
  25. nombre_de_balles -= 1
  26. nb_balles_change.emit(nombre_de_balles)