Files
AZTECH_WB/Assets/Scripts/Core/AZTECHSceneMain.cs
정영민 70515575f5 [정영민] 로그인 기능 수정
26.03.12
- 로그인 단축키 기능 추가
2026-03-16 08:54:59 +09:00

107 lines
3.5 KiB
C#

using AZTECHWB.Management;
using AZTECHWB.UI;
using Cysharp.Threading.Tasks;
using System;
using System.Collections.Generic;
using UnityEngine;
using UVC.Core;
using UVC.UI.Tooltip;
namespace AZTECHWB.Core
{
[DefaultExecutionOrder(90)]
public class AZTECHSceneMain : SingletonScene<AZTECHSceneMain>
{
public Building building;
AZTECHUIManager uiManager;
DataManager dataManager;
Raycaster raycaster;
LibraryManager libraryManager;
MachineStatusItemManager machineStatusItemManager;
AISimulationManager aiSimulationManager;
OptionManager optionManager;
public Action Initialized;
/// <summary>
/// 초기 화 메서드입니다.
/// Awake 메서드에서 호출되며, MonoBehaviour가 생성될 때 한 번만 실행됩니다.
/// </summary>
protected override void Init()
{
if (!TooltipManager.Instance.IsInitialized) TooltipManager.Instance.Initialize();
AZTECHAppMain.Instance.Initialized += OnAppInitialized;
}
private async void OnAppInitialized()
{
building = FindAnyObjectByType<Building>();
building.Init();
uiManager = await LoadManager<AZTECHUIManager>();
dataManager = await LoadManager<DataManager>();
raycaster = await LoadManager<Raycaster>();
libraryManager = await LoadManager<LibraryManager>();
aiSimulationManager = await LoadManager<AISimulationManager>();
machineStatusItemManager = await LoadManager<MachineStatusItemManager>();
optionManager = await LoadManager<OptionManager>();
SetupDataSetting();
if (Initialized != null)
{
Initialized.Invoke();
}
await UniTask.CompletedTask;
}
//실제 데이터 받을 시 코드 변경 예정
private void SetupDataSetting()
{
var popupCanvas = GetManager<AZTECHUIManager>().GetCanvas<PopupCanvas>();
dataManager.onMatchedMachineData += popupCanvas.GetPanel<ProductionProgressPanel>().SetProductionStatus;
dataManager.onMatchedMachineData += machineStatusItemManager.SetMachineData;
dataManager.onMatchedMachineData += popupCanvas.GetPanel<AlarmSituationPanel>().SetAlarmInfoItems;
dataManager.onSetMachineData += popupCanvas.GetPanel<MachineDetailDashboard>().SetDetailDashBoardInfo;
dataManager.onSetMachineData += popupCanvas.GetPanel<MachineDataDashboard>().SetDataDashobardInfo;
}
private readonly Dictionary<Type, Manager> managers = new();
private async UniTask<T> LoadManager<T>() where T : Manager
{
var manager = FindAnyObjectByType<T>();
if (manager == null)
{
Debug.LogError($"Manager not found: {typeof(T).Name}");
return null;
}
var type = typeof(T);
if (managers.ContainsKey(type))
{
Debug.LogWarning($"Duplicate Manager: {type.Name}");
return manager;
}
await manager.Init();
managers.Add(type, manager);
return manager;
}
public T GetManager<T>() where T : Manager
{
if (managers.TryGetValue(typeof(T), out var manager))
{
return manager as T;
}
return null;
}
}
}