using Godot; using Godot.Collections; namespace Cirno.Scripts.UI; public partial class OptionsMenu : MenuBase { [Export] public Array Resolutions = [ new(320, 160), new(512, 256), new(640, 320), new(1024, 512), new(1280, 640), new(1920, 1080), ]; [Export] public OptionButton ResolutionsList { get; private set; } [Export] public CheckBox VSyncToggle { get; private set; } [Export] public CheckBox FullScreenToggle { get; private set; } //[Export] public HSlider MusicVolumeSlider { get; private set; } public override void _Ready() { foreach (var resolution in Resolutions) { ResolutionsList.AddItem($"{resolution.X}x{resolution.Y}"); } ResolutionsList.ItemSelected += ResolutionsListOnItemSelected; VSyncToggle.SetPressed(DisplayServer.WindowGetVsyncMode() == DisplayServer.VSyncMode.Enabled); VSyncToggle.Toggled += VSyncToggleOnToggled; FullScreenToggle.SetPressed(DisplayServer.WindowGetMode() is DisplayServer.WindowMode.Fullscreen); } private void VSyncToggleOnToggled(bool toggledOn) { if (toggledOn) { DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Enabled); } else { DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Disabled); } } private void ResolutionsListOnItemSelected(long index) { GD.Print($"Selected index: {index} {Resolutions[(int)index]}"); DisplayServer.WindowSetSize(Resolutions[(int)index]); } }