92 lines
3.1 KiB
C#
92 lines
3.1 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 string warnnigTips;
|
||
|
||
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"></param>
|
||
/// <param name="state">0 未完成所有步骤跳转,1 完成所有步骤跳转</param>
|
||
public void OnResetClick(bool isReset, int state)
|
||
{
|
||
warnnigTips = isReset ? "是否重新学习?" : "当前步骤还没有学完,确定要切换吗?";
|
||
if (state == 0)
|
||
OnClick("subProcessBtn");
|
||
else
|
||
CheckSubProcess();
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
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);
|
||
GameManager.EventMgr.EventTrigger<int>(Enum_EventType.SwitchSubProcess, subProcessID);
|
||
//Debug.LogError(ProcessManager.Instance.subProcessStepTriggerID);
|
||
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
|
||
});
|
||
});
|
||
}
|
||
|
||
private void OnDestroy()
|
||
{
|
||
GameManager.EventMgr.RemoveEventListener<int>(Enum_EventType.SwitchSubProcess, SwitchSubProcess);
|
||
}
|
||
}
|