diff options
Diffstat (limited to 'client/global.gd')
-rw-r--r-- | client/global.gd | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/client/global.gd b/client/global.gd index 2dd5f735..d9d5614b 100644 --- a/client/global.gd +++ b/client/global.gd @@ -17,6 +17,8 @@ # extends Node +signal settings_changed() + # Each setting contains a dictionary with the following keys: # "type": The type of the setting. Can be "toggle", "line", "range", "dropdown", or "dropdown_preset" # "value": The value of the setting. When using "dropdown", this contains an int @@ -37,6 +39,8 @@ var languages := [tr("System default"), "en", "de"] var default_settings := { "language": DropdownSetting.new(tr("Language"), 0, languages), + "aa": DropdownSetting.new(tr("Anti-aliasing"), 2, [tr("Disabled"), "FXAA", "MSAA 2x", "MSAA 4x"]), + "taa": ToggleSetting.new(tr("Temporal Anti-Aliasing"), false), "fullscreen": ToggleSetting.new(tr("Fullscreen"), false), "touch_controls": ToggleSetting.new(tr("Enable touch screen conrols"), DisplayServer.is_touchscreen_available()), "interpolate_camera_rotation": ToggleSetting.new(tr("Interpolate the camera rotation"), true), @@ -55,14 +59,13 @@ var settings: Dictionary var server_url = "" var error_message = "" -func _init(): - profile = load_dict("user://profile", default_profile) - load_settings("user://settings") - update_fullscreen() - update_language() - var focused_node: Control + func _ready(): + profile = load_dict("user://profile", default_profile) + load_settings("user://settings") + apply_settings() + get_viewport().gui_focus_changed.connect(Sound.play_hover_maybe) get_viewport().gui_focus_changed.connect(func (node): focused_node = node) @@ -72,6 +75,34 @@ func _input(_event): save_settings() update_fullscreen() +func apply_settings(): + update_fullscreen() + update_language() + + # Anti-aliasing + match get_setting("aa"): + 0: + get_viewport().msaa_2d = Viewport.MSAA_DISABLED + get_viewport().msaa_3d = Viewport.MSAA_DISABLED + get_viewport().screen_space_aa = Viewport.SCREEN_SPACE_AA_DISABLED + 1: + get_viewport().msaa_2d = Viewport.MSAA_DISABLED + get_viewport().msaa_3d = Viewport.MSAA_DISABLED + get_viewport().screen_space_aa = Viewport.SCREEN_SPACE_AA_FXAA + 2: + get_viewport().msaa_2d = Viewport.MSAA_2X + get_viewport().msaa_3d = Viewport.MSAA_2X + get_viewport().screen_space_aa = Viewport.SCREEN_SPACE_AA_DISABLED + 3: + get_viewport().msaa_2d = Viewport.MSAA_4X + get_viewport().msaa_3d = Viewport.MSAA_4X + get_viewport().screen_space_aa = Viewport.SCREEN_SPACE_AA_DISABLED + + # Temporal Anti-aliasing + get_viewport().use_taa = get_setting("taa") + + emit_signal("settings_changed") + func update_language(): var lang_idx: int = get_setting("language") var lang = languages[lang_idx] @@ -84,7 +115,7 @@ func update_language(): func update_fullscreen(): if get_setting("fullscreen"): DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) - else: + elif DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) func save_profile(): |