using AZTECHWB.Core; using AZTECHWB.Management; using AZTECHWB.Command; using Cysharp.Threading.Tasks; using UnityEngine; using UVC.UI.Menu; using UVC.UI.Toolbar.Model; using UVC.UI.ToolBar; namespace AZTECHWB.UI { public class TopMenuPanel : UIPanel { [SerializeField] private TopMenuController topMenu; [SerializeField] private Toolbox topToolBox; public override async UniTask Init() { topMenu = transform.GetComponentInChildren(); topToolBox = transform.GetComponentInChildren(); SetupTopMenu(); SetupToolBox(); await UniTask.CompletedTask; } private void SetupTopMenu() { if (topMenu == null) { Debug.LogWarning("TopMenuController is not assigned in SceneMain."); return; } topMenu.AddMenuItem(new MenuItemData("production_status", "생산 현황", new OpenProductionProgressPanelCommand())); topMenu.AddMenuItem(new MenuItemData("production_alarm", "알림 현황", new OpenAlarmSituationPanelCommand())); topMenu.Initialize(); } private void SetupToolBox() { var toolbarModel = new ToolbarModel(); // --- Top Menu 모델 구성 시작 --- // AI 시뮬레이션 toolbarModel.AddToggleButton("AI Simulation", false, $"UI/Sprites/TopToolBar/IMG_Playback_on", $"UI/Sprites/TopToolBar/IMG_Playback", (isSelected) => { var popupCanvas = AZTECHSceneMain.Instance.GetManager().GetCanvas(); popupCanvas.ResetPanels(false); var raycaster = AZTECHSceneMain.Instance.GetManager(); raycaster.SetInteractable(isSelected); var machineStatusItemManager = AZTECHSceneMain.Instance.GetManager(); machineStatusItemManager.SetInteractableIcons(!isSelected); if (!isSelected) { var InfoPanel = AZTECHSceneMain.Instance.GetManager().GetCanvas().GetPanel(); InfoPanel.Close(); } }, null ); // 설정 toolbarModel.AddToggleButton("Setting", false, $"UI/Sprites/TopToolBar/IMG_Setting_on", $"UI/Sprites/TopToolBar/IMG_Setting", (isSelected) => { var uiManager = AZTECHSceneMain.Instance.GetManager(); var popupCanvas = uiManager.GetCanvas(); if (isSelected) { popupCanvas.OpenPanel(CanvasPanelOpenMode.Single); } else { popupCanvas.GetPanel().Close(); } }, null ); //나가기 toolbarModel.AddToggleButton("Exit",false, $"UI/Sprites/TopToolBar/IMG_Exit_on", $"UI/Sprites/TopToolBar/IMG_Exit", (isSelected) => { var uiManager = AZTECHSceneMain.Instance.GetManager(); var exitPanel = uiManager.GetCanvas().GetPanel(); if (isSelected) { exitPanel.Open(); } else { exitPanel.Close(); } }, null ); topToolBox.SetData(toolbarModel); topToolBox.Initialize(); } public void InitializeTopMenu() { SetupTopMenu(); SetupToolBox(); } public void SetToggleButton(string buttonName, bool isSelected, bool raiseEvent = false) { topToolBox.SetToggleButtonState(buttonName, isSelected, raiseEvent); } public void SetMenuItemEnable(string menuItemId, bool isEnabled) { topMenu.SetMenuItemEnabled(menuItemId, isEnabled); } } }