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