[gd_scene load_steps=28 format=3 uid="uid://bjctlqvs33nqy"] [ext_resource type="Texture2D" uid="uid://c1tjamjm8qjog" path="res://interfaces/menus/boot/background.webp" id="1_ph586"] [sub_resource type="GDScript" id="GDScript_jd8xf"] resource_name = "MainMenu" script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . class_name BootMenu extends CanvasLayer signal start_demo func _on_demo_pressed() -> void: start_demo.emit() func _on_multiplayer_pressed() -> void: %MultiplayerPanelContainer.hide() %MultiplayerPanelContainer.tab_container.current_tab = 0 %SettingsPanelContainer.hide() %MainPanelContainer.hide() %MultiplayerPanelContainer.show() func _on_settings_pressed() -> void: %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: $MultiplayerPanelContainer.hide() $MultiplayerPanelContainer.tab_container.current_tab = 0 $SettingsPanelContainer.hide() $MainPanelContainer.show() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krqeq"] bg_color = Color(0.501961, 0.501961, 0.501961, 0.25098) [sub_resource type="GDScript" id="GDScript_tc1bm"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends PanelContainer const DEFAULT_HOST : String = \"localhost\" const DEFAULT_PORT : int = 9000 const CONFIG_FILE_PATH : String = \"user://profile.cfg\" var _join_address : RegEx = RegEx.new() var _registered_ports : RegEx = RegEx.new() var _config_file : ConfigFile = ConfigFile.new() signal start_server(port : int) 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.get_node(\"/root/Game\") @onready var map_selector : OptionButton = %MapSelector @export var tab_container : TabContainer func _ready() -> void: # see https://datatracker.ietf.org/doc/html/rfc1700 _registered_ports.compile(r'^(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$') _join_address.compile(r'^(?[a-zA-Z0-9.-]+)(:(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5]))?$') _load_config() call_deferred(\"_populate_map_selector\") func _populate_map_selector() -> void: for map : PackedScene in game.maps: var map_name : String = map._bundled.names[0] map_selector.add_item(map_name) func _load_config() -> void: var error : Error = _config_file.load(CONFIG_FILE_PATH) if error != OK: return var profile_name : String = _config_file.get_value(\"profile\", \"name\", \"Newblood\") %ProfileName.text = profile_name func _on_save_pressed() -> void: _config_file.set_value(\"profile\", \"name\", %ProfileName.text) _config_file.save(CONFIG_FILE_PATH) func _on_menu_pressed() -> void: hide() owner.get_node(\"Main\").show() func _on_quit_pressed() -> void: get_tree().quit() func _on_host_pressed() -> void: var port : int = DEFAULT_PORT # check for registered ports number matches if %ServerPort.text: var result : RegExMatch = _registered_ports.search(%ServerPort.text) if result: # port is valid port = int(result.get_string()) else: # port is not valid push_warning(\"A valid port number in the range 1024-65535 is required.\") return start_server.emit(port, %ProfileName.text) func _on_join_pressed() -> void: var addr : Array = [DEFAULT_HOST, DEFAULT_PORT] # validate join address input var result : RegExMatch = _join_address.search(%JoinAddress.text) if result: # address is valid addr[0] = result.get_string(\"host\") var rport : String = result.get_string(\"port\") if rport: addr[1] = int(rport) $Modal.show() join_server.emit(addr[0], addr[1], %ProfileName.text) func _on_connected_to_server() -> void: $Modal.hide() menu.hide() func _on_connection_failed() -> void: $Modal.hide() " [sub_resource type="GDScript" id="GDScript_gbnwv"] resource_name = "Settings" script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends PanelContainer # 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() # 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) " [sub_resource type="GDScript" id="GDScript_7votw"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"ui\", \"scale\") self.item_selected.emit(self.selected) func _on_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) " [sub_resource type="GDScript" id="GDScript_ux54k"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends HBoxContainer @export var min_value : float = 0. @export var max_value : float = 1. @export var step : float = .01 func _ready() -> void: var value : float = Settings.get_value(\"controls\", \"mouse_sensitivity\") for control : Range in [$SpinBox, $Slider]: control.min_value = min_value control.max_value = max_value control.step = step control.value = value _on_value_changed(value) func _on_value_changed(new_value : float) -> void: Settings.set_value(\"controls\", \"mouse_sensitivity\", new_value) func _on_spin_box_value_changed(new_value : float) -> void: _on_value_changed(new_value) $Slider.value = new_value func _on_slider_value_changed(new_value : float) -> void: _on_value_changed(new_value) $SpinBox.value = new_value " [sub_resource type="GDScript" id="GDScript_v5ux6"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends HBoxContainer @export var min_value : int = 70 @export var max_value : int = 150 @export var step : int = 1 func _ready() -> void: var value : int = Settings.get_value(\"video\", \"fov\") for control : Range in [$SpinBox, $Slider]: control.min_value = min_value control.max_value = max_value control.step = step control.value = value _on_value_changed(value) func _on_value_changed(new_value : int) -> void: Settings.set_value(\"video\", \"fov\", new_value) func _on_spin_box_value_changed(new_value : int) -> void: _on_value_changed(new_value) $Slider.value = new_value func _on_slider_value_changed(new_value : int) -> void: _on_value_changed(new_value) $SpinBox.value = new_value " [sub_resource type="GDScript" id="GDScript_viqb1"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends HSlider func _ready() -> void: self.value = Settings.get_value(\"video\", \"quality\") self.value_changed.emit(self.value) func _on_value_changed(new_value : float) -> void: Settings.set_value(\"video\", \"quality\", new_value) get_viewport().scaling_3d_scale = new_value " [sub_resource type="GDScript" id="GDScript_mnbe0"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"filter\") self.item_selected.emit(self.selected) func _on_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 " [sub_resource type="GDScript" id="GDScript_c3ngv"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends HSlider func _ready() -> void: self.value = Settings.get_value(\"video\", \"fsr_sharpness\") self.value_changed.emit(self.value) func _on_value_changed(new_value : float) -> void: Settings.set_value(\"video\", \"fsr_sharpness\", new_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 - new_value " [sub_resource type="GDScript" id="GDScript_xa5kp"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"window_mode\") self.item_selected.emit(self.selected) func _on_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) " [sub_resource type="GDScript" id="GDScript_jl1uk"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"vsync\") self.item_selected.emit(self.selected) func _on_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) " [sub_resource type="GDScript" id="GDScript_6qqbt"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"taa\") self.item_selected.emit(self.selected) func _on_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. # @NOTE: https://github.com/TokisanGames/Terrain3D/issues/302 # get_viewport().use_taa = index == 1 " [sub_resource type="GDScript" id="GDScript_ulkhx"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"msaa\") self.item_selected.emit(self.selected) func _on_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 " [sub_resource type="GDScript" id="GDScript_k6fl5"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"video\", \"fxaa\") self.item_selected.emit(self.selected) func _on_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 " [sub_resource type="GDScript" id="GDScript_cph1u"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"quality\", \"shadow_size\") self.item_selected.emit(self.selected) func _on_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 " [sub_resource type="GDScript" id="GDScript_uhm5l"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"quality\", \"shadow_filter\") self.item_selected.emit(self.selected) func _on_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) " [sub_resource type="GDScript" id="GDScript_4cgn8"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"quality\", \"mesh_lod\") self.item_selected.emit(self.selected) func _on_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 " [sub_resource type="GDScript" id="GDScript_xfygm"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"sdfgi\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"sdfgi\", index) # 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) MapsManager.environment.sdfgi_enabled = false elif index == 1: # Low MapsManager.environment.sdfgi_enabled = true RenderingServer.gi_set_use_half_resolution(true) elif index == 2: # High MapsManager.environment.sdfgi_enabled = true RenderingServer.gi_set_use_half_resolution(false) " [sub_resource type="GDScript" id="GDScript_k3pso"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"glow\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"glow\", index) ## 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) MapsManager.environment.glow_enabled = false elif index == 1: # Low MapsManager.environment.glow_enabled = true elif index == 2: # High MapsManager.environment.glow_enabled = true " [sub_resource type="GDScript" id="GDScript_0sqe1"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"ssao\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"ssao\", index) # 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) MapsManager.environment.ssao_enabled = false elif index == 1: # Very Low MapsManager.environment.ssao_enabled = true RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300) elif index == 2: # Low MapsManager.environment.ssao_enabled = true RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_VERY_LOW, true, 0.5, 2, 50, 300) elif index == 3: # Medium MapsManager.environment.ssao_enabled = true RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_MEDIUM, true, 0.5, 2, 50, 300) elif index == 4: # High MapsManager.environment.ssao_enabled = true RenderingServer.environment_set_ssao_quality(RenderingServer.ENV_SSAO_QUALITY_HIGH, true, 0.5, 2, 50, 300) " [sub_resource type="GDScript" id="GDScript_cb82q"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"ssr\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"ssr\", index) # 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) MapsManager.environment.ssr_enabled = false elif index == 1: # Low MapsManager.environment.ssr_enabled = true MapsManager.environment.ssr_max_steps = 8 elif index == 2: # Medium MapsManager.environment.ssr_enabled = true MapsManager.environment.ssr_max_steps = 32 elif index == 3: # High MapsManager.environment.ssr_enabled = true MapsManager.environment.ssr_max_steps = 56 " [sub_resource type="GDScript" id="GDScript_qrf3h"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"ssil\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"ssil\", index) # 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) MapsManager.environment.ssil_enabled = false if index == 1: # Very Low MapsManager.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 MapsManager.environment.ssil_enabled = true RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_LOW, true, 0.5, 4, 50, 300) if index == 3: # Medium MapsManager.environment.ssil_enabled = true RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_MEDIUM, true, 0.5, 4, 50, 300) if index == 4: # High MapsManager.environment.ssil_enabled = true RenderingServer.environment_set_ssil_quality(RenderingServer.ENV_SSIL_QUALITY_HIGH, true, 0.5, 4, 50, 300) " [sub_resource type="GDScript" id="GDScript_80uen"] script/source = "# This file is part of open-fpsz. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . extends OptionButton func _ready() -> void: self.selected = Settings.get_value(\"environment\", \"volumetric_fog\") self.item_selected.emit(self.selected) func _on_item_selected(index: int) -> void: Settings.set_value(\"environment\", \"volumetric_fog\", index) if index == 0: # Disabled (default) MapsManager.environment.volumetric_fog_enabled = false if index == 1: # Low MapsManager.environment.volumetric_fog_enabled = true RenderingServer.environment_set_volumetric_fog_filter_active(false) if index == 2: # High MapsManager.environment.volumetric_fog_enabled = true RenderingServer.environment_set_volumetric_fog_filter_active(true) " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c4ymk"] bg_color = Color(0, 0, 0, 0) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dq4me"] bg_color = Color(0, 0.5, 0.5, 0.2) [node name="BootMenu" type="CanvasLayer"] script = SubResource("GDScript_jd8xf") [node name="TextureRect" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 texture = ExtResource("1_ph586") stretch_mode = 6 [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 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_krqeq") script = SubResource("GDScript_tc1bm") tab_container = NodePath("MarginContainer/VBoxContainer/TabContainer") [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="MultiplayerPanelContainer/MarginContainer"] layout_mode = 2 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] layout_mode = 2 theme_override_constants/h_separation = 0 [node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile"] layout_mode = 0 offset_right = 1116.0 offset_bottom = 577.0 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="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 20 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 disabled = true text = "Delete" [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -31.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] layout_mode = 2 text = "Current Profile:" [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true [node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join"] 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="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -31.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [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="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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true [node name="MarginContainer" type="MarginContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host"] 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="HBoxContainer" type="HBoxContainer" parent="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -66.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [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="MultiplayerPanelContainer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [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="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="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="MultiplayerPanelContainer"] visible = false layout_mode = 2 [node name="Label" type="Label" parent="MultiplayerPanelContainer/Modal"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 offset_left = -59.5 offset_top = -11.5 offset_right = 59.5 offset_bottom = 11.5 grow_horizontal = 2 grow_vertical = 2 text = "CONNECTING..." [node name="SettingsPanelContainer" type="PanelContainer" parent="."] visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 3 script = SubResource("GDScript_gbnwv") [node name="VBoxContainer" type="VBoxContainer" parent="SettingsPanelContainer"] layout_mode = 2 [node name="ScrollContainer" type="ScrollContainer" parent="SettingsPanelContainer/VBoxContainer"] custom_minimum_size = Vector2(480, 0) layout_mode = 2 size_flags_vertical = 3 scroll_vertical = 100 [node name="MarginContainer" type="MarginContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/margin_left = 15 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 15 theme_override_constants/margin_bottom = 20 [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"] 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 script = SubResource("GDScript_7votw") [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="SensitivityControls" type="HBoxContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer"] layout_mode = 2 size_flags_horizontal = 3 script = SubResource("GDScript_ux54k") [node name="SpinBox" type="SpinBox" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls"] layout_mode = 2 [node name="Slider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 [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 = 0 [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="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="FOVControls" type="HBoxContainer" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] unique_name_in_owner = true layout_mode = 2 script = SubResource("GDScript_v5ux6") [node name="SpinBox" type="SpinBox" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls"] layout_mode = 2 min_value = 70.0 max_value = 150.0 value = 90.0 [node name="Slider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 min_value = 70.0 max_value = 150.0 value = 90.0 [node name="QualityLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_font_sizes/font_size = 16 text = "Resolution Scale:" [node name="QualitySlider" type="HSlider" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 min_value = 0.25 max_value = 2.0 step = 0.05 value = 1.0 script = SubResource("GDScript_viqb1") [node name="FilterLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_font_sizes/font_size = 16 text = "Display Filter:" [node name="FilterOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 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 script = SubResource("GDScript_mnbe0") [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 script = SubResource("GDScript_c3ngv") [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"] 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 script = SubResource("GDScript_xa5kp") [node name="VsyncLabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_font_sizes/font_size = 16 text = "V-Sync:" [node name="VsyncOptionButton" type="OptionButton" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] layout_mode = 2 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 script = SubResource("GDScript_jl1uk") [node name="TAALabel" type="Label" parent="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer"] visible = false 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 visible = false 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 script = SubResource("GDScript_6qqbt") [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 script = SubResource("GDScript_ulkhx") [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 script = SubResource("GDScript_k6fl5") [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 script = SubResource("GDScript_cph1u") [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 script = SubResource("GDScript_uhm5l") [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 script = SubResource("GDScript_4cgn8") [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 script = SubResource("GDScript_xfygm") [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 script = SubResource("GDScript_k3pso") [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 script = SubResource("GDScript_0sqe1") [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 script = SubResource("GDScript_cb82q") [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 script = SubResource("GDScript_qrf3h") [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 script = SubResource("GDScript_80uen") [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="Reset" type="Button" parent="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 text = "Reset" [node name="Close" type="Button" parent="SettingsPanelContainer/VBoxContainer/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 text = "Close" [node name="MainPanelContainer" type="PanelContainer" parent="."] unique_name_in_owner = true anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 0 theme_override_styles/panel = SubResource("StyleBoxFlat_c4ymk") [node name="HBoxContainer" type="HBoxContainer" parent="MainPanelContainer"] layout_mode = 2 [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="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="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 alignment = 1 [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="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Multiplayer" [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="MainPanelContainer/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Quit" [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="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/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/UIGridContainer/UIScaleOptionButton" method="_on_item_selected"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls/SpinBox" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls" method="_on_spin_box_value_changed"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls/Slider" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ControlsGridContainer/SensitivityControls" method="_on_slider_value_changed"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls/SpinBox" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls" method="_on_spin_box_value_changed"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls/Slider" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FOVControls" method="_on_slider_value_changed"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualitySlider" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/QualitySlider" method="_on_value_changed"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FilterOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FilterOptionButton" method="_on_item_selected"] [connection signal="value_changed" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FSRSharpnessSlider" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FSRSharpnessSlider" method="_on_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/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/VsyncOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/TAAOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/TAAOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/MSAAOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/MSAAOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FXAAOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/ViewportGridContainer/FXAAOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowSizeOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowSizeOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowFilterOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/ShadowFilterOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/MeshLODOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/QualityGridContainer/MeshLODOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SDFGIOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SDFGIOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/GlowOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/GlowOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSAOOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSAOOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSReflectionsOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSReflectionsOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSILOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/SSILOptionButton" method="_on_item_selected"] [connection signal="item_selected" from="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/VolumetricFogOptionButton" to="SettingsPanelContainer/VBoxContainer/ScrollContainer/MarginContainer/VBoxContainer/EnvironmentGridContainer/VolumetricFogOptionButton" method="_on_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"]