This commit is contained in:
2026-05-01 21:58:20 +07:00
parent 07fb48353c
commit 709ed4069d
26 changed files with 599 additions and 1008 deletions

View File

@@ -49,12 +49,14 @@ namespace Hallucinate.UI
[SerializeField] private VisualTreeAsset profileTemplate;
[SerializeField] private VisualTreeAsset settingsTemplate;
[SerializeField] private VisualTreeAsset hudTemplate;
[SerializeField] private VisualTreeAsset pauseMenuTemplate;
[SerializeField] private StyleSheet globalStyleSheet;
private LoginController _loginController;
private MainMenuController _mainMenuController;
private LobbyController _lobbyController;
private SettingsController _settingsController;
private PauseMenuController _pauseMenuController;
// Osu Trail Pooling
private const int MAX_TRAIL_PARTICLES = 60;
@@ -65,6 +67,9 @@ namespace Hallucinate.UI
private bool _isSettingsOpen = false;
public bool IsSettingsOpen => _isSettingsOpen;
private bool _isPauseMenuOpen = false;
public bool IsPauseMenuOpen => _isPauseMenuOpen;
private const string UI_SCALE_KEY = "UIScale";
#if UNITY_EDITOR
@@ -242,7 +247,43 @@ namespace Hallucinate.UI
}
}
private void HandleCancel() { if (_isSettingsOpen) ToggleSettings(); }
private void HandleCancel()
{
if (_isSettingsOpen) ToggleSettings();
else if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "Main Scene")
{
TogglePauseMenu();
}
}
public async void TogglePauseMenu()
{
if (_pauseMenuController == null) return;
if (!_isPauseMenuOpen)
{
_isPauseMenuOpen = true;
_pauseMenuController.Root.BringToFront();
if (_cursorLayer != null) _cursorLayer.BringToFront();
// Unlock cursor when menu is open
UnityEngine.Cursor.lockState = CursorLockMode.None;
UnityEngine.Cursor.visible = false;
await _pauseMenuController.PlayTransitionIn();
}
else
{
_isPauseMenuOpen = false;
// Re-lock cursor when menu is closed
if (!_isSettingsOpen)
{
UnityEngine.Cursor.lockState = CursorLockMode.Locked;
}
await _pauseMenuController.PlayTransitionOut();
}
}
public async void ToggleSettings()
{
@@ -354,6 +395,7 @@ namespace Hallucinate.UI
RegisterController<ProfileController>(profileTemplate);
_settingsController = RegisterController<SettingsController>(settingsTemplate);
RegisterController<HUDController>(hudTemplate);
_pauseMenuController = RegisterController<PauseMenuController>(pauseMenuTemplate);
_loginController = RegisterController<LoginController>(loginTemplate);
}
catch (Exception e) { Debug.LogError($"[UIManager] Failed to initialize controllers: {e}"); }