Files
XRLib/Assets/Scripts/Simulator/UI/PropertyWindow/PlayerPropertyDataBase.cs
2026-02-25 16:30:12 +09:00

124 lines
3.2 KiB
C#

using Simulator.Data.Transport;
using System;
using UnityEngine;
using UVC.Core;
using UVC.Data.Core;
public class PlayerPropertyDataBase : SingletonScene<PlayerPropertyDataBase>
{
public PlayPropertyData data=new PlayPropertyData();
public event Action<PlayPropertyData> 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;
}
}
}