149 lines
5.5 KiB
C#
149 lines
5.5 KiB
C#
|
|
using CG.UTility;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
/*******************************************************************************
|
|||
|
|
*Create By CG
|
|||
|
|
*Function <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
namespace ZXK.LouDiXvMuNiu
|
|||
|
|
{
|
|||
|
|
public class DataNiuHandler
|
|||
|
|
{
|
|||
|
|
public BindablePropertyRef<NiuData> CurNiuHandler = new BindablePropertyRef<NiuData>()
|
|||
|
|
{
|
|||
|
|
Value = new NiuData()
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
private List<NiuData> _niuDataArray = new List<NiuData>();
|
|||
|
|
public List<NiuData> NiuDataArray { get => _niuDataArray; }
|
|||
|
|
|
|||
|
|
private Dictionary<string, List<NiuData>> _niuStepTypeDic = new Dictionary<string, List<NiuData>>();
|
|||
|
|
public Dictionary<string, List<NiuData>> NiuStepTypeDic { get => _niuStepTypeDic; }
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// [ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>÷<EFBFBD>]]
|
|||
|
|
/// </summary>
|
|||
|
|
private Dictionary<string, Dictionary<string, float>> _examScore = new Dictionary<string, Dictionary<string, float>>();
|
|||
|
|
|
|||
|
|
public DataNiuHandler()
|
|||
|
|
{
|
|||
|
|
InitAppData();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void InitAppData()
|
|||
|
|
{
|
|||
|
|
string Niupath = Application.streamingAssetsPath+ ConstCtrl.JSON_PATH + "NiuData.txt";
|
|||
|
|
TxtFileHandle.ReadAllTxt(Niupath, (string vul) =>
|
|||
|
|
{
|
|||
|
|
_niuDataArray = JsonConvert.DeserializeObject<List<NiuData>>(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<NiuData> temp = new List<NiuData>();
|
|||
|
|
temp.Add(_niuDataArray[i]);
|
|||
|
|
_niuStepTypeDic.Add(_niuDataArray[i].ModuleName, temp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public NiuData GetNextStep()
|
|||
|
|
{
|
|||
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|||
|
|
for (int i = 0; i < tempData.Count; i++)
|
|||
|
|
{
|
|||
|
|
//if (tempData[i].id == tempData[tempData.Count - 1].id) return null;
|
|||
|
|
if (tempData[i].id== CurNiuHandler.Value.id+1)
|
|||
|
|
{
|
|||
|
|
return tempData[i];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public NiuData GetNextStep(int nextID)
|
|||
|
|
{
|
|||
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|||
|
|
for (int i = 0; i < tempData.Count; i++)
|
|||
|
|
{
|
|||
|
|
//if (tempData[i].id == tempData[tempData.Count - 1].id) return null;
|
|||
|
|
if (tempData[i].id == nextID)
|
|||
|
|
{
|
|||
|
|
return tempData[i];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ݳɼ<DDB3><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>سɼ<D8B3>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns>[ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>ܳɼ<DCB3><C9BC><EFBFBD>ʵ<EFBFBD>ʳɼ<CAB3>]</returns>
|
|||
|
|
public Queue<string[]> GetExamScore()
|
|||
|
|
{
|
|||
|
|
Queue<string[]> scoreFinish = new Queue<string[]>();
|
|||
|
|
|
|||
|
|
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)) 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;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="bigStepName">ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="smallStepName"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <param name="score"><3E><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ɵ÷<C9B5><C3B7><EFBFBD></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public float AddScore(string bigStepName, string smallStepName, float score)
|
|||
|
|
{
|
|||
|
|
if (!_examScore.ContainsKey(bigStepName))
|
|||
|
|
{
|
|||
|
|
_examScore.Add(bigStepName, new Dictionary<string, float>());
|
|||
|
|
}
|
|||
|
|
if (!_examScore[bigStepName].ContainsKey(smallStepName))
|
|||
|
|
{
|
|||
|
|
_examScore[bigStepName].Add(smallStepName, 0);
|
|||
|
|
}
|
|||
|
|
_examScore[bigStepName][smallStepName] += score;
|
|||
|
|
return _examScore[bigStepName][smallStepName];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|