34 lines
938 B
GDScript3
Raw Normal View History

2024-12-08 19:32:21 -07:00
class_name ControlBinding extends CheckerContainer
## Input for rebinding an action.
const ACTION_KEY_FMT := "ACTION_{0}"
const SCENE := preload("res://src/ui/menus/settings_menu/control_binding/control_binding.tscn")
@export var key: StringName
@onready var action: Label = %Action
@onready var binding: Label = %Binding
func _ready() -> void:
# gdlint:ignore = private-method-call
super._ready()
# Set action label text
var loc_action := tr(ACTION_KEY_FMT.format([key]))
# Fall back to just the key if no localization exists
@warning_ignore("incompatible_ternary")
action.text = loc_action if loc_action else key
# Set the binding label
var actions := InputMap.action_get_events(key)
if actions:
var primary := actions[0]
binding.text = PromptMap.from_event(primary)
static func create(_key: StringName) -> ControlBinding:
var instance: ControlBinding = SCENE.instantiate()
instance.key = _key
return instance