-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.gd
88 lines (72 loc) · 3.04 KB
/
main.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
extends Control
@onready var panel: VBoxContainer = $HSplitContainer/ScrollContainer/ActionEvents
@onready var input_list: VBoxContainer = $HSplitContainer/Lists/ScrollContainer/InputList
@onready var groups_list: VBoxContainer = $HSplitContainer/Lists/GroupsList
@onready var scroll_bar: VScrollBar = $HSplitContainer/ScrollContainer.get_v_scroll_bar()
@onready var input_display: Label = $HSplitContainer/Lists/HBoxContainer/InputDisplay
var max_scroll_length: float
var current_input: String
func _ready() -> void:
max_scroll_length = scroll_bar.max_value
scroll_bar.changed.connect(_on_scroll_bar_changed)
var new_label: Label
for action: String in get_project_input_list():
new_label = Label.new()
new_label.name = action
new_label.text = action
new_label.add_theme_color_override('font_color', Color.ORANGE_RED)
input_list.add_child(new_label)
if get_tree().root.has_node('AdvancedInput'):
var new_group: CheckBox
for group: String in get_tree().root.get_node('AdvancedInput').get_key_groups():
new_group = CheckBox.new()
new_group.name = group
new_group.text = group
new_group.button_pressed = get_tree().root.get_node('AdvancedInput').group_enabled(group)
new_group.toggled.connect(_on_group_toggled)
groups_list.add_child(new_group)
new_label = Label.new()
new_label.text = 'AdvancedInputMap is enabled!'
groups_list.add_child(new_label)
else:
new_label = Label.new()
new_label.text = 'AdvancedInputMap is disabled'
groups_list.add_child(new_label)
func _input(event: InputEvent) -> void:
if event is InputEventKey:
if event.is_pressed():
current_input = event.as_text()
func _process(_delta: float) -> void:
var display_label: Label
var new_label: Label
for action: String in get_project_input_list():
display_label = input_list.get_node(action)
if Input.is_action_just_pressed(action):
new_label = Label.new()
new_label.text = action + ' pressed'
panel.add_child(new_label)
display_label.add_theme_color_override('font_color', Color.GREEN_YELLOW)
input_display.text = current_input
if Input.is_action_just_released(action):
new_label = Label.new()
new_label.text = action + ' released'
panel.add_child(new_label)
display_label.add_theme_color_override('font_color', Color.ORANGE_RED)
input_display.text = 'waiting for input...'
func get_project_input_list() -> Array:
var item_name: String
var items: Array
for item: Dictionary in ProjectSettings.get_property_list():
item_name = item.name
if item_name.begins_with('input/') and not item_name.begins_with('input/ui_'):
items.append(item_name.substr(6))
return items
func _on_group_toggled(toggled_on: bool) -> void:
if toggled_on:
get_tree().root.get_node('AdvancedInput').enable_group(get_viewport().gui_get_focus_owner().name)
else:
get_tree().root.get_node('AdvancedInput').disable_group(get_viewport().gui_get_focus_owner().name)
func _on_scroll_bar_changed() -> void:
if max_scroll_length != scroll_bar.max_value:
max_scroll_length = scroll_bar.max_value
scroll_bar.set_value_no_signal(max_scroll_length)