extends Control const NO_DEVICE := "No Active Device" const DEFAULT_COLOR := Color(0x2a2a2aff) const ACTIVE_COLOR := Color(0x4a8e53ff) @onready var device_name: RichTextLabel = $Device var _has_joy := false var _buttons: Array[Node] var _triggers: Array[Node] func _ready() -> void: self._buttons = self.get_tree().get_nodes_in_group("buttons") self._triggers = self.get_tree().get_nodes_in_group("triggers") if Input.get_connected_joypads().size() > 0: self.device_name.text = Input.get_joy_name(0) self._has_joy = true func _process(_delta: float) -> void: if !self._has_joy: if Input.get_connected_joypads().size() > 0: self.device_name.text = Input.get_joy_name(0) self._has_joy = true return if Input.get_connected_joypads().size() <= 0: self._has_joy = false self.device_name.text = NO_DEVICE return for btn in self._buttons: if not btn is ControllerButton: continue var cbtn := btn as ControllerButton cbtn.color = DEFAULT_COLOR if cbtn.input_code && Input.is_action_pressed(cbtn.input_code): cbtn.color = ACTIVE_COLOR for btn in self._triggers: if not btn is ControllerTrigger: continue var cbtn := btn as ControllerTrigger cbtn.value = Input.get_joy_axis(0, cbtn.input_axis)