using System; using System.Collections.Generic; using UnityEngine; public class ProcessManager : MonoBehaviour { List excelList = new(); List currList = new(); float totalWeight; ExcelData excelData = new(); public void Init() { excelData.Init(); foreach (var loData in excelData.allProcessData) { ProcessModel processModel = GetProcessModel_Excel(loData.subModule, loData.task); if (processModel != null) { processModel.weight += loData.weight; } else { processModel = new ProcessModel(); processModel.subModule = loData.subModule; processModel.task = loData.task; processModel.weight = loData.weight; excelList.Add(processModel); } totalWeight += loData.weight; } //foreach (var item in excelList) //{ // Debug.Log(item.subModule + "===" + item.task); //} } public void SetProcess(string subModule,string task) { ProcessModel processModel_Excel = GetProcessModel_Excel(subModule, task); if (processModel_Excel != null) { ProcessModel processModel_Curr = GetProcessModel_Curr(subModule, task); if (processModel_Curr == null) { processModel_Curr = new ProcessModel(); processModel_Curr.subModule = subModule; processModel_Curr.task = task; processModel_Curr.weight = processModel_Excel.weight; currList.Add(processModel_Curr); } } } /// /// 获取当前进度百分比 /// public float GetProcess() { int currWeight = 0; foreach (var item in currList) { currWeight += item.weight; } return (float)Math.Round(currWeight / totalWeight, 2) * 100; } public void Clear() { currList.Clear(); } ProcessModel GetProcessModel_Excel(string subModule, string task) { for (int i = 0; i < excelList.Count; i++) { if (subModule == excelList[i].subModule && task == excelList[i].task) { return excelList[i]; } } return null; } ProcessModel GetProcessModel_Curr(string subModule, string task) { for (int i = 0; i < currList.Count; i++) { if (subModule == currList[i].subModule && task == currList[i].task) { return currList[i]; } } return null; } }