YanCheng_Metrology/Assets/Scripts/Project/UI/UI_Item/UI_SubProcessItem.cs

81 lines
2.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class UI_SubProcessItem : BaseItem
{
public int processID;
public int subProcessID;
public int subProcessStepID;
public void Init(D_SubProcess d_SubProcess, int subProcessID)
{
this.processID = d_SubProcess.processId;
this.subProcessID = d_SubProcess.id;
this.subProcessStepID = d_SubProcess.subProcessStepes[0].id;
GetControl<TextMeshProUGUI>("subProcessItemName").text = d_SubProcess.subProcessName;
gameObject.name = subProcessID.ToString();
SwitchSubProcess(subProcessID);
ShowMe();
}
public override void ShowMe()
{
GameManager.EventMgr.AddEventListener<int>(Enum_EventType.SwitchSubProcess, SwitchSubProcess);
}
public override void HideMe()
{
GameManager.EventMgr.RemoveEventListener<int>(Enum_EventType.SwitchSubProcess, SwitchSubProcess);
}
/// <summary>
/// 控制按钮状态
/// </summary>
/// <param name="subProcess"></param>
private void SwitchSubProcess(int subProcess)
{
if (subProcessID == subProcess)
GetControl<Image>("learningTips").gameObject.SetActive(true);
else
GetControl<Image>("learningTips").gameObject.SetActive(false);
}
protected override void OnClick(string btnName)
{
base.OnClick(btnName);
switch (btnName)
{
case "subProcessBtn":
if (GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.CurrentSubProcessStep.triggersName.Count > 0)
{
GameManager.UIMgr.ShowPanel<UI_MessagePanel>(E_UI_Layer.System, (p) =>
{
p.Init("提示", "当前步骤还没有学完,确定要切换吗?", E_MessageType.Error, () =>
{
GameManager.ProcessMgr.HandoverProcess(processID, subProcessID, subProcessStepID);
//重置物体
StepStateControl.instance.InvokeInitStepState(GameManager.Instance.systemId, GameManager.ProcessMgr.d_Scheme.id, subProcessID);
GameManager.EventMgr.EventTrigger<int>(Enum_EventType.SwitchSubProcess, subProcessID);
//Debug.LogError(ProcessManager.Instance.subProcessStepTriggerID);
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
},
() =>
{
GameManager.UIMgr.HidePanel<UI_MessagePanel>();
});
});
}
break;
}
}
private void OnDestroy()
{
GameManager.EventMgr.RemoveEventListener<int>(Enum_EventType.SwitchSubProcess, SwitchSubProcess);
}
}