balle_electrique.gd 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. class_name BalleElectrique
  2. extends Balle
  3. const BalleElectriqueScene: PackedScene = preload("res://composants/objets/balle/balle_elec/balle_electrique.tscn")
  4. const duree_clignotement_max: float = 0.05 # sec
  5. var _duree_clignotement: float = 0.0
  6. var surchargee: bool = true # vrai si l'electricite deborde
  7. @onready var image: Sprite2D = $Image
  8. func _process(delta: float) -> void:
  9. _clignoter(delta)
  10. func _clignoter(delta: float) -> void:
  11. if not surchargee:
  12. return
  13. _duree_clignotement += delta
  14. if _duree_clignotement < duree_clignotement_max:
  15. # trop tot pour clignoter
  16. return
  17. # pas de 0, donc au moins un axe est flip
  18. var axes_a_inverser: int = randi_range(1, 3)
  19. var inversion_horizontale: bool = axes_a_inverser % 2 == 1
  20. var inversion_verticale: bool = axes_a_inverser / 2 == 1
  21. if inversion_verticale:
  22. image.flip_v = not image.flip_v
  23. if inversion_horizontale:
  24. image.flip_h = not image.flip_h
  25. _duree_clignotement = 0.0
  26. ## Transforme une balle quelconque en balle electrique
  27. static func transformer(balle: Balle) -> void:
  28. var balle_elec: BalleElectrique = BalleElectriqueScene.instantiate()
  29. balle.add_sibling.call_deferred(balle_elec) # Appeler plus tard sinon Godot pas content
  30. balle_elec.recopier(balle)
  31. balle.queue_free()