Files
Studio/Assets/NewStudioJYM/Scripts/ConnectDataManager.cs

100 lines
3.3 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Studio
{
public class ConnectDataManager : MonoBehaviour
{
private Dictionary<string, SaveConnectedData> saveData = new Dictionary<string, SaveConnectedData>();
public Action<string, SaveConnectedData> onConnectData;
public Action<SaveConnectedData> onLoadData;
private Dictionary<string, SaveConnectAlarmData> saveAlarmData = new Dictionary<string, SaveConnectAlarmData>();
public Action<string, SaveConnectAlarmData> onConnectAlarm;
public Action<SaveConnectAlarmData> onLoadAlarm;
private MQTTData loadMQTTData;
public Action<List<DataClass>, SaveFilterData> mqttData;
public List<SaveMQTTData> saveMQTTDatas = new List<SaveMQTTData>();
public Action<string, List<DataClass>, SaveFilterData> apiData;
public List<SaveAPIData> saveAPIDatas = new List<SaveAPIData>();
public override void AfterAwake()
{
var mqttJson = Resources.Load<TextAsset>("MQTTData").text;
loadMQTTData = JsonConvert.DeserializeObject<MQTTData>(mqttJson);
}
public void SaveData(string className, SaveConnectedData savedConnetedData)
{
if (saveData.ContainsKey(className))
{
saveData.Remove(className);
}
saveData.Add(className, savedConnetedData);
onConnectData?.Invoke(className, savedConnetedData);
}
public void LoadData(string className)
{
onLoadData?.Invoke(saveData[className]);
}
public void RemoveData(string className)
{
saveData.Remove(className);
}
public void SaveAlarmData(string alarmName, SaveConnectAlarmData saveConnectAlarmData)
{
if (saveAlarmData.ContainsKey(alarmName))
{
saveAlarmData.Remove(alarmName);
}
saveAlarmData.Add(alarmName, saveConnectAlarmData);
onConnectAlarm?.Invoke(alarmName, saveConnectAlarmData);
}
public void LoadAlarmData(string alarmName)
{
onLoadAlarm?.Invoke(saveAlarmData[alarmName]);
}
public void RemoveAlarmData(string alarmName)
{
saveAlarmData.Remove(alarmName);
}
public void SetFilterData(UI_DataBindingItem item)
{
List<DataClass> dataclasses = new List<DataClass>();
foreach (var data in this.loadMQTTData.dataList)
{
if (item.GetTopicName() == data.name)
{
dataclasses.Add(data);
}
}
mqttData?.Invoke(dataclasses, item.filterData);
}
public void SetMQTTData(SaveMQTTData saveMQTTData)
{
saveMQTTDatas.Clear();
saveMQTTDatas.Add(saveMQTTData);
}
public void SetFilterData(UI_DataBindingItem item, DataClass dataClass)
{
List<DataClass> dataclasses = new List<DataClass>();
dataclasses.Add(dataClass);
apiData?.Invoke(item.GetTopicName(), dataclasses, item.filterData);
}
public void SetAPIData(SaveAPIData saveAPIData)
{
saveAPIDatas.Clear();
saveAPIDatas.Add(saveAPIData);
}
}
}