49 lines
1.2 KiB
GDScript
49 lines
1.2 KiB
GDScript
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)
|