lanceur.gd 1009 B

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