Files
Studio/Assets/Scripts/XED/Machine/DataDistributer.cs
2025-03-17 10:54:27 +09:00

90 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using System.Reflection;
namespace XED.Machine
{
public class DataDistributer : MonoBehaviour
{
public event Action<string> onAMRDestinationDataReceived;
public event Action<string,ASRS_Lifter_Class> onLifterDataReceived;
public event Action<string,ASRS_StackerCrane_Class> onStackerDataReceived;
public event Action<string,ASRS_Class> onASRSDataReceived;
public event Action<string,Supplier_Class> onSupplierDataReceived;
public event Action<string,COBOT_Class> onCobotDataReceived;
public event Action<string,AMR_Class> onAMRDataReceived;
void Start()
{
FindObjectOfType<DataReader>().onMessageReceived += DataDistribute;
}
public void DataDistribute(string topic, string data)
{
AMR_Class amr;
ASRS_Lifter_Class lifter;
ASRS_StackerCrane_Class stacker;
ASRS_Class asrs;
Supplier_Class supplier;
COBOT_Class cobot;
switch (topic)
{
case "amr":
onAMRDestinationDataReceived?.Invoke(data);
break;
case "lifter":
lifter = JsonConvert.DeserializeObject<ASRS_Lifter_Class>(data);
onLifterDataReceived?.Invoke(topic, lifter);
break;
case "stacker":
stacker = JsonConvert.DeserializeObject<ASRS_StackerCrane_Class>(data);
onStackerDataReceived?.Invoke(topic, stacker);
break;
case "cargo":
asrs = JsonConvert.DeserializeObject<ASRS_Class>(data);
onASRSDataReceived?.Invoke(topic, asrs);
break;
case "supplier":
supplier = JsonConvert.DeserializeObject<Supplier_Class>(data);
onSupplierDataReceived?.Invoke(topic, supplier);
break;
case "H-ACS.PLC-SC_Cobot_Opc1":
cobot = JsonConvert.DeserializeObject<COBOT_Class>(data);
onCobotDataReceived?.Invoke(topic, cobot);
break;
case "H-ACS.PLC-SC_Cobot_Opc2":
cobot = JsonConvert.DeserializeObject<COBOT_Class>(data);
onCobotDataReceived?.Invoke(topic, cobot);
break;
case "H-ACS.PLC-SC_Cobot_Opc3":
cobot = JsonConvert.DeserializeObject<COBOT_Class>(data);
onCobotDataReceived?.Invoke(topic, cobot);
break;
case "H-ACS.PLC-SC_Cobot_Opc4":
cobot = JsonConvert.DeserializeObject<COBOT_Class>(data);
onCobotDataReceived?.Invoke(topic, cobot);
break;
case "R_137.ACS":
amr = JsonConvert.DeserializeObject<AMR_Class>(data);
onAMRDataReceived?.Invoke(topic, amr);
break;
case "R_147.ACS":
amr = JsonConvert.DeserializeObject<AMR_Class>(data);
onAMRDataReceived?.Invoke(topic, amr);
break;
case "R_153.ACS":
amr = JsonConvert.DeserializeObject<AMR_Class>(data);
onAMRDataReceived?.Invoke(topic, amr);
break;
case "R_156.ACS":
amr = JsonConvert.DeserializeObject<AMR_Class>(data);
onAMRDataReceived?.Invoke(topic, amr);
break;
}
}
}
}