using CG.UTility; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; #if UNITY_EDITOR || UNITY_STANDALONE_WIN using System.IO; using System.Text; #endif using UnityEngine; /******************************************************************************* *Create By CG *Function 安装部署 *******************************************************************************/ namespace ZXK.LouDiXvMuNiu { public class DataNiuHandler { public BindablePropertyRef CurNiuHandler = new BindablePropertyRef() { Value = new NiuData() }; private List _niuDataArray = new List(); public List NiuDataArray { get => _niuDataArray; } private Dictionary> _niuStepTypeDic = new Dictionary>(); public Dictionary> NiuStepTypeDic { get => _niuStepTypeDic; } /// /// 考核分数管理 /// [模块内容[三级任务名称,得分]] /// private Dictionary> _examScore = new Dictionary>(); public DataNiuHandler() { InitAppData(); } public void InitAppData() { //#if UNITY_EDITOR || UNITY_STANDALONE_WIN // string[] excelList = Directory.GetFiles(Application.streamingAssetsPath + ConstCtrl.EXCEL_PATH, "*.xlsx"); // ExcelUtility excel = new ExcelUtility(excelList[0]); // excel.ConvertToJson(Application.streamingAssetsPath + ConstCtrl.JSON_PATH + Path.GetFileNameWithoutExtension(excelList[0]) + ".txt", new UTF8Encoding(false)); //#endif string Niupath = Application.streamingAssetsPath + ConstCtrl.JSON_PATH + "NiuData.txt"; TxtFileHandle.ReadAllTxt(Niupath, (string vul) => { _niuDataArray = JsonConvert.DeserializeObject>(vul); for (int i = 0; i < _niuDataArray.Count; i++) { if (string.IsNullOrEmpty(_niuDataArray[i].TaskName)) continue; if (_niuStepTypeDic.ContainsKey(_niuDataArray[i].ModuleName)) { _niuStepTypeDic[_niuDataArray[i].ModuleName].Add(_niuDataArray[i]); } else { List temp = new List(); temp.Add(_niuDataArray[i]); _niuStepTypeDic.Add(_niuDataArray[i].ModuleName, temp); } } }); } public NiuData GetNextStep(NiuData curStep=null) { if (curStep == null) curStep = CurNiuHandler.Value; List tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType]; for (int i = 0; i < tempData.Count; i++) { if (tempData[i].id == curStep.id + 1) { return tempData[i]; } } return null; } public NiuData GetNextStep(int nextID) { List tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType]; for (int i = 0; i < tempData.Count; i++) { if (tempData[i].id == nextID) { return tempData[i]; } } return null; } /// /// 根据成绩单布局返回成绩 /// /// [模块内容,三级任务名称,总成绩,实际成绩] public Queue GetExamScore() { Queue scoreFinish = new Queue(); NiuData curstep = null; NiuData nextstep = null; float curStepChildTotalScore = 0; float realityScore = 0; for (int i = 0; i < _niuDataArray.Count; i++) { if (string.IsNullOrEmpty(_niuDataArray[i].TaskName)|| _niuDataArray[i].ThreeTaskName==ConstCtrl.ThreeTaskName_PeoplePlan) continue; curstep = _niuDataArray[i]; if (i == _niuDataArray.Count - 1) { nextstep = null; } else { nextstep = _niuDataArray[i + 1]; } curStepChildTotalScore += curstep.Score; if (nextstep == null || !nextstep.ThreeTaskName.Equals(curstep.ThreeTaskName)) { realityScore = 0; if (_examScore.ContainsKey(curstep.ModuleName) && _examScore[curstep.ModuleName].ContainsKey(curstep.ThreeTaskName)) { realityScore = _examScore[curstep.ModuleName][curstep.ThreeTaskName]; } scoreFinish.Enqueue(new string[] { curstep.ModuleName, curstep.ThreeTaskName, curStepChildTotalScore.ToString(), realityScore.ToString() }); curStepChildTotalScore = 0; } } return scoreFinish; } /// /// 操作正确步骤后得分 /// /// 模块内容 /// 三级任务名称 /// 当前步骤可得分数 /// public float AddScore(string bigStepName, string smallStepName, float score) { if (!_examScore.ContainsKey(bigStepName)) { _examScore.Add(bigStepName, new Dictionary()); } if (!_examScore[bigStepName].ContainsKey(smallStepName)) { _examScore[bigStepName].Add(smallStepName, 0); } _examScore[bigStepName][smallStepName] += score; return _examScore[bigStepName][smallStepName]; } } }