[gd_scene load_steps=3 format=3 uid="uid://gmxenhavh1lp"] [ext_resource type="Script" uid="uid://16y8yg750rxm" path="res://ui/menu_main/video_settings.gd" id="1_sii8g"] [sub_resource type="GDScript" id="GDScript_24hb5"] script/source = " extends SpinBox func reset(): value = 1 var normal_stylebox:StyleBoxFlat = get_line_edit().get_theme_stylebox(\"normal\") var focus_stylebox:StyleBoxFlat var edit_stylebox:StyleBoxFlat @export var hold_down_delay: float = 0.5 @export var repeat_delay: float = 0.1 @export_range(1, 100) var repeat_multiplier: int = 1 @export var pressed: bool = false: set(value): pressed = value if pressed: prefix = \"<\" suffix = \">\" get_line_edit().add_theme_stylebox_override(\"normal\", edit_stylebox) else: prefix = \" \" suffix = \" \" get_line_edit().add_theme_stylebox_override(\"normal\", focus_stylebox) func _ready() -> void: edit_stylebox = normal_stylebox.duplicate(true) edit_stylebox.bg_color = Color(\"#022635\") focus_stylebox = normal_stylebox.duplicate(true) focus_stylebox.border_width_bottom = 2 focus_stylebox.border_width_left = 2 focus_stylebox.border_width_right = 2 focus_stylebox.border_width_top = 2 focus_stylebox.border_color = Color.WHITE focus_entered.connect(_on_focus_enter) focus_exited.connect(_on_focus_exit) func _input(event: InputEvent) -> void: if has_focus(): if event.is_action_pressed(\"ui_accept\"): pressed = not pressed get_viewport().set_input_as_handled() if pressed: grab_focus() # if event.is_action_pressed(\"ui_up\") or event.is_action_pressed(\"ui_right\"): value += step call_deferred(\"check_input_held\", true) elif event.is_action_pressed(\"ui_down\", true) or event.is_action_pressed(\"ui_left\", true): value -= step call_deferred(\"check_input_held\", false) get_viewport().set_input_as_handled() func _on_focus_enter(): get_line_edit().add_theme_stylebox_override(\"normal\", focus_stylebox) func _on_focus_exit(): get_line_edit().remove_theme_stylebox_override(\"normal\") func check_input_held(upward: bool): await(get_tree().create_timer(repeat_delay).timeout) while ((Input.is_action_pressed(\"ui_up\", true) or Input.is_action_pressed(\"ui_right\", true) and upward) or (Input.is_action_pressed(\"ui_down\", true) or Input.is_action_pressed(\"ui_left\", true) and not upward)): value += step * repeat_multiplier * (1 if upward else -1) await(get_tree().create_timer(repeat_delay).timeout) " [node name="Video Settings" type="VBoxContainer"] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_sii8g") [node name="Label" type="Label" parent="."] layout_mode = 2 theme_type_variation = &"HeaderLarge" text = "Video Settings" [node name="GridContainer" type="GridContainer" parent="."] layout_mode = 2 columns = 2 [node name="General" type="Label" parent="GridContainer"] layout_mode = 2 theme_type_variation = &"HeaderMedium" text = "General" [node name="HSeparator" type="HSeparator" parent="GridContainer"] layout_mode = 2 [node name="Preset" type="Label" parent="GridContainer"] layout_mode = 2 text = "apply preset" [node name="HBoxContainer2" type="HBoxContainer" parent="GridContainer"] layout_mode = 2 [node name="PerformancePreset" type="Button" parent="GridContainer/HBoxContainer2"] unique_name_in_owner = true layout_mode = 2 text = "Performance" [node name="BalancedPreset" type="Button" parent="GridContainer/HBoxContainer2"] unique_name_in_owner = true layout_mode = 2 text = "Balanced" [node name="QualityPreset" type="Button" parent="GridContainer/HBoxContainer2"] unique_name_in_owner = true layout_mode = 2 text = "Quality" [node name="Label" type="Label" parent="GridContainer"] layout_mode = 2 text = "Fulscreen Mode" [node name="FullscreenMode" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 1 item_count = 3 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="Scale_Label" type="Label" parent="GridContainer"] layout_mode = 2 text = "Rendering Scale" [node name="HBoxContainer" type="HBoxContainer" parent="GridContainer"] layout_mode = 2 [node name="Button" type="Button" parent="GridContainer/HBoxContainer"] layout_mode = 2 text = "reset" [node name="RenderScale" type="SpinBox" parent="GridContainer/HBoxContainer"] unique_name_in_owner = true custom_minimum_size = Vector2(120, 0) layout_mode = 2 focus_mode = 2 min_value = 0.25 max_value = 2.0 step = 0.05 value = 1.0 prefix = " " suffix = " " custom_arrow_step = 0.25 select_all_on_focus = true script = SubResource("GDScript_24hb5") [node name="Label3" type="Label" parent="GridContainer"] layout_mode = 2 text = "Super Resolution" [node name="SuperResolution" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 0 item_count = 3 popup/item_0/text = "disabled" popup/item_0/id = 0 popup/item_1/text = "FSR 1.0" popup/item_1/id = 1 popup/item_2/text = "FSR 2.2" popup/item_2/id = 2 [node name="EnableFps" type="CheckBox" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 text = "limit FPS" [node name="MaxFps" type="SpinBox" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 focus_mode = 2 min_value = 24.0 max_value = 144.0 value = 60.0 prefix = " " suffix = " " script = SubResource("GDScript_24hb5") repeat_multiplier = 5 [node name="Rendering" type="Label" parent="GridContainer"] layout_mode = 2 theme_type_variation = &"HeaderMedium" text = "Graphic Fidelity" [node name="HSeparator2" type="HSeparator" parent="GridContainer"] layout_mode = 2 [node name="Label4" type="Label" parent="GridContainer"] visible = false layout_mode = 2 text = "video_hdr" [node name="EnableHDR" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true visible = false layout_mode = 2 tooltip_text = "hdr_tooltip \"HDR increases the vibrance of colors for a more immersive experience. It is automatically enabled if your device supports it. If you cannot manually HDR, your device may not be supported. You can manually disable HDR if you prefer to play without." selected = 0 item_count = 3 popup/item_0/text = "hdr_automatic" popup/item_0/id = 0 popup/item_1/text = "hdr_enabled" popup/item_1/id = 1 popup/item_2/text = "hdr_disabled" popup/item_2/id = 2 [node name="Label5" type="Label" parent="GridContainer"] layout_mode = 2 text = "Lighting Quality" [node name="LightingQuality" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "minimum" popup/item_0/id = 0 popup/item_1/text = "low (SDF Global Illumination)" popup/item_1/id = 1 popup/item_2/text = "medium (SDF and Screen Space Global Illumination)" popup/item_2/id = 2 popup/item_3/text = "high (SDF and Screen Space Global Illumination)" popup/item_3/id = 3 [node name="ShadowLabel" type="Label" parent="GridContainer"] layout_mode = 2 text = "Shadow Quality" [node name="ShadowQuality" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 1 item_count = 3 popup/item_0/text = "performance" popup/item_0/id = 0 popup/item_1/text = "balanced" popup/item_1/id = 1 popup/item_2/text = "quality" popup/item_2/id = 2 [node name="AlaisingLabel" type="Label" parent="GridContainer"] layout_mode = 2 text = "Anti Aliasing" [node name="AntiAlaising" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "disabled" popup/item_0/id = 0 popup/item_1/text = "2x MSAA" popup/item_1/id = 1 popup/item_2/text = "4x MSAA" popup/item_2/id = 2 popup/item_3/text = "8x MSAA" popup/item_3/id = 3 [node name="SyncLabel" type="Label" parent="GridContainer"] layout_mode = 2 text = "v-Sync" [node name="vSync" type="OptionButton" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "disabled" popup/item_0/id = 0 popup/item_1/text = "enabled" popup/item_1/id = 1 popup/item_2/text = "adaptive" popup/item_2/id = 2 popup/item_3/text = "Letterbox" popup/item_3/id = 3 [node name="HBoxContainer" type="HBoxContainer" parent="GridContainer/vSync"] visible = false layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 [node name="ExitButton" type="Button" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 text = "menu_back" [node name="ConfirmButton" type="Button" parent="GridContainer"] unique_name_in_owner = true layout_mode = 2 text = "save and apply" [node name="Popup" type="Popup" parent="."] initial_position = 2 size = Vector2i(546, 123) [node name="VBoxContainer" type="VBoxContainer" parent="Popup"] offset_left = 113.0 offset_right = 153.0 offset_bottom = 40.0 [node name="Label" type="Label" parent="Popup/VBoxContainer"] layout_mode = 2 text = "Settings have been modified. Do you really want to leave without saving?" horizontal_alignment = 1 [node name="HBoxContainer" type="HBoxContainer" parent="Popup/VBoxContainer"] layout_mode = 2 alignment = 1 [node name="ConfirmExit" type="Button" parent="Popup/VBoxContainer/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 text = "leave" [node name="ConfirmSave" type="Button" parent="Popup/VBoxContainer/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 text = "save" [node name="ConfirmAbort" type="Button" parent="Popup/VBoxContainer/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 text = "abort" [connection signal="pressed" from="GridContainer/HBoxContainer/Button" to="GridContainer/HBoxContainer/RenderScale" method="reset"]