using System; using System.Collections.Generic; using System.Reflection; using static MQTT; using WI; using System.Text.RegularExpressions; using UnityEngine; namespace CHN { public class DataManager : MonoBehaviour, ISingle { public Action onCompleteInfo; public Action onSimpleInfo; private Dictionary machineTable = new(); private Dictionary includeFields = new(); private HashSet samples = new(); private List simpleField; private string simplePath; public override void AfterAwake() { var machines = FindObjectsOfType(); foreach (var machine in machines) { if (string.IsNullOrEmpty(machine.code)) continue; if (machineTable.ContainsKey(GapRemove(machine.code))) continue; machineTable.Add(GapRemove(machine.code), new()); } var fileds = typeof(CompleteInfo).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); //simpleField= JsonConvert.DeserializeObject>(simplePath); for (int i = 0; i < 6; i++) { samples.Add(fileds[i].Name); } } public void MachineMatching(List machineInfos) { foreach (CompleteInfo info in machineInfos) { var id = info.workcd; var name = GapRemove(id); if (machineTable.ContainsKey(name)) { machineTable[name] = info; } } } public void GetSimpleCompleteData(Machine machine) { if (string.IsNullOrEmpty(machine.code)) return; var machineName = GapRemove(machine.code); if (includeFields.ContainsKey(machineName)) { includeFields[machineName].machineInfo = machineTable[machineName]; } else { var simpleTest = new SimpleField(); simpleTest.machineName = machineName; simpleTest.machineInfo = machineTable[machineName]; simpleTest.simpleField = samples; includeFields.Add(machineName, simpleTest); } //foreach(var simple in simpleField) //{ // var machineName = GapRemove(machine.name); // if (simple.machineName.Equals(machineName)) // { // simple.machineInfo = machineTable[machineName]; // onSimpleInfo?.Invoke(simple); // break; // } //} onSimpleInfo?.Invoke(machine, includeFields[machineName]); } public void SimpleFiledChange(Machine machine, HashSet fields) { if (string.IsNullOrEmpty(machine.code)) return; var machineName = GapRemove(machine.code); var simpleField = includeFields[machineName]; simpleField.simpleField = fields; includeFields[machineName] = simpleField; } public void GetCompleteInfo(Machine machine) { if (string.IsNullOrEmpty(machine.code)) return; var machineName = GapRemove(machine.code); var simpleField = includeFields[machineName]; onCompleteInfo?.Invoke(machine, simpleField); } string GapRemove(string name) { return Regex.Replace(name, @"\s", ""); } } public class SimpleField { public string machineName; public CompleteInfo machineInfo; public HashSet simpleField; } }