2025-03-10 10:18:11 +08:00

87 lines
3.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/*******************************************************************************
*Create By CG
*Function 考试成绩面板控制-每个一级工序相关内容
*******************************************************************************/
namespace ZXK.ZPS
{
public class FirstProcessItemCtrl : MonoBehaviour
{
[SerializeField]//第一工序
private Text _firstProcessTxt = null;
[SerializeField]//二级工序容器
private Transform _secondProcessContain = null;
[SerializeField]//二级工序预制体
private GameObject _secondProcessItemPrefab = null;
[SerializeField]//流程得分
private Text _processScoreTxt = null;
[SerializeField]//总计得分
private Text _totalScoreTxt = null;
/// <summary>
/// 初始化第一工序
/// </summary>
/// <param name="firstProcessName">一级工序</param>
/// <param name="secondRightName">正确二级工序</param>
/// <param name="secondActualProcess">二级工序内相关操作</param>
/// <param name="processScore">流程得分</param>
/// <param name="totalScore">总计得分</param>
public void InitialFirstItem(string firstProcessName, string[] secondRightName, Dictionary<string, DataExamModel> secondActualProcess, ref int processScore, ref int totalScore)
{
_firstProcessTxt.text = firstProcessName;
int toolScore = 0;
if (secondActualProcess == null)
{//此一级工序没有做
for (int i = 0; i < secondRightName.Length; i++)
{
toolScore = 0;//工具得分
GameObject firstProcess = Instantiate(_secondProcessItemPrefab, _secondProcessContain);
SecondProcessItemCtrl firstProcessCtrl = firstProcess.GetComponent<SecondProcessItemCtrl>();
firstProcessCtrl.InitialSecondItem(secondRightName[i], null, null, null, ref toolScore);
}
}
else
{
//进入流程二级工序
int index = 0;
foreach (string item in secondActualProcess.Keys)
{
GameObject firstProcess = Instantiate(_secondProcessItemPrefab, _secondProcessContain);
SecondProcessItemCtrl firstProcessCtrl = firstProcess.GetComponent<SecondProcessItemCtrl>();
//toolScore = 0;//工具得分
firstProcessCtrl.InitialSecondItem(secondRightName[index], item, secondActualProcess[item].RightTools, secondActualProcess[item].ErroTools, ref toolScore);
//获取流程得分
if (item.Equals(secondRightName[index]))
{
processScore++;
}
index++;
}
totalScore = processScore + toolScore;
//完全没进入流程的二级工序
if (secondRightName.Length > secondActualProcess.Count)
{
for (int i = secondActualProcess.Count; i < secondRightName.Length; i++)
{
GameObject firstProcess = Instantiate(_secondProcessItemPrefab, _secondProcessContain);
SecondProcessItemCtrl firstProcessCtrl = firstProcess.GetComponent<SecondProcessItemCtrl>();
firstProcessCtrl.InitialSecondItem(secondRightName[i], null, null, null, ref toolScore);
}
}
}
_processScoreTxt.text = processScore.ToString();
_totalScoreTxt.text = totalScore.ToString();
}
private void Update()
{
float hight = _secondProcessContain.GetComponent<RectTransform>().sizeDelta.y;
transform.GetComponent<RectTransform>().sizeDelta = new Vector2(transform.GetComponent<RectTransform>().sizeDelta.x, hight);
}
}
}