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
|
|||
|
}
|