thegates/app/scripts/ui/menu/menu.gd
2025-06-29 01:26:39 +07:00

48 lines
1.3 KiB
GDScript

extends Control
@export var ui_events: UiEvents
var window: Window
func _ready() -> void:
window = get_window()
window.dpi_changed.connect(scale_content)
resized.connect(on_resized)
set_initial_screen()
scale_content()
on_resized()
func on_resized() -> void:
Debug.logclr("Ui resized: %dx%d" % [size.x, size.y], Debug.SILENT_CLR)
ui_events.ui_size_changed_emit(size)
func scale_content() -> void:
# TODO: support other platforms FEATURE_HIDPI
var screen_scale = DisplayServer.screen_get_scale()
get_window().content_scale_factor = screen_scale
Debug.logclr("Content scale factor: %.2f" % [screen_scale], Debug.SILENT_CLR)
func set_initial_screen() -> void:
var last_screen = DataSaver.get_value("settings", "last_screen", 0)
DisplayServer.window_set_current_screen(last_screen)
Debug.logclr("Initial screen: %d" % [last_screen], Debug.SILENT_CLR)
if Platform.is_macos():
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
Debug.logclr("Setting fullscreen mode", Debug.SILENT_CLR)
if Platform.is_linux():
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_MAILBOX)
Debug.logclr("Setting vsync to mailbox", Debug.SILENT_CLR)
func _exit_tree() -> void:
var last_screen = DisplayServer.window_get_current_screen()
DataSaver.set_value("settings", "last_screen", last_screen)