Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
    /// <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);
    }