extends PanelContainer @onready var back = $MarginContainer/VBoxContainer/Back #Text settings UI nodes @export var text_slider: Node @export var auto_slider: Node @export var text_counter: Node @export var auto_counter: Node @export var autoplay: Node @export var auto_mask: ColorRect #Vars and signals for handling text settings var text_speed: float var auto_speed: float var is_auto = false signal text_value_changed signal auto_value_changed #Screen settings UI nodes @export var display_button: Node @export var resolution_button: Node var screen_size = DisplayServer.screen_get_size(DisplayServer.window_get_current_screen()) #Computer screen size var resolution_size = DisplayServer.screen_get_size(DisplayServer.window_get_current_screen()) #Used for changing screen resolution var resolution_list: Dictionary = { 0: Vector2i(800,600), 1: Vector2i(1024,768), 2: Vector2i(1280,720), 3: Vector2i(1366,768), 4: Vector2i(1440,900), 5: Vector2i(1600,900), 6: Vector2i(1680,1050), 7: Vector2i(1920,1080) } # Called when the node enters the scene tree for the first time. func _ready() -> void: back.pressed.connect(func(): self.hide()) #Back button #Text settings #Signals text_slider.value_changed.connect(self._on_text_value_changed) auto_slider.value_changed.connect(self._on_auto_value_changed) autoplay.pressed.connect(self._on_autoplay_pressed) #Setup text_speed = 0.1 / text_slider.value auto_speed = 0.4 * auto_slider.value text_counter.text = "[center]" + str(snapped((text_speed * 1000), 1)) + " ms/letter[/center]" auto_counter.text = "[center]" + str(snapped(auto_speed, 0.01)) + " s delay[/center]" #Autoplay autoplay.button_pressed = false auto_mask.show() #Screen settings #Signals display_button.item_selected.connect(self._on_display_selected) resolution_button.item_selected.connect(self._on_resolution_selected) #Setup for index in resolution_list: var item_text = str(resolution_list[index].x) + "x" + str(resolution_list[index].y) resolution_button.add_item(item_text, index) resolution_button.select(resolution_list.find_key(screen_size)) #Selects the computer resolution as initial screen resolution #Changes text_speed value func _on_text_value_changed(new_value: float): text_speed = 0.1 / new_value text_counter.text = "[center]" + str(snapped((text_speed * 1000), 1)) + " ms/letter[/center]" text_value_changed.emit() #Changes auto_speed value func _on_auto_value_changed(new_value: float): auto_speed = 0.4 * new_value auto_counter.text = "[center]" + str(snapped(auto_speed, 0.01)) + " s delay[/center]" auto_value_changed.emit() #Toggles auto-advance func _on_autoplay_pressed(): if autoplay.button_pressed: is_auto = true auto_mask.hide() else: is_auto = false auto_mask.show() #Shows selected display func _on_display_selected(index: int): match index: 0: #Windowed mode DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false) #Puts the windowed screen in the center of the computer's screen var screen_center = screen_size / 2 var top_left = screen_center - (resolution_size / 2) DisplayServer.window_set_size(resolution_size) await get_tree().process_frame #Waits process_frame to avoid bugs DisplayServer.window_set_position(top_left) 1: #Borderless mode DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MAXIMIZED) DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, true) 2: #Fullscreen mode DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) print("window setting changed") #Shows selected resolution func _on_resolution_selected(index: int): resolution_size = resolution_list.get(index) DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false) #Puts the windowed screen in the center of the computer's screen var screen_center = screen_size / 2 var top_left = screen_center - (resolution_size / 2) DisplayServer.window_set_size(resolution_size) await get_tree().process_frame #Waits process_frame to avoid bugs DisplayServer.window_set_position(top_left)