class_name Assigner_Bouton
extends Control

@onready var label = $HBoxContainer/Label as Label
@onready var button = $HBoxContainer/Button as Button
 	
@export var nom_action : String = "BOUGER_HAUT"
@onready var nom_touche : String = OS.get_keycode_string(InputMap.action_get_events(nom_action)[0].physical_keycode)


# Called when the node enters the scene tree for the first time.
func _ready():
	set_process_unhandled_key_input(false)
	set_texte_label()
	set_texte_bouton()

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
	pass


func set_texte_label() -> void : 
	label.text = "Non assignée"
	
	match nom_action :
		"BOUGER_HAUT":
			label.text = "monter"
		"BOUGER_BAS":
			label.text = "descendre"
		"BOUGER_DROITE":
			label.text = "aller à droite"
		"BOUGER_GAUCHE":
			label.text = "aller à gauche"
		"PAUSE":
			label.text = "Pause"

func set_texte_bouton() -> void:
	nom_touche = OS.get_keycode_string(InputMap.action_get_events(nom_action)[0].physical_keycode)
	button.text = "%s" % nom_touche

func definir_touche(touche)-> void:

	var old = InputMap.action_get_events(nom_action)[0]
	var action_keycode=touche.physical_keycode
	
	InputMap.action_erase_events(nom_action)
	InputMap.action_add_event(nom_action, touche)
	set_texte_bouton()

	print(nom_action, "deviens ", nom_touche)
	
	for i in get_tree().get_nodes_in_group("changer_touches"):
		if i.nom_action != self.nom_action and i.nom_touche==self.nom_touche :
			InputMap.action_erase_events(i.nom_action)
			InputMap.action_add_event(i.nom_action, old)
			i.set_texte_bouton()
			print(i.nom_action, "deviens ", i.nom_touche, "car échange")

func _on_button_pressed():
	button.text = "Appuyez sur une touche..."
	set_process_unhandled_key_input(true)


func _unhandled_key_input(event):
	definir_touche(event)
	set_process_unhandled_key_input(false)


func _on_hidden():
	set_process_unhandled_key_input(false)
	set_texte_bouton()