Files
XRLib/Assets/Scripts/SampleProject/SceneMain.cs
2025-07-24 18:28:09 +09:00

84 lines
2.7 KiB
C#

using System;
using System.Threading.Tasks;
using UnityEngine;
using UVC.Core;
using UVC.Data;
using UVC.Data.Core;
using UVC.Data.Http;
using UVC.Factory.Alarm;
using UVC.Factory.Component;
using UVC.Factory.Playback;
using UVC.UI.Loading;
using UVC.UI.Tooltip;
namespace SampleProject
{
[DefaultExecutionOrder(90)]
public class SceneMain : SingletonScene<SceneMain>
{
public Action Initialized;
/// <summary>
/// 초기 화 메서드입니다.
/// Awake 메서드에서 호출되며, MonoBehaviour가 생성될 때 한 번만 실행됩니다.
/// </summary>
protected override void Init()
{
if (!TooltipManager.Instance.IsInitialized) TooltipManager.Instance.Initialize();
AppMain.Instance.Initialized += OnAppInitialized;
}
/// <summary>
/// AGV 관리자가 생성될 때 발생하는 이벤트를 처리합니다.
/// </summary>
/// <remarks>이 메서드는 AGV 관리자 생성과 관련된 필요한 초기화 또는 설정 작업을 수행하기 위한 것입니다.
/// 내부적으로 호출되며 외부 코드에서 직접 사용하도록 의도된 것이 아닙니다.
///</remarks>
internal void OnAGVCreated()
{
AlarmManager.Instance.Run();
}
private async void OnAppInitialized()
{
// AGVManager 생성 시 이벤트 처리
AGVManager.Instance.OnAGVCreated += OnAGVCreated;
PlaybackService.Instance.OnStopPlayback += OnStopPlayback;
await requestDataAsync();
if (Initialized != null)
{
Initialized.Invoke();
}
//MqttReceiver 시작
DataRepository.Instance.MqttReceiver.Start();
}
private async Task requestDataAsync()
{
UILoading.Show();
//Debug.Log("Requesting BaseInfo data...");
//var httpFetcher = DataRepository.Instance.HttpFetcher;
//var splitRequest = new HttpRequestConfig(URLList.Get("baseinfo"))
// .setSplitResponseByKey(true) // 응답을 키별로 분할
// .AddSplitConfig("AGV", DataMapperValidator.Get("AGV")) // "AGV" 키에 대한 매퍼, Validator 설정
// .AddSplitConfig("ALARM", DataMapperValidator.Get("ALARM")); // "ALARM" 키에 대한 매퍼, Validator 설정
//httpFetcher.Add("baseInfo", splitRequest);
//await httpFetcher.Excute("baseInfo");
//Debug.Log("BaseInfo data request completed.");
UILoading.Hide();
}
private async void OnStopPlayback()
{
await requestDataAsync();
}
}
}