104 lines
3.6 KiB
C#
104 lines
3.6 KiB
C#
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);
|
||
}
|
||
}
|