From fa0e6f29282a9c07f67c6b901cbf6f98e618b259 Mon Sep 17 00:00:00 2001 From: anyreso Date: Fri, 26 Apr 2024 13:43:15 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20update=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entities/player/player.gd | 7 +- interfaces/hud/hud.tscn | 5 +- interfaces/menus/boot/boot.tscn | 1346 +++++++++++++++++++++++++------ main.tscn | 9 +- project.godot | 2 +- systems/settings.gd | 76 +- 6 files changed, 1176 insertions(+), 269 deletions(-) diff --git a/entities/player/player.gd b/entities/player/player.gd index fcf9ad4..f6935cb 100644 --- a/entities/player/player.gd +++ b/entities/player/player.gd @@ -53,7 +53,6 @@ enum PlayerState { PLAYER_ALIVE, PLAYER_DEAD } @onready var spring_arm_height : float = $Smoothing/SpringArm3D.position.y @onready var _original_weapon_transform : Transform3D = weapon.transform @onready var tp_player : Vanguard = $Smoothing/ThirdPerson/PlayerMesh -@onready var _game_settings : Settings = get_node("/root/GlobalSettings") signal died(player : Player, killer_id : int) signal energy_changed(energy : float) @@ -77,12 +76,12 @@ func _ready() -> void: input.jumped.connect(_jump) input.throwed_flag.connect(_throw_flag) - input.MOUSE_SENSITIVITY = _game_settings.mouse_sensitivity - input.inverted_y_axis = _game_settings.inverted_y_axis + input.MOUSE_SENSITIVITY = Settings.get_value("controls", "mouse_sensitivity") + input.inverted_y_axis = Settings.get_value("controls", "inverted_y_axis") if _is_pawn(): camera.current = true - camera.fov = _game_settings.fov + camera.fov = Settings.get_value("video", "fov") # set the spring arm translation to be about head height level $Smoothing/SpringArm3D.transform = Transform3D().translated(Vector3(0, collision_shape.shape.height / 2, 0) * 0.9) diff --git a/interfaces/hud/hud.tscn b/interfaces/hud/hud.tscn index 55bda85..7afee44 100644 --- a/interfaces/hud/hud.tscn +++ b/interfaces/hud/hud.tscn @@ -40,9 +40,12 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta : float) -> void: text = \"\" - text += \"fps: %s\\n\" % str(Engine.get_frames_per_second()) + text += \"fps: %d (%.2f mspf)\\n\" % [Engine.get_frames_per_second(), 1000.0 / Engine.get_frames_per_second()] text += \"position: %d, %d, %d\\n\" % [player.position.x, player.position.y, player.position.z] text += \"speed: %d km/h\\n\" % (player.linear_velocity.length() * 3.6) + var viewport_render_size : Vector2i = get_viewport().size * get_viewport().scaling_3d_scale + text += \"3D viewport resolution: %d × %d (%d%%)\\n\" \\ + % [viewport_render_size.x, viewport_render_size.y, round(get_viewport().scaling_3d_scale * 100)] " [sub_resource type="Shader" id="Shader_gaah5"] diff --git a/interfaces/menus/boot/boot.tscn b/interfaces/menus/boot/boot.tscn index 66fb986..2705332 100644 --- a/interfaces/menus/boot/boot.tscn +++ b/interfaces/menus/boot/boot.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://bjctlqvs33nqy"] +[gd_scene load_steps=8 format=3 uid="uid://bjctlqvs33nqy"] [ext_resource type="Texture2D" uid="uid://c1tjamjm8qjog" path="res://interfaces/menus/boot/background.webp" id="1_ph586"] @@ -12,24 +12,26 @@ func _on_demo_pressed() -> void: start_demo.emit() func _on_multiplayer_pressed() -> void: - _show_menu($Multiplayer) - + %MultiplayerPanelContainer.hide() + %MultiplayerPanelContainer.tab_container.current_tab = 0 + %SettingsPanelContainer.hide() + %MainPanelContainer.hide() + %MultiplayerPanelContainer.show() + func _on_settings_pressed() -> void: - _show_menu($Settings) - + %MultiplayerPanelContainer.hide() + %MultiplayerPanelContainer.tab_container.current_tab = 0 + %SettingsPanelContainer.show() + %MainPanelContainer.hide() + func _on_quit_pressed() -> void: get_tree().quit() func _on_main_menu_pressed() -> void: - _show_menu($Main) - -func _show_menu(menu : PanelContainer) -> void: - $Multiplayer.hide() - $Multiplayer.tab_container.current_tab = 0 - $Settings.hide() - $Settings.tab_container.current_tab = 0 - $Main.hide() - menu.show() + %MultiplayerPanelContainer.hide() + %MultiplayerPanelContainer.tab_container.current_tab = 0 + %SettingsPanelContainer.hide() + %MainPanelContainer.show() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krqeq"] @@ -51,7 +53,7 @@ signal join_server(host : String, port : int) @onready var modal : Control = $Modal @onready var menu : CanvasLayer = get_parent() -@onready var game : Node3D = get_tree().current_scene +@onready var game : Node3D = get_tree().current_scene.get_node(\"/root/Game\") @onready var map_selector : OptionButton = %MapSelector @export var tab_container : TabContainer @@ -120,32 +122,455 @@ func _on_connection_failed() -> void: $Modal.hide() " -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ky5sv"] -bg_color = Color(0.5, 0.5, 0.5, 0.25) - [sub_resource type="GDScript" id="GDScript_gbnwv"] resource_name = "Settings" script/source = "extends PanelContainer const WINDOW_MODE_OPTIONS = [DisplayServer.WINDOW_MODE_WINDOWED, DisplayServer.WINDOW_MODE_FULLSCREEN] -@onready var _game_settings : Settings = get_node(\"/root/GlobalSettings\") - -@export var tab_container : TabContainer - func _ready() -> void: - %FOVSpinBox.value = _game_settings.fov - %SensitivitySpinBox.value = _game_settings.mouse_sensitivity - var window_mode : int = 1 if _game_settings.fullscreen else 0 - %InvertedYCheckbox.button_pressed = _game_settings.inverted_y_axis - %WindowModeOptionButton.select(window_mode) + print(Settings) + # video settings + %UIScaleOptionButton.selected = Settings.get_value(\"ui\", \"scale\") + %QualitySlider.value = Settings.get_value(\"video\", \"quality\") + %FilterOptionButton.selected = Settings.get_value(\"video\", \"filter\") + %FSRSharpnessSlider.value = Settings.get_value(\"video\", \"fsr_sharpness\") + %WindowModeOptionButton.selected = Settings.get_value(\"video\", \"window_mode\") + %VsyncOptionButton.selected = Settings.get_value(\"video\", \"vsync\") + %TAAOptionButton.selected = Settings.get_value(\"video\", \"taa\") + %MSAAOptionButton.selected = Settings.get_value(\"video\", \"msaa\") + %FXAAOptionButton.selected = Settings.get_value(\"video\", \"fxaa\") + %FOVSlider.value = Settings.get_value(\"video\", \"fov\") + + # quality settings + %ShadowSizeOptionButton.selected = Settings.get_value(\"quality\", \"shadow_size\") + %ShadowFilterOptionButton.selected = Settings.get_value(\"quality\", \"shadow_filter\") + %MeshLODOptionButton.selected = Settings.get_value(\"quality\", \"mesh_lod\") + + # environment settings + # @NOTE: disabled for now as not adapted to our env management + #%SDFGIOptionButton.selected = Settings.get_value(\"environment\", \"sdfgi\") + #%GlowOptionButton.selected = Settings.get_value(\"environment\", \"glow\") + #%SSAOOptionButton.selected = Settings.get_value(\"environment\", \"saoo\") + #%SSReflectionsOptionButton.selected = Settings.get_value(\"environment\", \"ssr\") + #%SSILOptionButton.selected = Settings.get_value(\"environment\", \"ssil\") + #%VolumetricFogOptionButton.selected = Settings.get_value(\"environment\", \"volumetric_fog\") + + # adjustments settings + %SensitivitySpinBox.value = Settings.get_value(\"controls\", \"mouse_sensitivity\") + %InvertedYCheckbox.button_pressed = Settings.get_value(\"controls\", \"inverted_y_axis\") -func _on_save_pressed() -> void: - _game_settings.fov = %FOVSpinBox.value - _game_settings.mouse_sensitivity = %SensitivitySpinBox.value - _game_settings.inverted_y_axis = %InvertedYCheckbox.button_pressed - _game_settings.fullscreen = %WindowModeOptionButton.selected == 1 - _game_settings.save_to_file() + +func _on_ui_scale_option_button_item_selected(index: int) -> void: + Settings.set_value(\"ui\", \"scale\", clamp(index, 0, 2)) + # When the screen changes size, we need to update the 3D + # viewport quality setting. If we don't do this, the viewport will take + # the size from the main viewport. + var new_size := Vector2( + ProjectSettings.get_setting(&\"display/window/size/viewport_width\"), + ProjectSettings.get_setting(&\"display/window/size/viewport_height\") + ) + # compute new size + if index == 0: # Smaller (66%) + new_size *= 1.5 + elif index == 1: # Small (80%) + new_size *= 1.25 + elif index == 2: # Medium (100%) (default) + new_size *= 1. + elif index == 3: # Large (133%) + new_size *= .75 + elif index == 4: # Larger (200%) + new_size *= .5 + # update scale + get_tree().root.set_content_scale_size(new_size) + + +func _on_quality_slider_value_changed(value: float) -> void: + Settings.set_value(\"video\", \"quality\", value) + get_viewport().scaling_3d_scale = value + + +func _on_filter_option_button_item_selected(index: int) -> void: + Settings.set_value(\"video\", \"filter\", index) + # Viewport scale mode setting. + if index == 0: # Bilinear (Fastest) + get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_BILINEAR + # FSR Sharpness is only effective when the scaling mode is FSR 1.0. + %FSRSharpnessLabel.visible = false + %FSRSharpnessSlider.visible = false + elif index == 1: # FSR 1.0 (Fast) + get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_FSR + # FSR Sharpness is only effective when the scaling mode is FSR 1.0. + %FSRSharpnessLabel.visible = true + %FSRSharpnessSlider.visible = true + + +func _on_window_mode_option_button_item_selected(index : int) -> void: + Settings.set_value(\"video\", \"window_mode\", clamp(index, 0, 2)) + if index == 0: # Windowed (default) + get_tree().root.set_mode(Window.MODE_WINDOWED) + elif index == 1: # Fullscreen + get_tree().root.set_mode(Window.MODE_FULLSCREEN) + elif index == 2: # Exclusive Fullscreen + get_tree().root.set_mode(Window.MODE_EXCLUSIVE_FULLSCREEN) + + +func _on_fsr_sharpness_slider_value_changed(value: float) -> void: + Settings.set_value(\"video\", \"fsr_sharpness\", value) + # Lower FSR sharpness values result in a sharper image. + # Invert the slider so that higher values result in a sharper image, + # which is generally expected from users. + get_viewport().fsr_sharpness = 2.0 - value + + +func _on_vsync_option_button_item_selected(index: int) -> void: + Settings.set_value(\"video\", \"vsync\", index) + # Vsync is enabled by default. + # Vertical synchronization locks framerate and makes screen tearing not visible at the cost of + # higher input latency and stuttering when the framerate target is not met. + # Adaptive V-Sync automatically disables V-Sync when the framerate target is not met, and enables + # V-Sync otherwise. This prevents suttering and reduces input latency when the framerate target + # is not met, at the cost of visible tearing. + if index == 0: # Disabled (default) + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) + elif index == 1: # Adaptive + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ADAPTIVE) + elif index == 2: # Enabled + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED) + + +func _on_taa_option_button_item_selected(index: int) -> void: + Settings.set_value(\"video\", \"taa\", index) + # Temporal antialiasing. Smooths out everything including specular aliasing, but can introduce + # ghosting artifacts and blurring in motion. Moderate performance cost. + get_viewport().use_taa = index == 1 + +func _on_msaa_option_button_item_selected(index: int) -> void: + Settings.set_value(\"video\", \"msaa\", index) + # Multi-sample anti-aliasing. High quality, but slow. It also does not smooth out the edges of + # transparent (alpha scissor) textures. + if index == 0: # Disabled (default) + get_viewport().msaa_3d = Viewport.MSAA_DISABLED + elif index == 1: # 2× + get_viewport().msaa_3d = Viewport.MSAA_2X + elif index == 2: # 4× + get_viewport().msaa_3d = Viewport.MSAA_4X + elif index == 3: # 8× + get_viewport().msaa_3d = Viewport.MSAA_8X + + +func _on_fxaa_option_button_item_selected(index: int) -> void: + Settings.set_value(\"video\", \"fxaa\", index) + # Fast approximate anti-aliasing. Much faster than MSAA (and works on alpha scissor edges), + # but blurs the whole scene rendering slightly. + get_viewport().screen_space_aa = int(index == 1) as Viewport.ScreenSpaceAA + +func _on_fov_slider_value_changed(value: float) -> void: + Settings.set_value(\"video\", \"fov\", value) + +# Quality settings. + +func _on_shadow_size_option_button_item_selected(index : int) -> void: + Settings.set_value(\"quality\", \"shadow_size\", index) + if index == 0: # Minimum + RenderingServer.directional_shadow_atlas_set_size(512, true) + # Adjust shadow bias according to shadow resolution. + # Higher resultions can use a lower bias without suffering from shadow acne. + Settings.set_value(\"quality\", \"shadow_bias\", 0.06) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + + # Disable positional (omni/spot) light shadows entirely to further improve performance. + # These often don't contribute as much to a scene compared to directional light shadows. + get_viewport().positional_shadow_atlas_size = 0 + if index == 1: # Very Low + RenderingServer.directional_shadow_atlas_set_size(1024, true) + Settings.set_value(\"quality\", \"shadow_bias\", 0.04) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + get_viewport().positional_shadow_atlas_size = 1024 + if index == 2: # Low + RenderingServer.directional_shadow_atlas_set_size(2048, true) + Settings.set_value(\"quality\", \"shadow_bias\", 0.03) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + get_viewport().positional_shadow_atlas_size = 2048 + if index == 3: # Medium (default) + RenderingServer.directional_shadow_atlas_set_size(4096, true) + Settings.set_value(\"quality\", \"shadow_bias\", 0.02) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + get_viewport().positional_shadow_atlas_size = 4096 + if index == 4: # High + RenderingServer.directional_shadow_atlas_set_size(8192, true) + Settings.set_value(\"quality\", \"shadow_bias\", 0.01) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + get_viewport().positional_shadow_atlas_size = 8192 + if index == 5: # Ultra + RenderingServer.directional_shadow_atlas_set_size(16384, true) + Settings.set_value(\"quality\", \"shadow_bias\", 0.005) + #directional_light.shadow_bias = Settings.get_value(\"quality\", \"shadow_bias\") + get_viewport().positional_shadow_atlas_size = 16384 + +func _on_shadow_filter_option_button_item_selected(index : int) -> void: + Settings.set_value(\"quality\", \"shadow_filter\", index) + if index == 0: # Very Low + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_HARD) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_HARD) + if index == 1: # Low + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_VERY_LOW) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_VERY_LOW) + if index == 2: # Medium (default) + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_LOW) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_LOW) + if index == 3: # High + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_MEDIUM) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_MEDIUM) + if index == 4: # Very High + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_HIGH) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_HIGH) + if index == 5: # Ultra + RenderingServer.directional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_ULTRA) + RenderingServer.positional_soft_shadow_filter_set_quality(RenderingServer.SHADOW_QUALITY_SOFT_ULTRA) + +func _on_mesh_lod_option_button_item_selected(index : int) -> void: + Settings.set_value(\"quality\", \"mesh_lod\", index) + if index == 0: # Very Low + get_viewport().mesh_lod_threshold = 8.0 + if index == 0: # Low + get_viewport().mesh_lod_threshold = 4.0 + if index == 1: # Medium + get_viewport().mesh_lod_threshold = 2.0 + if index == 2: # High (default) + get_viewport().mesh_lod_threshold = 1.0 + if index == 3: # Ultra + # Always use highest LODs to avoid any form of pop-in. + get_viewport().mesh_lod_threshold = 0.0 + +# Effect settings. + +#func _on_ss_reflections_option_button_item_selected(index: int) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + #if index == 0: # Disabled (default) + #world_environment.environment.set_ssr_enabled(false) + #elif index == 1: # Low + #world_environment.environment.set_ssr_enabled(true) + #world_environment.environment.set_ssr_max_steps(8) + #elif index == 2: # Medium + #world_environment.environment.set_ssr_enabled(true) + #world_environment.environment.set_ssr_max_steps(32) + #elif index == 3: # High + #world_environment.environment.set_ssr_enabled(true) + #world_environment.environment.set_ssr_max_steps(56) + + +#func _on_ssao_option_button_item_selected(index: int) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + #if index == 0: # Disabled (default) + #world_environment.environment.ssao_enabled = false + #if index == 1: # Very Low + #world_environment.environment.ssao_enabled = true + #RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300) + #if index == 2: # Low + #world_environment.environment.ssao_enabled = true + #RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300) + #if index == 3: # Medium + #world_environment.environment.ssao_enabled = true + #RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_MEDIUM, true, 0.5, 2, 50, 300) + #if index == 4: # High + #world_environment.environment.ssao_enabled = true + #RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_HIGH, true, 0.5, 2, 50, 300) +# + +#func _on_ssil_option_button_item_selected(index: int) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + #if index == 0: # Disabled (default) + #world_environment.environment.ssil_enabled = false + #if index == 1: # Very Low + #world_environment.environment.ssil_enabled = true + #RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_VERY_LOW, true, 0.5, 4, 50, 300) + #if index == 2: # Low + #world_environment.environment.ssil_enabled = true + #RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_LOW, true, 0.5, 4, 50, 300) + #if index == 3: # Medium + #world_environment.environment.ssil_enabled = true + #RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_MEDIUM, true, 0.5, 4, 50, 300) + #if index == 4: # High + #world_environment.environment.ssil_enabled = true + #RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_HIGH, true, 0.5, 4, 50, 300) + + +#func _on_sdfgi_option_button_item_selected(index: int) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + #if index == 0: # Disabled (default) + #world_environment.environment.sdfgi_enabled = false + #if index == 1: # Low + #world_environment.environment.sdfgi_enabled = true + #RenderingServer.gi_set_use_half_resolution(true) + #if index == 2: # High + #world_environment.environment.sdfgi_enabled = true + #RenderingServer.gi_set_use_half_resolution(false) + +# +#func _on_glow_option_button_item_selected(index: int) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + #if index == 0: # Disabled (default) + #world_environment.environment.glow_enabled = false + #if index == 1: # Low + #world_environment.environment.glow_enabled = true + #if index == 2: # High + #world_environment.environment.glow_enabled = true +# +# +#func _on_volumetric_fog_option_button_item_selected(index: int) -> void: + #if index == 0: # Disabled (default) + #world_environment.environment.volumetric_fog_enabled = false + #if index == 1: # Low + #world_environment.environment.volumetric_fog_enabled = true + #RenderingServer.environment_set_volumetric_fog_filter_active(false) + #if index == 2: # High + #world_environment.environment.volumetric_fog_enabled = true + #RenderingServer.environment_set_volumetric_fog_filter_active(true) + +# Adjustment settings. + +#func _on_brightness_slider_value_changed(value: float) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + ## The slider value is clamped between 0.5 and 4. + #world_environment.environment.set_adjustment_brightness(value) +# +# +#func _on_contrast_slider_value_changed(value: float) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + ## The slider value is clamped between 0.5 and 4. + #world_environment.environment.set_adjustment_contrast(value) +# +# +#func _on_saturation_slider_value_changed(value: float) -> void: + ## This is a setting that is attached to the environment. + ## If your game requires you to change the environment, + ## then be sure to run this function again to make the setting effective. + ## The slider value is clamped between 0.5 and 10. + #world_environment.environment.set_adjustment_saturation(value) + +# Quality presets. + +func _on_very_low_preset_pressed() -> void: + %TAAOptionButton.selected = 0 + %MSAAOptionButton.selected = 0 + %FXAAOptionButton.selected = 0 + %ShadowSizeOptionButton.selected = 0 + %ShadowFilterOptionButton.selected = 0 + %MeshLODOptionButton.selected = 0 + %SDFGIOptionButton.selected = 0 + %GlowOptionButton.selected = 0 + %SSAOOptionButton.selected = 0 + %SSReflectionsOptionButton.selected = 0 + %SSILOptionButton.selected = 0 + %VolumetricFogOptionButton.selected = 0 + update_preset() + +func _on_low_preset_pressed() -> void: + %TAAOptionButton.selected = 0 + %MSAAOptionButton.selected = 0 + %FXAAOptionButton.selected = 1 + %ShadowSizeOptionButton.selected = 1 + %ShadowFilterOptionButton.selected = 1 + %MeshLODOptionButton.selected = 1 + %SDFGIOptionButton.selected = 0 + %GlowOptionButton.selected = 0 + %SSAOOptionButton.selected = 0 + %SSReflectionsOptionButton.selected = 0 + %SSILOptionButton.selected = 0 + %VolumetricFogOptionButton.selected = 0 + update_preset() + + +func _on_medium_preset_pressed() -> void: + %TAAOptionButton.selected = 1 + %MSAAOptionButton.selected = 0 + %FXAAOptionButton.selected = 0 + %ShadowSizeOptionButton.selected = 2 + %ShadowFilterOptionButton.selected = 2 + %MeshLODOptionButton.selected = 1 + %SDFGIOptionButton.selected = 1 + %GlowOptionButton.selected = 1 + %SSAOOptionButton.selected = 1 + %SSReflectionsOptionButton.selected = 1 + %SSILOptionButton.selected = 0 + %VolumetricFogOptionButton.selected = 1 + update_preset() + + +func _on_high_preset_pressed() -> void: + %TAAOptionButton.selected = 1 + %MSAAOptionButton.selected = 0 + %FXAAOptionButton.selected = 0 + %ShadowSizeOptionButton.selected = 3 + %ShadowFilterOptionButton.selected = 3 + %MeshLODOptionButton.selected = 2 + %SDFGIOptionButton.selected = 1 + %GlowOptionButton.selected = 2 + %SSAOOptionButton.selected = 2 + %SSReflectionsOptionButton.selected = 2 + %SSILOptionButton.selected = 2 + %VolumetricFogOptionButton.selected = 2 + update_preset() + + +func _on_ultra_preset_pressed() -> void: + %TAAOptionButton.selected = 1 + %MSAAOptionButton.selected = 1 + %FXAAOptionButton.selected = 0 + %ShadowSizeOptionButton.selected = 4 + %ShadowFilterOptionButton.selected = 4 + %MeshLODOptionButton.selected = 3 + %SDFGIOptionButton.selected = 2 + %GlowOptionButton.selected = 2 + %SSAOOptionButton.selected = 3 + %SSReflectionsOptionButton.selected = 3 + %SSILOptionButton.selected = 3 + %VolumetricFogOptionButton.selected = 2 + update_preset() + + +func update_preset() -> void: + # Simulate options being manually selected to run their respective update code. + %TAAOptionButton.item_selected.emit(%TAAOptionButton.selected) + %MSAAOptionButton.item_selected.emit(%MSAAOptionButton.selected) + %FXAAOptionButton.item_selected.emit(%FXAAOptionButton.selected) + %ShadowSizeOptionButton.item_selected.emit(%ShadowSizeOptionButton.selected) + %ShadowFilterOptionButton.item_selected.emit(%ShadowFilterOptionButton.selected) + %MeshLODOptionButton.item_selected.emit(%MeshLODOptionButton.selected) + %SDFGIOptionButton.item_selected.emit(%SDFGIOptionButton.selected) + %GlowOptionButton.item_selected.emit(%GlowOptionButton.selected) + %SSAOOptionButton.item_selected.emit(%SSAOOptionButton.selected) + %SSReflectionsOptionButton.item_selected.emit(%SSReflectionsOptionButton.selected) + %SSILOptionButton.item_selected.emit(%SSILOptionButton.selected) + %VolumetricFogOptionButton.item_selected.emit(%VolumetricFogOptionButton.selected) + + +func _on_apply_pressed() -> void: + Settings.apply() + + +func _on_reset_pressed() -> void: + Settings.reset() + + +func _on_close_pressed() -> void: + self.hide() + %MainPanelContainer.show() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c4ymk"] @@ -167,7 +592,8 @@ mouse_filter = 2 texture = ExtResource("1_ph586") stretch_mode = 6 -[node name="Multiplayer" type="PanelContainer" parent="." node_paths=PackedStringArray("tab_container")] +[node name="MultiplayerPanelContainer" type="PanelContainer" parent="." node_paths=PackedStringArray("tab_container")] +unique_name_in_owner = true visible = false anchors_preset = 15 anchor_right = 1.0 @@ -178,26 +604,26 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_krqeq") script = SubResource("GDScript_tc1bm") tab_container = NodePath("MarginContainer/VBoxContainer/TabContainer") -[node name="MarginContainer" type="MarginContainer" parent="Multiplayer"] +[node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer"] layout_mode = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="VBoxContainer" type="VBoxContainer" parent="Multiplayer/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer"] layout_mode = 2 -[node name="TabContainer" type="TabContainer" parent="Multiplayer/MarginContainer/VBoxContainer"] +[node name="TabContainer" type="TabContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 theme_override_constants/side_margin = 0 -[node name="Profile" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] +[node name="Profile" type="TabBar" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] layout_mode = 2 theme_override_constants/h_separation = 0 -[node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile"] +[node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile"] layout_mode = 0 offset_right = 1116.0 offset_bottom = 577.0 @@ -206,16 +632,16 @@ theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 20 -[node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] +[node name="LeftBox" type="Control" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] +[node name="Top" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 @@ -224,21 +650,21 @@ grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Create" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] +[node name="Create" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 disabled = true text = "Create" -[node name="Delete" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] +[node name="Delete" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 disabled = true text = "Delete" -[node name="Save" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] +[node name="Save" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Save" -[node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] +[node name="Bottom" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 @@ -249,37 +675,37 @@ grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 -[node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="MainMenu" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " -[node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="Quit" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" -[node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] +[node name="RightBox" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] +[node name="Label" type="Label" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] layout_mode = 2 text = "Current Profile:" -[node name="ProfileName" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] +[node name="ProfileName" type="LineEdit" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Newblood" -[node name="Join" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] +[node name="Join" type="TabBar" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true -[node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join"] +[node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -291,16 +717,16 @@ theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 -[node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] +[node name="LeftBox" type="Control" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] +[node name="Top" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 @@ -309,11 +735,11 @@ grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Join" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top"] +[node name="Join" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Join" -[node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] +[node name="Bottom" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 @@ -324,32 +750,32 @@ grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 -[node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="MainMenu" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " -[node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="Quit" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" -[node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] +[node name="RightBox" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="JoinAddress" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/RightBox"] +[node name="JoinAddress" type="LineEdit" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 placeholder_text = "localhost" -[node name="Host" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] +[node name="Host" type="TabBar" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true -[node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host"] +[node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -361,16 +787,16 @@ theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 -[node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] +[node name="LeftBox" type="Control" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] +[node name="Top" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 @@ -379,11 +805,11 @@ grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 -[node name="Host" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top"] +[node name="Host" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Host" -[node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] +[node name="Bottom" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 @@ -394,37 +820,37 @@ grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 -[node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="MainMenu" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " -[node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] +[node name="Quit" type="Button" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" -[node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] +[node name="RightBox" type="VBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="ServerPort" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] +[node name="ServerPort" type="LineEdit" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 placeholder_text = "9000" -[node name="MapSelector" type="OptionButton" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] +[node name="MapSelector" type="OptionButton" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 clip_text = true allow_reselect = true -[node name="Modal" type="Panel" parent="Multiplayer"] +[node name="Modal" type="Panel" parent="MultiplayerPanelContainer"] visible = false layout_mode = 2 -[node name="Label" type="Label" parent="Multiplayer/Modal"] +[node name="Label" type="Label" parent="MultiplayerPanelContainer/Modal"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -439,178 +865,626 @@ grow_horizontal = 2 grow_vertical = 2 text = "CONNECTING..." -[node name="Settings" type="PanelContainer" parent="." node_paths=PackedStringArray("tab_container")] +[node name="SettingsPanelContainer" type="PanelContainer" parent="."] +unique_name_in_owner = true visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_ky5sv") +size_flags_horizontal = 3 script = SubResource("GDScript_gbnwv") -tab_container = NodePath("MarginContainer/VBoxContainer/TabContainer") -[node name="MarginContainer" type="MarginContainer" parent="Settings"] -layout_mode = 2 -theme_override_constants/margin_left = 20 -theme_override_constants/margin_top = 20 -theme_override_constants/margin_right = 20 -theme_override_constants/margin_bottom = 20 - -[node name="VBoxContainer" type="VBoxContainer" parent="Settings/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="SettingsPanelContainer"] layout_mode = 2 -[node name="TabContainer" type="TabContainer" parent="Settings/MarginContainer/VBoxContainer"] +[node name="ScrollContainer" type="ScrollContainer" parent="SettingsPanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(480, 0) layout_mode = 2 size_flags_vertical = 3 -theme_override_constants/side_margin = 0 -[node name="Gameplay" type="TabBar" parent="Settings/MarginContainer/VBoxContainer/TabContainer"] +[node name="MarginContainer" type="MarginContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer"] layout_mode = 2 -theme_override_constants/h_separation = 0 - -[node name="MarginContainer" type="MarginContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_left = 20 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 15 theme_override_constants/margin_top = 20 -theme_override_constants/margin_right = 20 +theme_override_constants/margin_right = 15 theme_override_constants/margin_bottom = 20 -[node name="GridContainer" type="GridContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 10 + +[node name="PresetSection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.682353, 0.917647, 1, 1) +text = "Presets" +horizontal_alignment = 1 + +[node name="Presets" type="HBoxContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="VeryLowPreset" type="Button" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Very Low" + +[node name="LowPreset" type="Button" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Low" + +[node name="MediumPreset" type="Button" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Medium" + +[node name="HighPreset" type="Button" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "High" + +[node name="UltraPreset" type="Button" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Ultra" + +[node name="HSeparator" type="HSeparator" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="UISection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "User Interface Settings" +horizontal_alignment = 1 + +[node name="UIGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 2 + +[node name="UIScaleLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "UI Scale:" + +[node name="UIScaleOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 5 +selected = 2 +popup/item_0/text = "Smaller (66%)" +popup/item_0/id = 0 +popup/item_1/text = "Small (80%)" +popup/item_1/id = 1 +popup/item_2/text = "Medium (100%)" +popup/item_2/id = 2 +popup/item_3/text = "Large (133%)" +popup/item_3/id = 3 +popup/item_4/text = "Larger (200%)" +popup/item_4/id = 4 + +[node name="ViewportSection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "Video Settings" +horizontal_alignment = 1 + +[node name="ViewportGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] layout_mode = 2 columns = 2 -[node name="FOVLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] +[node name="QualityLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 -text = "Field of view" +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Resolution Scale:" -[node name="FOVSpinBox" type="SpinBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] +[node name="QualitySlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] unique_name_in_owner = true layout_mode = 2 -min_value = 60.0 -max_value = 120.0 -value = 60.0 - -[node name="SensitivityLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] -layout_mode = 2 -text = "Mouse sensitivity" - -[node name="SensitivitySpinBox" type="SpinBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] -unique_name_in_owner = true -layout_mode = 2 -max_value = 1.0 -step = 0.01 +size_flags_horizontal = 3 +size_flags_vertical = 1 +min_value = 0.25 +max_value = 2.0 +step = 0.05 value = 1.0 -[node name="InvertedYLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] +[node name="FilterLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 -text = "Inverted Y" +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Display Filter:" -[node name="InvertedYCheckbox" type="CheckBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] +[node name="FilterOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] unique_name_in_owner = true layout_mode = 2 - -[node name="Buttons" type="HBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer"] -layout_mode = 2 -size_flags_vertical = 8 - -[node name="Bottom" type="VBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons"] -layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.2 - -[node name="Save" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] -layout_mode = 2 -text = "Save -" - -[node name="MainMenu" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Main Menu -" - -[node name="Quit" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "Quit" - -[node name="Spacer" type="Control" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.8 - -[node name="Graphics" type="TabBar" parent="Settings/MarginContainer/VBoxContainer/TabContainer"] -visible = false -layout_mode = 2 -select_with_rmb = true - -[node name="MarginContainer" type="MarginContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_left = 20 -theme_override_constants/margin_top = 20 -theme_override_constants/margin_right = 20 -theme_override_constants/margin_bottom = 20 - -[node name="GridContainer" type="GridContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer"] -layout_mode = 2 -columns = 2 - -[node name="WindowModeLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/GridContainer"] -layout_mode = 2 -text = "Window mode" - -[node name="WindowModeOptionButton" type="OptionButton" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/GridContainer"] -unique_name_in_owner = true -layout_mode = 2 +theme_override_font_sizes/font_size = 16 item_count = 2 selected = 0 +popup/item_0/text = "Bilinear (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "FSR 1.0 (Fast)" +popup/item_1/id = 1 + +[node name="FSRSharpnessLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "FSR Sharpness:" + +[node name="FSRSharpnessSlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 2.0 +step = 0.2 + +[node name="WindowModeLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Window Mode:" + +[node name="WindowModeOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 3 +selected = 2 popup/item_0/text = "Windowed" popup/item_0/id = 0 popup/item_1/text = "Fullscreen" popup/item_1/id = 1 +popup/item_2/text = "Exclusive Fullscreen" +popup/item_2/id = 2 -[node name="Buttons" type="HBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer"] -layout_mode = 2 -size_flags_vertical = 8 - -[node name="Bottom" type="VBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons"] +[node name="VsyncLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.2 +theme_override_font_sizes/font_size = 16 +text = "V-Sync:" -[node name="Save" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] +[node name="VsyncOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true layout_mode = 2 -text = "Save +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 3 +selected = 0 +popup/item_0/text = "Disabled" +popup/item_0/id = 0 +popup/item_1/text = "Adaptive" +popup/item_1/id = 1 +popup/item_2/text = "Enabled" +popup/item_2/id = 2 + +[node name="TAALabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Anti-Aliasing (TAA):" + +[node name="TAAOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 2 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Enabled (Average)" +popup/item_1/id = 1 + +[node name="MSAALabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Anti-Aliasing (MSAA):" + +[node name="MSAAOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 4 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "2× (Average)" +popup/item_1/id = 1 +popup/item_2/text = "4× (Slow)" +popup/item_2/id = 2 +popup/item_3/text = "8× (Slower)" +popup/item_3/id = 3 + +[node name="FXAALabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Anti-Aliasing (FXAA):" + +[node name="FXAAOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 2 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Enabled (Fast)" +popup/item_1/id = 1 + +[node name="FOVLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Field of View:" + +[node name="FOVSlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +min_value = 50.0 +value = 50.0 + +[node name="ControlsSection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "Controls Settings" +horizontal_alignment = 1 + +[node name="ControlsGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="SensitivityLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Mouse sensitivity" + +[node name="SensitivitySpinBox" type="SpinBox" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.01 +value = 1.0 + +[node name="InvertedYLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Inverted Y" + +[node name="InvertedYCheckbox" type="CheckBox" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="QualitySection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "Quality Settings" +horizontal_alignment = 1 + +[node name="QualityGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="ShadowSizeLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Shadow Resolution:" + +[node name="ShadowSizeOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 6 +selected = 3 +popup/item_0/text = "Minimum (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Very Low (Faster)" +popup/item_1/id = 1 +popup/item_2/text = "Low (Fast)" +popup/item_2/id = 2 +popup/item_3/text = "Medium (Average)" +popup/item_3/id = 3 +popup/item_4/text = "High (Slow)" +popup/item_4/id = 4 +popup/item_5/text = "Ultra (Slowest)" +popup/item_5/id = 5 + +[node name="ShadowFilterLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Shadow Filtering:" + +[node name="ShadowFilterOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 6 +selected = 2 +popup/item_0/text = "Very Low (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Low (Faster)" +popup/item_1/id = 1 +popup/item_2/text = "Medium (Fast)" +popup/item_2/id = 2 +popup/item_3/text = "High (Average)" +popup/item_3/id = 3 +popup/item_4/text = "Very High (Slow)" +popup/item_4/id = 4 +popup/item_5/text = "Ultra (Slower)" +popup/item_5/id = 5 + +[node name="MeshLODLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Model Quality:" + +[node name="MeshLODOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 4 +selected = 2 +popup/item_0/text = "Low (Faster)" +popup/item_0/id = 0 +popup/item_1/text = "Medium (Fast)" +popup/item_1/id = 1 +popup/item_2/text = "High (Average)" +popup/item_2/id = 2 +popup/item_3/text = "Ultra (Slow)" +popup/item_3/id = 3 + +[node name="EnvironmentSection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "Effect Settings" +horizontal_alignment = 1 + +[node name="EnvironmentGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +columns = 2 + +[node name="SDFGILabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Global Illumination:" + +[node name="SDFGIOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 3 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Low (Average)" +popup/item_1/id = 1 +popup/item_2/text = "High (Slow)" +popup/item_2/id = 2 + +[node name="GlowLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Bloom:" + +[node name="GlowOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 3 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Low (Fast)" +popup/item_1/id = 1 +popup/item_2/text = "High (Average)" +popup/item_2/id = 2 + +[node name="SSAOLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Ambient Occlusion:" + +[node name="SSAOOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 5 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Very Low (Fast)" +popup/item_1/id = 1 +popup/item_2/text = "Low (Fast)" +popup/item_2/id = 2 +popup/item_3/text = "Medium (Average)" +popup/item_3/id = 3 +popup/item_4/text = "High (Slow)" +popup/item_4/id = 4 + +[node name="SSReflectionsLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 14 +text = "Screen-Space Reflections:" + +[node name="SSReflectionsOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 4 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Low (Average)" +popup/item_1/id = 1 +popup/item_2/text = "Medium (Slow)" +popup/item_2/id = 2 +popup/item_3/text = "High (Slower)" +popup/item_3/id = 3 + +[node name="SSILLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Screen-Space Lighting:" + +[node name="SSILOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 5 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Very Low (Fast)" +popup/item_1/id = 1 +popup/item_2/text = "Low (Average)" +popup/item_2/id = 2 +popup/item_3/text = "Medium (Slow)" +popup/item_3/id = 3 +popup/item_4/text = "High (Slower)" +popup/item_4/id = 4 + +[node name="VolumetricFogLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Volumetric Fog:" + +[node name="VolumetricFogOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +item_count = 3 +selected = 0 +popup/item_0/text = "Disabled (Fastest)" +popup/item_0/id = 0 +popup/item_1/text = "Low (Fast)" +popup/item_1/id = 1 +popup/item_2/text = "High (Average)" +popup/item_2/id = 2 + +[node name="AdjustmentSection" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(0.683425, 0.916893, 1, 1) +text = "Adjustments" +horizontal_alignment = 1 + +[node name="AdjustmentsGridContainer" type="GridContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer"] +visible = false +layout_mode = 2 +columns = 2 + +[node name="BrightnessLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Brightness:" + +[node name="BrightnessSlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +min_value = 0.5 +max_value = 2.0 +step = 0.01 +value = 1.0 + +[node name="ContrastLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Contrast:" + +[node name="ContrastSlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +min_value = 0.5 +max_value = 2.0 +step = 0.01 +value = 1.0 + +[node name="SaturationLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_font_sizes/font_size = 16 +text = "Saturation:" + +[node name="SaturationSlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/AdjustmentsGridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +min_value = 0.01 +max_value = 2.0 +step = 0.01 +value = 1.0 + +[node name="MarginContainer" type="MarginContainer" parent="SettingsPanelContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 15 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 23 +theme_override_constants/margin_bottom = 15 + +[node name="Buttons" type="HBoxContainer" parent="SettingsPanelContainer/VBoxContainer/MarginContainer"] +layout_mode = 2 + +[node name="Apply" type="Button" parent="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Apply " -[node name="MainMenu" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] +[node name="Reset" type="Button" parent="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 -text = "Main Menu -" +text = "Reset" -[node name="Quit" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] +[node name="Close" type="Button" parent="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 -text = "Quit" +text = "Close" -[node name="Spacer" type="Control" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.8 - -[node name="Main" type="PanelContainer" parent="."] +[node name="MainPanelContainer" type="PanelContainer" parent="."] +unique_name_in_owner = true anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -619,70 +1493,84 @@ grow_vertical = 2 size_flags_horizontal = 0 theme_override_styles/panel = SubResource("StyleBoxFlat_c4ymk") -[node name="HBoxContainer" type="HBoxContainer" parent="Main"] +[node name="HBoxContainer" type="HBoxContainer" parent="MainPanelContainer"] layout_mode = 2 -[node name="PanelContainer" type="PanelContainer" parent="Main/HBoxContainer"] +[node name="PanelContainer" type="PanelContainer" parent="MainPanelContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.3 theme_override_styles/panel = SubResource("StyleBoxFlat_dq4me") -[node name="MarginContainer" type="MarginContainer" parent="Main/HBoxContainer/PanelContainer"] +[node name="MarginContainer" type="MarginContainer" parent="MainPanelContainer/HBoxContainer/PanelContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/margin_left = 20 theme_override_constants/margin_right = 20 -[node name="VBoxContainer" type="VBoxContainer" parent="Main/HBoxContainer/PanelContainer/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 alignment = 1 -[node name="Demo" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="Demo" type="Button" parent="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Demo" -[node name="Multiplayer" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="Multiplayer" type="Button" parent="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Multiplayer" -[node name="Settings" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="Settings" type="Button" parent="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Settings" -[node name="Quit" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="Quit" type="Button" parent="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Quit" -[node name="Control" type="Control" parent="Main/HBoxContainer"] +[node name="Control" type="Control" parent="MainPanelContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.8 +mouse_filter = 1 -[connection signal="join_server" from="Multiplayer" to="." method="_on_multiplayer_join_server"] -[connection signal="start_server" from="Multiplayer" to="." method="_on_multiplayer_start_server"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top/Save" to="Multiplayer" method="_on_save_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top/Join" to="Multiplayer" method="_on_join_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top/Host" to="Multiplayer" method="_on_host_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] -[connection signal="text_changed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" to="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" method="_on_text_changed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/Save" to="Settings" method="_on_save_pressed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/Quit" to="." method="_on_quit_pressed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/Save" to="Settings" method="_on_save_pressed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] -[connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/Quit" to="." method="_on_quit_pressed"] -[connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Demo" to="." method="_on_demo_pressed"] -[connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Multiplayer" to="." method="_on_multiplayer_pressed"] -[connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Settings" to="." method="_on_settings_pressed"] -[connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Quit" to="." method="_on_quit_pressed"] +[connection signal="join_server" from="MultiplayerPanelContainer" to="." method="_on_multiplayer_join_server"] +[connection signal="start_server" from="MultiplayerPanelContainer" to="." method="_on_multiplayer_start_server"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top/Save" to="MultiplayerPanelContainer" method="_on_save_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top/Join" to="MultiplayerPanelContainer" method="_on_join_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top/Host" to="MultiplayerPanelContainer" method="_on_host_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] +[connection signal="pressed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] +[connection signal="text_changed" from="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" to="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" method="_on_text_changed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/VeryLowPreset" to="SettingsPanelContainer" method="_on_very_low_preset_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/LowPreset" to="SettingsPanelContainer" method="_on_low_preset_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/MediumPreset" to="SettingsPanelContainer" method="_on_medium_preset_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/HighPreset" to="SettingsPanelContainer" method="_on_high_preset_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/Presets/UltraPreset" to="SettingsPanelContainer" method="_on_ultra_preset_pressed"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer/UIScaleOptionButton" to="SettingsPanelContainer" method="_on_ui_scale_option_button_item_selected"] +[connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualitySlider" to="SettingsPanelContainer" method="_on_quality_slider_value_changed"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FilterOptionButton" to="SettingsPanelContainer" method="_on_filter_option_button_item_selected"] +[connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FSRSharpnessSlider" to="SettingsPanelContainer" method="_on_fsr_sharpness_slider_value_changed"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/WindowModeOptionButton" to="SettingsPanelContainer" method="_on_window_mode_option_button_item_selected"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/VsyncOptionButton" to="SettingsPanelContainer" method="_on_vsync_option_button_item_selected"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/TAAOptionButton" to="SettingsPanelContainer" method="_on_taa_option_button_item_selected"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/MSAAOptionButton" to="SettingsPanelContainer" method="_on_msaa_option_button_item_selected"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FXAAOptionButton" to="SettingsPanelContainer" method="_on_fxaa_option_button_item_selected"] +[connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVSlider" to="SettingsPanelContainer" method="_on_fov_slider_value_changed"] +[connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/MeshLODOptionButton" to="SettingsPanelContainer" method="_on_mesh_lod_option_button_item_selected"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons/Apply" to="SettingsPanelContainer" method="_on_apply_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons/Reset" to="SettingsPanelContainer" method="_on_reset_pressed"] +[connection signal="pressed" from="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons/Close" to="SettingsPanelContainer" method="_on_close_pressed"] +[connection signal="pressed" from="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Demo" to="." method="_on_demo_pressed"] +[connection signal="pressed" from="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Multiplayer" to="." method="_on_multiplayer_pressed"] +[connection signal="pressed" from="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Settings" to="." method="_on_settings_pressed"] +[connection signal="pressed" from="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Quit" to="." method="_on_quit_pressed"] diff --git a/main.tscn b/main.tscn index b711f22..95844c6 100644 --- a/main.tscn +++ b/main.tscn @@ -33,9 +33,12 @@ var mode : Node: func _ready() -> void: $BootMenu.start_demo.connect(_start_demo) - $BootMenu/Multiplayer.start_server.connect(_start_server) - $BootMenu/Multiplayer.join_server.connect(_join_server) - + $BootMenu/MultiplayerPanelContainer.start_server.connect(_start_server) + $BootMenu/MultiplayerPanelContainer.join_server.connect(_join_server) + # do not set initial window mode for debug build + if not OS.is_debug_build(): + DisplayServer.window_set_mode(Settings.get_value(\"video\", \"window_mode\")) + func _unhandled_input(event : InputEvent) -> void: # escape key pressed if event.is_action_pressed(\"exit\"): diff --git a/project.godot b/project.godot index 4f4c5d0..7f9e400 100644 --- a/project.godot +++ b/project.godot @@ -17,7 +17,7 @@ config/icon="res://icon.svg" [autoload] -GlobalSettings="*res://systems/settings.gd" +Settings="*res://systems/settings.gd" [debug] diff --git a/systems/settings.gd b/systems/settings.gd index 65d8c9e..cfc68a6 100644 --- a/systems/settings.gd +++ b/systems/settings.gd @@ -1,37 +1,51 @@ -class_name Settings extends Node +extends Node -var _config_file : ConfigFile = ConfigFile.new() - -var fov : int = 90 -var mouse_sensitivity : float = 0.6 -var inverted_y_axis : bool = false -var fullscreen : bool = false - -const SETTINGS_FILE_PATH : String = "user://settings.cfg" +var _file : ConfigFile = ConfigFile.new() +const path : String = "user://settings.cfg" func _ready() -> void: - var error : Error = _config_file.load(SETTINGS_FILE_PATH) + # make sure we load most recent core settings + self.reset() + # merge core settings with user-defined settings + var err : Error = _file.load(self.path) + if err == ERR_FILE_CANT_OPEN: + push_warning("settings not found, using defaults") + # apply state + self.apply() - fov = _config_file.get_value("gameplay", "fov", fov) - mouse_sensitivity = _config_file.get_value("gameplay", "mouse_sensitivity", mouse_sensitivity) - inverted_y_axis = _config_file.get_value("gameplay", "inverted_y_axis", inverted_y_axis) - fullscreen = _config_file.get_value("graphics", "fullscreen", fullscreen) - _update_screen() - - if error != OK: - print("Settings not found, using defaults") - save_to_file() +func get_value(section: String, key: String, default: Variant = null) -> Variant: + return _file.get_value(section, key, default) -func save_to_file() -> void: - _config_file.set_value("gameplay", "fov", fov) - _config_file.set_value("gameplay", "mouse_sensitivity", mouse_sensitivity) - _config_file.set_value("gameplay", "inverted_y_axis", inverted_y_axis) - _config_file.set_value("graphics", "fullscreen", fullscreen) - _update_screen() - _config_file.save(SETTINGS_FILE_PATH) +func set_value(section: String, key: String, value: Variant) -> void: + return _file.set_value(section, key, value) -func _update_screen() -> void: - if fullscreen: - DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) - else: - DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) +func reset() -> void: + _file.clear() + # video settings + _file.set_value("ui", "scale", 2) + _file.set_value("video", "quality", 1.125) + _file.set_value("video", "filter", 0) + _file.set_value("video", "fsr_sharpness", 0) + _file.set_value("video", "window_mode", 2) + _file.set_value("video", "vsync", 0) + _file.set_value("video", "taa", 0) + _file.set_value("video", "msaa", 0) + _file.set_value("video", "fxaa", 0) + _file.set_value("video", "fov", 90) + # controls settings + _file.set_value("controls", "mouse_sensitivity", .6) + _file.set_value("controls", "inverted_y_axis", false) + # quality settings + _file.set_value("quality", "shadow_size", 3) + _file.set_value("quality", "shadow_filter", 2) + _file.set_value("quality", "mesh_lod", 2) + # environment settings + _file.set_value("environment", "sdfgi", 0) + _file.set_value("environment", "glow", 0) + _file.set_value("environment", "saoo", 0) + _file.set_value("environment", "ssr", 0) + _file.set_value("environment", "ssil", 0) + _file.set_value("environment", "volumetric_fog", 0) + +func apply() -> void: + _file.save(self.path)