diff options
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()) | 
