namespace Pong.Scripts.Managers.UI; public partial class BaseMenu : VBoxContainer { private SettingsManager _settingsManager; public override void _EnterTree() { _settingsManager = GetNode("/root/SettingsManager"); _settingsManager.SettingsChanged += AdaptUiToGameResolution; GetTree().Root.SizeChanged += AdaptUiToGameResolution; AdaptUiToGameResolution(); EnterTree(); } public override void _ExitTree() { GetTree().Root.SizeChanged -= AdaptUiToGameResolution; _settingsManager.SettingsChanged -= AdaptUiToGameResolution; ExitTree(); } protected virtual void EnterTree() { } protected virtual void ExitTree() { } /// /// change the size of the UI container to the current resolution of the game. /// protected void AdaptUiToGameResolution() { var scale = _settingsManager.SettingsData.Scale; Size = (Vector2)DisplayServer.WindowGetSize() / scale; Scale = new Vector2(scale, scale); } }