146 lines
4.6 KiB
C#
146 lines
4.6 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Xml;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.Networking;
|
|||
|
|
using ZXKFramework;
|
|||
|
|
|
|||
|
|
public class ResultManager : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
ResultInfo resultInfo;
|
|||
|
|
StepInfo stepInfo;
|
|||
|
|
string title;
|
|||
|
|
int appid;
|
|||
|
|
string originId;
|
|||
|
|
[Header("<22>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ijһ<C4B3><D2BB><EFBFBD><EFBFBD>")]
|
|||
|
|
public bool replaceStep;
|
|||
|
|
int seq;
|
|||
|
|
public void Init()
|
|||
|
|
{
|
|||
|
|
seq = 1;
|
|||
|
|
StartCoroutine(XmlReader());
|
|||
|
|
}
|
|||
|
|
public void StartStep(string subModule, string task, int expectTime, string stepType, string answer, string yourAnswer)
|
|||
|
|
{
|
|||
|
|
if (resultInfo == null)
|
|||
|
|
{
|
|||
|
|
resultInfo = new ResultInfo();
|
|||
|
|
resultInfo.title = title;
|
|||
|
|
resultInfo.status = 2;
|
|||
|
|
resultInfo.startTime = UnityTools.GetTimeStamp();
|
|||
|
|
resultInfo.appid = appid;
|
|||
|
|
resultInfo.originId = originId;
|
|||
|
|
}
|
|||
|
|
stepInfo = GetStep(subModule, task);
|
|||
|
|
if (stepInfo == null)
|
|||
|
|
{
|
|||
|
|
stepInfo = new StepInfo();
|
|||
|
|
}
|
|||
|
|
else if (!replaceStep)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(stepInfo.endTime))
|
|||
|
|
{
|
|||
|
|
stepInfo = null;
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
stepInfo.seq = seq;
|
|||
|
|
seq++;
|
|||
|
|
stepInfo.SetSubModule(subModule);
|
|||
|
|
stepInfo.SetStepType(stepType);
|
|||
|
|
stepInfo.SetAnswer(answer);
|
|||
|
|
stepInfo.SetYourAnswer(yourAnswer);
|
|||
|
|
stepInfo.title = task;
|
|||
|
|
stepInfo.startTime = UnityTools.GetTimeStamp();
|
|||
|
|
stepInfo.expectTime = expectTime;
|
|||
|
|
stepInfo.repeatCount += 1;
|
|||
|
|
resultInfo.steps.Add(stepInfo);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void EndStep(string subModule, string task, int score, int maxScore, string scoringModel, string yourAnswer)
|
|||
|
|
{
|
|||
|
|
//stepInfo = GetStep(subModule, task);
|
|||
|
|
if (stepInfo == null) return;
|
|||
|
|
if (stepInfo.GetSubModule() != subModule || stepInfo.title != task) return;
|
|||
|
|
stepInfo.endTime = UnityTools.GetTimeStamp();
|
|||
|
|
stepInfo.timeUsed = UnityTools.TimeStampDiffSeconds(stepInfo.startTime, stepInfo.endTime);
|
|||
|
|
stepInfo.score = score;
|
|||
|
|
stepInfo.maxScore = maxScore;
|
|||
|
|
stepInfo.scoringModel = scoringModel;
|
|||
|
|
if (!string.IsNullOrEmpty(yourAnswer))
|
|||
|
|
{
|
|||
|
|
stepInfo.SetYourAnswer(yourAnswer);
|
|||
|
|
}
|
|||
|
|
stepInfo.evaluation = "";
|
|||
|
|
stepInfo.remarks = "";
|
|||
|
|
|
|||
|
|
resultInfo.status = 1;
|
|||
|
|
resultInfo.score = score;
|
|||
|
|
resultInfo.endTime = UnityTools.GetTimeStamp();
|
|||
|
|
resultInfo.timeUsed = UnityTools.TimeStampDiffSeconds(resultInfo.startTime, resultInfo.endTime);
|
|||
|
|
}
|
|||
|
|
public string ToJson()
|
|||
|
|
{
|
|||
|
|
if (resultInfo == null) return "";
|
|||
|
|
return UnityTools.GetJson(resultInfo);
|
|||
|
|
}
|
|||
|
|
public List<StepInfo> ToList()
|
|||
|
|
{
|
|||
|
|
if (resultInfo == null) return null;
|
|||
|
|
return resultInfo.steps;
|
|||
|
|
}
|
|||
|
|
public void ClearResult()
|
|||
|
|
{
|
|||
|
|
stepInfo = null;
|
|||
|
|
resultInfo.steps.Clear();
|
|||
|
|
seq = 1;
|
|||
|
|
}
|
|||
|
|
StepInfo GetStep(string subModule, string task)
|
|||
|
|
{
|
|||
|
|
if (resultInfo == null) return null;
|
|||
|
|
for (int i = 0; i < resultInfo.steps.Count; i++)
|
|||
|
|
{
|
|||
|
|
if (subModule == resultInfo.steps[i].GetSubModule() && task == resultInfo.steps[i].title)
|
|||
|
|
{
|
|||
|
|
return resultInfo.steps[i];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><>ȡStreamingAsset<65>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
IEnumerator XmlReader()
|
|||
|
|
{
|
|||
|
|
string path = Application.streamingAssetsPath + "/ResultConfig.xml";
|
|||
|
|
using UnityWebRequest unityWebRequest = UnityWebRequest.Get(path);
|
|||
|
|
yield return unityWebRequest.SendWebRequest();
|
|||
|
|
if (unityWebRequest.error != null)
|
|||
|
|
Debug.Log(unityWebRequest.error);
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
string content = unityWebRequest.downloadHandler.text;
|
|||
|
|
XmlDocument doc = new();
|
|||
|
|
doc.LoadXml(content);
|
|||
|
|
XmlNodeList nodeList = doc.SelectSingleNode("root").ChildNodes;
|
|||
|
|
foreach (XmlElement element in nodeList)
|
|||
|
|
{
|
|||
|
|
if (element.Name == "Title")
|
|||
|
|
{
|
|||
|
|
title = element.InnerText;
|
|||
|
|
}
|
|||
|
|
if (element.Name == "Appid")
|
|||
|
|
{
|
|||
|
|
appid = Convert.ToInt32(element.InnerText);
|
|||
|
|
}
|
|||
|
|
if (element.Name == "OriginId")
|
|||
|
|
{
|
|||
|
|
originId = element.InnerText;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|