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

104 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System;
public class UI_SubProcessItem : BaseItem
{
public int processID;
public int subProcessID;
public int subProcessStepID;
public string warnnigTips;
private Action cancelCallback;
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();
warnnigTips = "当前步骤还没有学完,确定要切换吗?";
}
public override void ShowMe()
{
GameManager.EventMgr.AddEventListener<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);
}
/// <summary>
/// 根据传进来得状态去切换重新学习或者切换步骤
/// </summary>
/// <param name="isReset">true 是否重新学习 ,false 当前步骤还没有学完,确定要切换吗?</param>
/// <param name="state">0 未完成所有步骤跳转1 完成所有步骤跳转</param>
/// cancelCallback :当完成所有得步骤之后,在弹出得界面上选择重新学习之后,弹出确认框,如果选择取消就需要该方法第三个参数入参
public void OnResetClick(bool isReset, int state, Action _cancelCallback = null)
{
warnnigTips = isReset ? "是否重新学习?" : "当前步骤还没有学完,确定要切换吗?";
if (state == 0)
OnClick("subProcessBtn");
else
CheckSubProcess();
if (_cancelCallback != null)
cancelCallback += _cancelCallback;
}
protected override void OnClick(string btnName)
{
base.OnClick(btnName);
switch (btnName)
{
case "subProcessBtn":
if (GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.CurrentSubProcessStep.triggersName.Count > 0)
{
CheckSubProcess();
}
break;
}
}
/// <summary>
/// 是否重置学习或者跳步骤
/// </summary>
private void CheckSubProcess()
{
GameManager.UIMgr.ShowPanel<UI_MessagePanel>(E_UI_Layer.System, (p) =>
{
p.Init("提示", warnnigTips, E_MessageType.Error, () =>
{
GameManager.ProcessMgr.HandoverProcess(processID, subProcessID, subProcessStepID);
//重置物体
StepStateControl.instance.InvokeInitStepState(GameManager.Instance.systemId, GameManager.ProcessMgr.d_Scheme.id, subProcessID);
//通知ui高亮
GameManager.EventMgr.EventTrigger<int>(Enum_EventType.SwitchSubProcess, subProcessID);
//通知物体高亮
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
}, () =>
{
cancelCallback?.Invoke();
});
});
}
private void OnDestroy()
{
GameManager.EventMgr.RemoveEventListener<int>(Enum_EventType.SwitchSubProcess, SwitchSubProcess);
}
}