143 lines
3.5 KiB
C#
143 lines
3.5 KiB
C#
using UnityEngine;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using Module.Log;
|
||
|
||
public enum TriggerType
|
||
{
|
||
AcceptMission,
|
||
ComplateMission,
|
||
LevelUp,
|
||
FinishMission,
|
||
UIOpen,
|
||
}
|
||
|
||
public class GuideItem : MonoBehaviour
|
||
{
|
||
|
||
public int _GuideID;
|
||
public TriggerType _TriggerType;
|
||
public int _TriggerMissionID;
|
||
public string _TriggetParam;
|
||
public List<GuideStepBase> _GuideSteps = new List<GuideStepBase>();
|
||
public int _RestartIdx = 0;
|
||
public string _CloseUIFinish;
|
||
public bool _ClearOtherUI = true;
|
||
public bool _RepeatGuide = false;
|
||
public int _LimitLv = 60;
|
||
public bool _AutoNextMainMission = true;
|
||
|
||
private int _GuideStep = 0;
|
||
|
||
public void InitSteps()
|
||
{
|
||
var steps = GetComponentsInChildren<GuideStepBase>(true);
|
||
_GuideSteps = new List<GuideStepBase>(steps);
|
||
foreach (var step in _GuideSteps)
|
||
{
|
||
step.BelongGuideItem = this;
|
||
step.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
|
||
public void CloseUI(string uiName)
|
||
{
|
||
//if (_CloseUIFinish == uiName && gameObject.activeInHierarchy)
|
||
//{
|
||
// //FinishGuide();
|
||
// NextStep();
|
||
//}
|
||
}
|
||
|
||
public void StartGuide()
|
||
{
|
||
gameObject.SetActive(true);
|
||
Guide.Instance.UpdateGuideID(_GuideID);
|
||
for (int i = 0; i < GuideLogic.Instance().BtnFuncs.Count; ++i)
|
||
{
|
||
GuideLogic.Instance().BtnFuncs[i].UpdateFuncState();
|
||
}
|
||
|
||
if (_GuideSteps.Count == 0)
|
||
{
|
||
FinishGuide();
|
||
return;
|
||
}
|
||
|
||
if (_ClearOtherUI)
|
||
{
|
||
UIManager.ClosePopUI();
|
||
LuaUIManager.Instance.ClearAllPop(true);
|
||
}
|
||
|
||
_GuideStep = 0;
|
||
_GuideSteps[_GuideStep].StartGuideStep();
|
||
|
||
}
|
||
|
||
public void FinishGuide()
|
||
{
|
||
gameObject.SetActive(false);
|
||
GuideLogic.Instance().SetForceBackActive(false);
|
||
GuideLogic.Instance().FinishGuide(this);
|
||
//完成任务的时候如果有指引的话话设置为true,在接到任务的时候不会寻路
|
||
//所以要在指引结束的地方设置为false
|
||
GuideLogic._isShowCompleteMissionGuide = false;
|
||
LogModule.DebugLog("FinishGuide");
|
||
for (int i = 0; i < _GuideSteps.Count; ++i)
|
||
{
|
||
_GuideSteps[i].StopGuideStep();
|
||
}
|
||
UIManager.CloseUI(UIInfo.GuideRoot);
|
||
ShowNextMission();
|
||
}
|
||
|
||
public void NextStep()
|
||
{
|
||
StartCoroutine(StartNext());
|
||
}
|
||
|
||
public IEnumerator StartNext()
|
||
{
|
||
yield return new WaitForFixedUpdate();
|
||
++_GuideStep;
|
||
if (_GuideStep > _GuideSteps.Count - 1)
|
||
{
|
||
FinishGuide();
|
||
yield break;
|
||
}
|
||
_GuideSteps[_GuideStep].StartGuideStep();
|
||
}
|
||
|
||
public void ReStart()
|
||
{
|
||
StartCoroutine(ReStartLater());
|
||
}
|
||
|
||
public IEnumerator ReStartLater()
|
||
{
|
||
yield return new WaitForEndOfFrame();
|
||
_GuideStep = _RestartIdx;
|
||
_GuideSteps[_GuideStep].StartGuideStep();
|
||
}
|
||
|
||
#region nextMission
|
||
|
||
private int _NextMissionID = -1;
|
||
|
||
public void SetNextMission(int nextMissionID)
|
||
{
|
||
_NextMissionID = nextMissionID;
|
||
}
|
||
|
||
public void ShowNextMission()
|
||
{
|
||
if (GuideLogic.Instance().NextMissionID > 0 && _AutoNextMainMission)
|
||
{
|
||
GuideLogic.MissionFindNext(GuideLogic.Instance().NextMissionID);
|
||
}
|
||
GuideLogic.Instance().NextMissionID = -1;
|
||
}
|
||
#endregion
|
||
}
|