summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/global.gd10
-rw-r--r--client/menu/settings/input/input_manager.gd13
2 files changed, 19 insertions, 4 deletions
diff --git a/client/global.gd b/client/global.gd
index e9bd1954..0a14ebdc 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -230,6 +230,9 @@ func apply_settings():
using_touch = false
using_touch_change.emit()
+ # Input settings
+ InputManager.apply_input_map(InputManager.settings_dictionary_to_input_map(get_category_settings("input")))
+
settings_changed.emit()
func update_language():
@@ -319,6 +322,13 @@ func get_setting(key: String):
push_error("Tried to access setting \"%s\", which does not exist (missing key)" % key)
return null
+func get_category_settings(category_id: String):
+ for c: SettingsCategory in default_settings:
+ if c.id == category_id:
+ return c.settings
+ push_error("Category %s not found" % category_id)
+ return null
+
func set_setting(key: String, value):
if !settings.has(key):
push_error("Tried to set setting \"%s\", which does not yet exist (missing key)" % key)
diff --git a/client/menu/settings/input/input_manager.gd b/client/menu/settings/input/input_manager.gd
index 14e1b99c..b0b8170d 100644
--- a/client/menu/settings/input/input_manager.gd
+++ b/client/menu/settings/input/input_manager.gd
@@ -37,15 +37,20 @@ func input_map_to_settings_dictionary(map: Dictionary) -> Dictionary:
settings_dict[k] = InputSetting.new(k, events)
return settings_dict
-func change_input_map_action(action_name: String, event: InputEvent, save: bool = true):
+func settings_dictionary_to_input_map(settings: Dictionary) -> Dictionary:
+ var map := {}
+ for k in settings.keys():
+ var setting: InputSetting = settings[k]
+ map[k] = setting.get_value()
+ return map
+
+func change_input_map_action(action_name: String, events: Array, save: bool = true):
if !InputMap.has_action(action_name):
push_error("Action %s does not exist" % action_name, false)
return
# Erase previous keybindings
- var events = InputMap.action_get_events(action_name).duplicate(true)
InputMap.action_erase_events(action_name)
# Add new keybindings
- events[0] = event
for e in events:
InputMap.action_add_event(action_name, e)
@@ -65,7 +70,7 @@ func apply_input_map(new_input_map: Dictionary):
# Apply keybindings
for k in input_map.keys():
- change_input_map_action(k, input_map[k][0], false)
+ change_input_map_action(k, input_map[k], false)
func reset_input_map():
Global.set_setting("input_map", default_input_map.duplicate())