Files
Studio/Assets/NewStudioJYM/Scripts/ConnectDataManager.cs
2025-05-12 17:37:38 +09:00

100 lines
3.2 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace XED
{
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>> mqttData;
public List<SaveMQTTData> saveMQTTDatas = new List<SaveMQTTData>();
public Action<string, List<DataClass>> 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(string topicName)
{
List<DataClass> dataclasses = new List<DataClass>();
foreach (var data in this.loadMQTTData.dataList)
{
if (topicName == data.name)
{
dataclasses.Add(data);
}
}
mqttData?.Invoke(dataclasses);
}
public void SetMQTTData(SaveMQTTData saveMQTTData)
{
saveMQTTDatas.Clear();
saveMQTTDatas.Add(saveMQTTData);
}
public void SetFilterData(string className, DataClass dataClass)
{
List<DataClass> dataclasses = new List<DataClass>();
dataclasses.Add(dataClass);
apiData?.Invoke(className, dataclasses);
}
public void SetAPIData(SaveAPIData saveAPIData)
{
saveAPIDatas.Clear();
saveAPIDatas.Add(saveAPIData);
}
}
}