| | |
| | | List<int> allGuides = new List<int>();
|
| | | public List<int> completeGuidesBuf = new List<int>();
|
| | |
|
| | | //因其他原因导致的等待显示的引导窗口,在OpenWindow时会触发复查,但时机太晚增加关闭界面时触发
|
| | | List<string> waitGuideWinNames = new List<string>(); |
| | |
|
| | | bool inited = false;
|
| | |
|
| | | public event Action guideStepChangeEvent;
|
| | | public event Action guideBeginEvent;
|
| | | public event Action<int> guideCompletedEvent;
|
| | | |
| | |
|
| | | public override void Init()
|
| | | {
|
| | |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
|
| | | PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
|
| | | UIManager.Instance.OnOpenWindow += OnOpenWindow;
|
| | | UIManager.Instance.OnCloseWindow += OnCloseWindow;
|
| | | }
|
| | |
|
| | | public override void Release()
|
| | |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
| | | PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
|
| | | UIManager.Instance.OnOpenWindow -= OnOpenWindow;
|
| | | UIManager.Instance.OnCloseWindow -= OnCloseWindow;
|
| | | }
|
| | |
|
| | | void OnOpenWindow(UIBase _ui)
|
| | |
| | | if (guides != null)
|
| | | {
|
| | | TryStartNewBieGuides(guides);
|
| | | }
|
| | | }
|
| | |
|
| | | //关闭其他界面时复查有没需要等待的引导
|
| | | void OnCloseWindow(UIBase _ui)
|
| | | {
|
| | | foreach (var winName in waitGuideWinNames)
|
| | | {
|
| | | var guides = GuideConfig.GetGuideListByWinName(winName);
|
| | | if (guides != null)
|
| | | {
|
| | | if (TryStartNewBieGuides(guides))
|
| | | {
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.MissionClick);
|
| | | if (guides != null)
|
| | | {
|
| | | TryStartNewBieGuides(guides);
|
| | | TryStartNewBieGuides(guides, true);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | //找出可进行的引导
|
| | | public void TryStartNewBieGuides(List<int> _guides)
|
| | | //isOrgTrigger 是否是原生触发,如点击的只能是原生触发,其他的都不能
|
| | | public bool TryStartNewBieGuides(List<int> _guides, bool isOrgTrigger = false)
|
| | | {
|
| | | if (!inited)
|
| | | {
|
| | |
| | |
|
| | | if (_guides == null)
|
| | | {
|
| | | return;
|
| | | return false;
|
| | | }
|
| | |
|
| | | if (currentGuide != 0)
|
| | | {
|
| | | return;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var ok = false;
|
| | | for (int i = 0; i < _guides.Count; i++)
|
| | | {
|
| | | var guideId = _guides[i];
|
| | |
| | | continue;
|
| | | }
|
| | |
|
| | | ok = CheckGuideCondition(guideId);
|
| | | if (ok && currentGuide != guideId)
|
| | | if (currentGuide != guideId && CheckGuideCondition(guideId, isOrgTrigger))
|
| | | {
|
| | | StartNewBieGuide(guideId);
|
| | | break;
|
| | | return StartNewBieGuide(guideId);
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | return false;
|
| | | }
|
| | |
|
| | |
|
| | | public void StartNewBieGuide(int _id)
|
| | | bool WaitGuide(int _id)
|
| | | {
|
| | | var config = GuideConfig.Get(_id);
|
| | | if (UIManager.Instance.ExistAnyFullScreenOrMaskWin(config.WinName))
|
| | | {
|
| | | if (!waitGuideWinNames.Contains(config.WinName))
|
| | | {
|
| | | waitGuideWinNames.Add(config.WinName);
|
| | | }
|
| | | return true;
|
| | | }
|
| | |
|
| | |
|
| | | return false;
|
| | | }
|
| | |
|
| | | public bool StartNewBieGuide(int _id)
|
| | | {
|
| | | if (_id == 0)
|
| | | {
|
| | | Debug.LogError("请检查引导id = 0 的情况");
|
| | | return;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var config = GuideConfig.Get(_id);
|
| | | if (config == null)
|
| | | {
|
| | | Debug.LogError($"没有该引导ID,请检查引导id = {_id} 的情况");
|
| | | return;
|
| | | return false;
|
| | | }
|
| | |
|
| | | if (WaitGuide(_id))
|
| | | {
|
| | | return false;
|
| | | }
|
| | | if (waitGuideWinNames.Contains(config.WinName))
|
| | | {
|
| | | waitGuideWinNames.Remove(config.WinName);
|
| | | }
|
| | |
|
| | | AutoFightModel.Instance.isPause = true;
|
| | |
| | | guideStepChangeEvent?.Invoke();
|
| | | }
|
| | | UIManager.Instance.CloseWindow<ChatWin>();
|
| | | return true;
|
| | |
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | |
|
| | |
|
| | | public bool CheckGuideCondition(int _guideId)
|
| | | //isOrgTrigger 是否是原生触发,如点击的只能是原生触发,其他的都不能
|
| | | public bool CheckGuideCondition(int _guideId, bool isOrgTrigger)
|
| | | {
|
| | | var config = GuideConfig.Get(_guideId);
|
| | | if (config == null)
|
| | |
| | | return false;
|
| | | }
|
| | | if (!UIManager.Instance.IsOpened(config.WinName))
|
| | | { |
| | | {
|
| | | return false;
|
| | | }
|
| | |
|
| | | switch ((GuideTriggerType)config.TriggerType)
|
| | | {
|
| | | case GuideTriggerType.None:
|
| | | return true;
|
| | | case GuideTriggerType.FunctionOpen:
|
| | | return FuncOpen.Instance.IsFuncOpen(config.Condition);
|
| | | case GuideTriggerType.Level:
|
| | | return PlayerDatas.Instance.baseData.LV >= config.Condition;
|
| | | case GuideTriggerType.OpenWindow:
|
| | | return UIManager.Instance.IsOpened(config.WinName);
|
| | | case GuideTriggerType.MainLineQuestCanDo:
|
| | | if (config.SupplementCondition == 2)
|
| | | {
|
| | | return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
|
| | | }
|
| | | return TaskManager.Instance.mainTask.TaskID == config.Condition;
|
| | | case GuideTriggerType.Map:
|
| | | return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
|
| | | case GuideTriggerType.MissionClick:
|
| | | return TaskManager.Instance.GetMainTaskType() == config.Condition;
|
| | | default:
|
| | | return false;
|
| | | }
|
| | | {
|
| | | case GuideTriggerType.None:
|
| | | return true;
|
| | | case GuideTriggerType.FunctionOpen:
|
| | | return FuncOpen.Instance.IsFuncOpen(config.Condition);
|
| | | case GuideTriggerType.Level:
|
| | | return PlayerDatas.Instance.baseData.LV >= config.Condition;
|
| | | case GuideTriggerType.OpenWindow:
|
| | | return UIManager.Instance.IsOpened(config.WinName);
|
| | | case GuideTriggerType.MainLineQuestCanDo:
|
| | | if (config.SupplementCondition == 2)
|
| | | {
|
| | | return TaskManager.Instance.mainTask.TaskID == config.Condition && TaskManager.Instance.GetMainTaskState() == 2;
|
| | | }
|
| | | return TaskManager.Instance.mainTask.TaskID == config.Condition;
|
| | | case GuideTriggerType.Map:
|
| | | return PlayerDatas.Instance.baseData.ExAttr1 >= config.Condition;
|
| | | case GuideTriggerType.MissionClick:
|
| | | //只有真正点击才可以触发
|
| | | if (isOrgTrigger)
|
| | | {
|
| | | return TaskManager.Instance.GetMainTaskType() == config.Condition && TaskManager.Instance.GetMainTaskState() != 2;
|
| | | }
|
| | | return false;
|
| | | default:
|
| | | return false;
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | public void CompleteAllGuides()
|
| | | {
|
| | | var send = new CA222_tagCMSetGuideOK();
|