/// <summary> /// 获取下一个强制引导 /// </summary> /// <param name="guideId"></param> /// <returns></returns> private bool TakeNextConstraitGuide(out uint guideId) { guideId = 0; List <uint> guideIds = null; List <uint> groups = null; bool isMatch = false; GuideDefine.GuideType gType = GuideDefine.GuideType.Constraint; if (m_dic_canDoGuideGroup.TryGetValue(gType, out groups) && groups.Count > 0) { GuideDefine.LocalGuideGroupData groupData = null; GuideDefine.LocalGuideData localData = null; uint tempGuideId = 0; if (!IsDoingGuide(gType)) { do { isMatch = false; if (IsGuideGroupComplete(groups[0])) { SilentCompleteGuideGroup(groups[0]); } else { if (TryGetGuideGroupData(groups[0], out groupData) && groupData.TryGetNextStep(out guideId) && TryGetGuideLocalData(guideId, out localData) && (localData.IsStartStep || localData.TryGetPreStep(out tempGuideId) && IsGuideStepComplete(tempGuideId))) { isMatch = true; } if (isMatch && IsNeedIgnoreGroup(groups[0])) { CompleteGuide(guideId); isMatch = false; } } } while (groups.Count > 0 && !isMatch); } } return(isMatch); }
/// <summary> /// 执行引导组 /// </summary> /// <param name="groupId"></param> /// <returns></returns> private bool DoGuideGroup(uint groupId) { bool success = false; if (GuideManager.IsGuideEnable) { GuideDefine.LocalGuideGroupData localGroupData = null; if (TryGetGuideGroupData(groupId, out localGroupData)) { uint curDoGuideID = 0; if (!IsDoingGroup(groupId, out curDoGuideID)) { localGroupData.Reset(); if (localGroupData.GType == GuideDefine.GuideType.Constraint) { m_curDoConstraintGuide = localGroupData; } else if (localGroupData.GType == GuideDefine.GuideType.Unconstrain) { if (!localGroupData.LoopTrigger) { m_dic_curDoUnConstraintGuide.Add(groupId, localGroupData); } else { if (curCanDoRepeatGroup != 0) { curCanDoRepeatGroup = 0; } m_curDoRepeatUnConstraintGuide = localGroupData; } } } if (localGroupData.CurStep == 0) { if (localGroupData.TryGetNextStep(out curDoGuideID)) { GuideDefine.LocalGuideData localData = null; if (CheckGuideDataReady(curDoGuideID) && TryGetGuideLocalData(curDoGuideID, out localData)) { localData.GuideTargetObj = null; localGroupData.MoveToNextStep(); if (localData.JumpID != 0) { ItemManager.DoJump(localData.JumpID); } if (localData.GDType != GuideDefine.GuideGUIDependType.None) { Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTGUIDEITEMFOCUS, new GuideDefine.GuideItemFocusData() { DependType = localData.GDType, Data = localData.GDParam[0], }); } if (localGroupData.GType == GuideDefine.GuideType.Unconstrain) { DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.GuideUnconstrainPanel, data: localData); } else if (localGroupData.GType == GuideDefine.GuideType.Constraint) { DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.GuidePanel, data: localData); } Engine.Utility.Log.LogGroup("WJH", "DoGuide:" + localData.ID); Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTGUIDESHOWOUT); } } else { SilentCompleteGuideGroup(groupId); } } } else { SilentCompleteGuideGroup(groupId); } } else { SilentCompleteGuideGroup(groupId); } return(success); }