using Simulator.Data.Transport; using System; using UnityEngine; using UVC.Core; using UVC.Data.Core; public class PlayerPropertyDataBase : SingletonScene { public PlayPropertyData data=new PlayPropertyData(); public event Action onPlay; public static bool isPlaying = false; public void PlayFunc() { onPlay?.Invoke(data); isPlaying = true; } public void GetMqttData(IDataObject data) { DataObject? obj = data as DataObject; if (obj == null) return; var datas = obj.GetDataObject("data"); if (datas == null) return; CollectSimulationStateData(datas.GetString("status")); } public void CollectSimulationStateData(string state) { switch (state) { case "pending": data.simulation_State = "시뮬레이션 실행 대기중"; break; case "created": data.simulation_State = "시뮬레이션 생성 됨"; break; case "running": data.simulation_State = "시뮬레이션 실행 중"; break; case "completed": data.simulation_State = "시뮬레이션 완료"; break; case "failed": data.simulation_State = "시뮬레이션 실행 실패"; break; case "cancelled": data.simulation_State = "시뮬레이션 취소 됨"; break; } } public void CollectGenerateData(int count) { data.total_Generate += count; } public void CollectUseData(int count) { data.total_Use += count; } public void CollectTotalAGVData(int count) { data.agv_Total += count; } public void CollectMovingAGVData(int count) { data.agv_Moving += count; } public void CollectIdleData(int count) { data.agv_Idle += count; } public void CollectLoadingData(int count) { data.agv_Loading += count; } public void CollectSpawnAGV(AGV agv) { CollectTotalAGVData(1); CollectIdleData(1); agv.onStateUpdated += CollectChangeAGVStateData; } public void CollectChangeAGVStateData(AGVDataType before, AGVDataType after) { switch (before) { case AGVDataType.Idle: CollectIdleData(-1); break; case AGVDataType.LoadingStart: CollectLoadingData(-1); break; case AGVDataType.UnLoadingStart: CollectLoadingData(-1); break; case AGVDataType.Moving: CollectMovingAGVData(-1); break; } switch (after) { case AGVDataType.Idle: CollectIdleData(1); break; case AGVDataType.LoadingStart: CollectLoadingData(1); break; case AGVDataType.UnLoadingStart: CollectLoadingData(1); break; case AGVDataType.Moving: CollectMovingAGVData(1); break; } } }