namespace Pong.Scripts.Managers.UI; public partial class BaseMenu : VBoxContainer { private SettingsManager _settingsManager; public override void _EnterTree() { _settingsManager = GetNode("/root/SettingsManager"); _settingsManager.SettingsChanged += SettingsChanged; GetTree().Root.SizeChanged += AdaptUiToGameResolution; AdaptUiToGameResolution(); } public override void _ExitTree() { GetTree().Root.SizeChanged -= AdaptUiToGameResolution; _settingsManager.SettingsChanged -= SettingsChanged; } /// /// method that fires when the settings get changed. /// private void SettingsChanged() { AdaptUiToGameResolution(); DisplayServer.WindowSetVsyncMode((DisplayServer.VSyncMode)_settingsManager.SettingsData.VSync); } /// /// change the size of the UI container to the current resolution of the game. /// private void AdaptUiToGameResolution() { var scale = _settingsManager.SettingsData.Scale; Size = (Vector2)DisplayServer.WindowGetSize() / scale; Scale = new Vector2(scale, scale); } }