using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System.Linq; using UnityEditor; using System; public class BianDianZhanProxy : DataProxy { List StepInfos; public override void OnRegister() { InitData(); } public void InitData() { //表格读取 string path = Application.streamingAssetsPath + "/Config/变电站巡视.csv"; StepInfos = ReadOperationFromTable(path); } /// /// 获取所有步骤信息 /// /// public List GetStepInfos() { return StepInfos; } /// /// 通过ID获取步骤信息 /// /// public StepInfo GetStepInfoById(int id) { return StepInfos.Find(stepInfo => stepInfo.id == id); } public override void OnRemove() { } /// /// 从表格读取流程信息 /// /// /// private List ReadOperationFromTable(string path) { List tmpInfos = new List(); using (StreamReader streamReader = new StreamReader(path, System.Text.Encoding.UTF8)) { string tmpStepInfo = streamReader.ReadToEnd(); if (tmpStepInfo.Contains("\r")) tmpStepInfo = tmpStepInfo.Replace("\r", ""); string[] tempStepInfos = tmpStepInfo.Split('\n'); for (int i = 1; i < tempStepInfos.Length; i++) { string operationInfo = tempStepInfos[i]; string[] operationInfoElements = operationInfo.Split(','); StepInfo tmpInfo = new StepInfo(); for (int j = 0; j < operationInfoElements.Length; j++) { if (j == 0) tmpInfo.id = int.Parse( operationInfoElements[0]); if (j == 1) tmpInfo.stepName = operationInfoElements[1]; if (j == 2) tmpInfo.stepDesctiption = operationInfoElements[2]; if (j == 3) tmpInfo.stepScore = float.Parse(operationInfoElements[3]); } tmpInfos.Add(tmpInfo); } } return tmpInfos; } /// /// 将Operation信息写入到表格中 /// public void WriteOprationInfoToTable(List _infos, string _path) { using (FileStream fs = new FileStream(_path, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8)) { sw.WriteLine("id" + "," + "StepName" + "," + "StepDescription" + "," + "StepScore"); for (int i = 0; i < _infos.Count; i++) { string operationInfo = _infos[i].id + "," + _infos[i].stepName + "," + _infos[i].stepDesctiption + "," + _infos[i].stepScore; operationInfo = RemoveLineEndings(operationInfo); if (i == _infos.Count - 1) sw.Write(operationInfo); else sw.WriteLine(operationInfo); } } } } public string RemoveLineEndings(string value) { if (string.IsNullOrEmpty(value)) { return value; } string lineSeparator = ((char)0x2028).ToString(); string paragraphSeparator = ((char)0x2029).ToString(); return value.Replace("\r\n", string.Empty) .Replace("\n", string.Empty) .Replace("\r", string.Empty) .Replace(lineSeparator, string.Empty) .Replace(paragraphSeparator, string.Empty); } } [Serializable] public class StepInfoManager { public List S = new List(); } [Serializable] public class StepInfoJson { public int id; /// /// 步骤分数 /// public float stepScore; } [Serializable] public class StepInfo { public int id; /// /// 步骤名称 /// public string stepName; /// /// 步骤描述 /// public string stepDesctiption; /// /// 步骤分数 /// public float stepScore; }