started work on multiple input bindinghs, but is very shit, so need to rewrite how these are stored

This commit is contained in:
JHDev2006
2025-09-29 13:52:10 +01:00
parent 0a5e2ea211
commit 00015d2650
5 changed files with 108 additions and 62 deletions

View File

@@ -65,22 +65,35 @@ func load_inputs() -> void:
for action_name in i.action_names:
var action = action_name
var value = Settings.file[[\"keyboard\", \"controller\"][type]].get(action, null)
var event: InputEvent = null
if value == null:
continue
if type == 0:
event = InputEventKey.new()
event.keycode = OS.find_keycode_from_string(value)
elif type == 1:
if value is String:
var array = value.split(\",\")
event = InputEventJoypadMotion.new()
event.axis = int(array[0])
event.axis_value = int(array[1])
elif value is int:
event = InputEventJoypadButton.new()
event.button_index = value
i.map_event_to_action(event)
if value is Array:
var idx := 0
for x in value:
bind_value_to_event(i, x, idx)
idx += 1
else:
bind_value_to_event(i, value, 0)
func bind_value_to_event(input_node, value, idx := 0) -> void:
var event: InputEvent = null
if value is String:
if value == \"\":
input_node.map_event_to_action(null, idx)
return
if type == 0:
event = InputEventKey.new()
event.keycode = OS.find_keycode_from_string(value)
elif type == 1:
if value is String:
var array = value.split(\",\")
event = InputEventJoypadMotion.new()
event.axis = int(array[0])
event.axis_value = int(array[1])
elif value is int:
event = InputEventJoypadButton.new()
event.button_index = value
input_node.map_event_to_action(event, idx)
func update_starting_values() -> void:
load_inputs()
@@ -88,20 +101,33 @@ func update_starting_values() -> void:
func save_inputs() -> void:
for i in actions:
var event = null
var events := []
if i.contains(\"ui\") or i == \"pause\":
event = InputMap.action_get_events(i)[type]
event = InputMap.action_get_events(i)
else:
event = InputMap.action_get_events(i + \"_0\")[type]
var rep
if event is InputEventKey:
rep = OS.get_keycode_string(event.keycode)
elif event is InputEventJoypadButton:
rep = event.button_index
elif event is InputEventJoypadMotion:
rep = str(event.axis) + \",\" + str(event.axis_value)
else:
pass
Settings.file[[\"keyboard\", \"controller\"][type]][i] = rep
event = InputMap.action_get_events(i + \"_0\")
var size = event.size()
if type == 0:
if size > 2:
events = [get_str_for_event(event[0]), get_str_for_event(event[2])]
else:
events = [get_str_for_event(event[0])]
elif type == 1:
if size > 3:
events = [get_str_for_event(event[1]), get_str_for_event(event[3])]
else:
events = [get_str_for_event(event[1])]
Settings.file[[\"keyboard\", \"controller\"][type]][i] = events
func get_str_for_event(event: InputEvent):
var rep = \"\"
if event is InputEventKey:
rep = OS.get_keycode_string(event.keycode)
elif event is InputEventJoypadButton:
rep = event.button_index
elif event is InputEventJoypadMotion:
rep = str(event.axis) + \",\" + str(event.axis_value)
return rep
"
[sub_resource type="StyleBoxLine" id="StyleBoxLine_k6yev"]