extends Control var resolutions = [ Vector2i(640, 360), Vector2i(800, 450), Vector2i(1152, 648), Vector2i(1280, 720), Vector2i(1366, 768), Vector2i(1600, 900), Vector2i(1920, 1080), Vector2i(2560, 1440), Vector2i(3840, 2160) ] # Adjust these paths as needed to match your scene @onready var resolution_button: OptionButton = $"TabContainer/Screen & Video/VBoxContainer/HBoxContainer/OptionButton" @onready var display_mode: OptionButton = $"TabContainer/Screen & Video/VBoxContainer/HBoxContainer2/OptionButton" func _ready(): # Populate resolution selector for res in resolutions: resolution_button.add_item("%d x %d" % [res.x, res.y]) # Populate display mode selector display_mode.clear() display_mode.add_item("Windowed") display_mode.add_item("Fullscreen") display_mode.add_item("Borderless") # Connect signals (editor: also connect in "Node" panel for best reliability) resolution_button.connect("item_selected", Callable(self, "_on_resolution_button_item_selected")) display_mode.connect("item_selected", Callable(self, "_on_display_mode_selected")) # Set defaults (optional) display_mode.select(0) resolution_button.select(2) resolution_button.disabled = false func _on_display_mode_selected(index): var mode_name = display_mode.get_item_text(index) match mode_name: "Windowed": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) resolution_button.disabled = false # Reapply current resolution _set_screen_size(resolutions[resolution_button.selected]) "Fullscreen": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) resolution_button.disabled = true "Borderless": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN) resolution_button.disabled = false # Optional: some platforms need actual borderless flag set # DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, true) _set_screen_size(resolutions[resolution_button.selected]) func _on_resolution_button_item_selected(index): # Only acts if mode is not Fullscreen if display_mode.get_selected_id() != 1: _set_screen_size(resolutions[index]) func _set_screen_size(size: Vector2i): # Only relevant for windowed/borderless if display_mode.get_selected_id() != 1: # 1 is "Fullscreen" DisplayServer.window_set_size(size) # Optionally center or reposition window if desired func _on_button_pressed() -> void: get_tree().change_scene_to_file("res://Game/Menu/main.tscn")