Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 3m40s
57 lines
1.6 KiB
GDScript
57 lines
1.6 KiB
GDScript
@tool
|
|
class_name GdUnitInputCapture
|
|
extends Control
|
|
|
|
signal input_completed(input_event: InputEventKey)
|
|
|
|
|
|
var _tween: Tween
|
|
var _input_event: InputEventKey
|
|
|
|
|
|
func _ready() -> void:
|
|
reset()
|
|
self_modulate = Color.WHITE
|
|
_tween = create_tween()
|
|
@warning_ignore("return_value_discarded")
|
|
_tween.set_loops()
|
|
@warning_ignore("return_value_discarded")
|
|
_tween.tween_property(%Label, "self_modulate", Color(1, 1, 1, .8), 1.0).from_current().set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_IN_OUT)
|
|
|
|
|
|
func reset() -> void:
|
|
_input_event = InputEventKey.new()
|
|
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if not is_visible_in_tree():
|
|
return
|
|
if event is InputEventKey and event.is_pressed() and not event.is_echo():
|
|
var _event := event as InputEventKey
|
|
match _event.keycode:
|
|
KEY_CTRL:
|
|
_input_event.ctrl_pressed = true
|
|
KEY_SHIFT:
|
|
_input_event.shift_pressed = true
|
|
KEY_ALT:
|
|
_input_event.alt_pressed = true
|
|
KEY_META:
|
|
_input_event.meta_pressed = true
|
|
_:
|
|
_input_event.keycode = _event.keycode
|
|
_apply_input_modifiers(_event)
|
|
accept_event()
|
|
|
|
if event is InputEventKey and not event.is_pressed():
|
|
input_completed.emit(_input_event)
|
|
hide()
|
|
|
|
|
|
func _apply_input_modifiers(event: InputEvent) -> void:
|
|
if event is InputEventWithModifiers:
|
|
var _event := event as InputEventWithModifiers
|
|
_input_event.meta_pressed = _event.meta_pressed or _input_event.meta_pressed
|
|
_input_event.alt_pressed = _event.alt_pressed or _input_event.alt_pressed
|
|
_input_event.shift_pressed = _event.shift_pressed or _input_event.shift_pressed
|
|
_input_event.ctrl_pressed = _event.ctrl_pressed or _input_event.ctrl_pressed
|