55 lines
1.8 KiB
GDScript
55 lines
1.8 KiB
GDScript
class_name Tambour
|
|
|
|
var scene_node = null
|
|
@export var cooldown = 0.9 # Durée du cooldown en secondes
|
|
var is_on_cooldown = false # Indique si le cooldown est actif
|
|
|
|
func set_scene_parent(node: Node) -> void:
|
|
scene_node = node
|
|
# Si scene_node est défini pour la première fois, on ajoute un Timer
|
|
if not scene_node.has_node("TambourCooldownTimer2"): # Changement du nom du Timer unique pour le Tambour
|
|
var cooldown_timer = Timer.new()
|
|
cooldown_timer.name = "TambourCooldownTimer2" # Nom unique pour éviter les conflits
|
|
cooldown_timer.one_shot = true
|
|
cooldown_timer.wait_time = cooldown
|
|
cooldown_timer.connect("timeout", Callable(self, "_on_cooldown_timeout"))
|
|
scene_node.add_child(cooldown_timer)
|
|
|
|
|
|
func jouer_melodie(player_position: Vector2) -> void:
|
|
if not is_on_cooldown: # Vérifiez si nous sommes en cooldown
|
|
spawn_onde(player_position)
|
|
|
|
|
|
|
|
func spawn_onde(player_position: Vector2) -> void:
|
|
if scene_node == null:
|
|
print("Erreur : Aucun nœud parent défini pour ajouter l'onde.")
|
|
return
|
|
|
|
var onde_scene = preload("res://scenes/attaques/Onde.tscn") # Chargez la scène de l'onde
|
|
var onde = onde_scene.instantiate()
|
|
|
|
if onde:
|
|
onde.position = player_position
|
|
scene_node.add_child(onde)
|
|
|
|
# Démarrez le cooldown après avoir ajouté l'onde
|
|
start_cooldown()
|
|
else:
|
|
print("Erreur : Impossible de créer l'onde.")
|
|
|
|
|
|
# Démarrer le Timer pour le cooldown
|
|
func start_cooldown() -> void:
|
|
is_on_cooldown = true
|
|
var cooldown_timer = scene_node.get_node("TambourCooldownTimer2") # Assurez-vous que le Timer est bien trouvé
|
|
if cooldown_timer:
|
|
cooldown_timer.start()
|
|
else:
|
|
print("Erreur : Timer introuvable.")
|
|
|
|
|
|
func _on_cooldown_timeout() -> void:
|
|
is_on_cooldown = false # Réinitialiser le cooldown lorsque le Timer se termine
|
|
print("Cooldown terminé.")
|