diff options
author | tpart <tpart120@proton.me> | 2024-09-02 01:12:05 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2024-09-02 01:12:11 +0200 |
commit | 20827b958e616e6421e59ebf9d4f24f718ca62fd (patch) | |
tree | 2556ffe9deda7ac281c234f7c0dd1ce61dadbd09 /client | |
parent | 5fec7c7daa4741189a2749d7531e64b1ba6be58b (diff) | |
download | hurrycurry-20827b958e616e6421e59ebf9d4f24f718ca62fd.tar hurrycurry-20827b958e616e6421e59ebf9d4f24f718ca62fd.tar.bz2 hurrycurry-20827b958e616e6421e59ebf9d4f24f718ca62fd.tar.zst |
Apply new input settings
Diffstat (limited to 'client')
-rw-r--r-- | client/global.gd | 10 | ||||
-rw-r--r-- | client/menu/settings/input/input_manager.gd | 13 |
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()) |