-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinding_names.gd
More file actions
94 lines (81 loc) · 2.92 KB
/
binding_names.gd
File metadata and controls
94 lines (81 loc) · 2.92 KB
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
89
90
91
92
93
94
extends Node
## Called when the node enters the scene tree for the first time.
#func _ready() -> void:
#pass # Replace with function body.
#
#
## Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta: float) -> void:
#pass
var _default_binding_names = {
"left_trigger": "Left Trigger",
"left_bumper": "Left Bumper",
"right_trigger": "Right Trigger",
"right_bumper": "Right Bumper",
"dpad_up": "Dpad Up",
"dpad_down": "Dpad Down",
"dpad_right": "Dpad right",
"dpad_left": "Dpad left",
"back": "Back",
"start": "Start",
"up_button": "Up Button",
"right_button": "Right Button",
"down_button": "Down Button",
"left_button": "Left Button",
"left_stick_press": "Left stick press",
"right_stick_press": "Right stick press",
"share": "Share",
"home": "Home",
"touchpad": "Touchpad",
"left_joystick_up":"Left Joystick Up",
"left_joystick_down":"Left Joystick Down",
"right_joystick_up":"Right Joystick Up",
"right_joystick_down":"Right Joystick Down",
}
var _controller_bindings = {}
var _binding_name = "default"
func _get_clean_bindings_names():
# Loads all of the files within the res://controllers directory, removes the .json ending, and returns them
var dirty_names = DirAccess.get_files_at("res://controllers")
var clean_names = []
for name in dirty_names:
clean_names.append(name.split(".")[0])
return clean_names
func set_bindings_for_controller_type(controller_name: String):
print("Setting bindings for controller")
var names = _get_clean_bindings_names()
_controller_bindings = _default_binding_names
for name in names:
var possible_names = _get_possible_controller_names(name)
for possible_name in possible_names:
if controller_name.containsn(possible_name):
print("Controller type found, %s (%s)" % [possible_name, name])
_binding_name = name
break
_modify_bindings()
func _get_possible_controller_names(file_name: String):
var file = FileAccess.open("res://controllers/%s.json" % file_name, FileAccess.READ)
var data = JSON.parse_string(file.get_as_text())
return data.get("possible-names")
func _load_bindings_file(file_name: String):
print("Loading file %s" % file_name)
var file = FileAccess.open("res://controllers/%s" % file_name, FileAccess.READ)
var data = JSON.parse_string(file.get_as_text())
return data.get("binding-names")
func _modify_bindings():
if _binding_name == "default":
print("Unknown controller, no modification")
return
var file_name = _binding_name+".json"
var file_data = _load_bindings_file(file_name)
print("Starting binding modification")
for binding in file_data.keys():
if binding in _controller_bindings.keys():
_controller_bindings[binding] = file_data[binding]
else:
print("Action name %s unknown!" % binding)
print("Binding modification finished")
func get_binding_from_action(action: String) -> String:
### Returns the correct binding name based on the action name
return _controller_bindings[action]
pass