using MyCollections.Managers; using UnityEngine; public class HUDManager : MonoBehaviour { private GameStateManager gameStateManager; [SerializeField] private GameObject pauseMenuPanel; [SerializeField] private PlayerInventoryUI playerInventoryUI; [SerializeField] private HUDMode currentHUDMode; private void Awake() { } private void Start() { currentHUDMode = HUDMode.None; gameStateManager = GameStateManager.Instance; } // Update is called once per frame void Update() { if (Input.GetKeyDown(InputManager.GetKey(InputAction.PauseGame))) { TogglePauseGame(); } if (Input.GetKeyDown(InputManager.GetKey(InputAction.Inventory))) { ToggleInventory(); } } public void TogglePauseGame() { if (currentHUDMode != HUDMode.PauseGame) { SetHUDMode(HUDMode.PauseGame); } else { SetHUDMode(HUDMode.None); } } private void ToggleInventory() { if (currentHUDMode != HUDMode.Inventory) { SetHUDMode(HUDMode.Inventory); } else { SetHUDMode(HUDMode.None); } } public void SetHUDMode(HUDMode newMode) { // Ensure gameStateManager is assigned if (gameStateManager == null) { Debug.LogError("GameStateManager is not assigned."); return; } // Close currently active HUD elements CloseAllHUD(); // Activate the selected HUD mode switch (newMode) { case HUDMode.None: gameStateManager.ResumeGame(); Cursor.visible = false; break; case HUDMode.Inventory: if (playerInventoryUI == null) { Debug.LogError("Inventory Panel is null in SetHUDMode."); return; } playerInventoryUI.DisplayGrid(true); Cursor.visible = true; break; case HUDMode.PauseGame: gameStateManager.PauseGame(); pauseMenuPanel.SetActive(true); Cursor.visible = true; break; } currentHUDMode = newMode; } private void CloseAllHUD() { // Deactivate all HUD panels pauseMenuPanel.SetActive(false); playerInventoryUI.DisplayGrid(false); } public void OnDestroy() { Cursor.visible = false; } } public enum HUDMode { None, PauseGame, Inventory, }