Files
JJBB/Assets/Project/Script/GUI/Guide/GuideItem.cs
2024-08-23 15:49:34 +08:00

143 lines
3.5 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 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
}