Example #1
0
    /// <summary>
    ///刷新
    /// </summary>
    /// <param name="pid"></param>
    private void RefreshGuideTargetObj(PanelID pid)
    {
        GuideDefine.LocalGuideGroupData localGroupData = null;
        GuideDefine.LocalGuideData      localGuideData = null;
        if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0)
        {
            var iemurator = CurDoUnConstraintGuide.GetEnumerator();
            while (iemurator.MoveNext())
            {
                localGroupData = iemurator.Current.Value;
                if (null == localGroupData || !localGroupData.LoopTrigger)
                {
                    continue;
                }
                if (localGroupData.CurStep != 0 &&
                    TryGetGuideLocalData(localGroupData.CurStep, out localGuideData) &&
                    localGuideData.GuideTargetDependPanel == pid)
                {
                    localGuideData.GuideTargetObj = null;
                }
            }
        }

        if (null != CurDoRepeatUnConstraintGuide)
        {
            if (CurDoRepeatUnConstraintGuide.CurStep != 0 &&
                TryGetGuideLocalData(CurDoRepeatUnConstraintGuide.CurStep, out localGuideData) &&
                localGuideData.GuideTargetDependPanel == pid)
            {
                localGuideData.GuideTargetObj = null;
            }
        }
    }
Example #2
0
    /// <summary>
    /// 是否引导已完成
    /// </summary>
    /// <param name="guideId"></param>
    /// <returns></returns>
    public bool IsGuideStepComplete(uint guideId)
    {
        GuideDefine.LocalGuideGroupData localGroupData = null;
        uint groupId = 0;

        if (TryGetGuideGroupID(guideId, out groupId) && TryGetGuideGroupData(groupId, out localGroupData))
        {
            if (IsGuideGroupComplete(guideId))
            {
                return(true);
            }
            if (localGroupData.GType == GuideDefine.GuideType.Unconstrain)
            {
                if (null != CurDoConstriantGuide && CurDoConstriantGuide.GroupId == guideId)
                {
                    return(CurDoConstriantGuide.IsCompleteStep(guideId));
                }
            }
            else if (localGroupData.GType == GuideDefine.GuideType.Constraint)
            {
                if (CurDoUnConstraintGuide.ContainsKey(localGroupData.GroupId))
                {
                    return(CurDoUnConstraintGuide[localGroupData.GroupId].IsCompleteStep(guideId));
                }
            }
        }
        return(false);
    }
Example #3
0
    /// <summary>
    /// 重置引导组
    /// </summary>
    /// <param name="groupID"></param>
    private void ResetGuideGroup(uint groupID)
    {
        uint curDoGuide = 0;

        if (IsDoingGroup(groupID, out curDoGuide))
        {
            if (CurDoUnConstraintGuide.ContainsKey(groupID))
            {
                CurDoUnConstraintGuide.Remove(groupID);
            }
            else if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.GroupId == groupID)
            {
                m_curDoRepeatUnConstraintGuide = null;
            }
            CancelUnconstrainGuideShow(curDoGuide);
        }
    }
Example #4
0
    /// <summary>
    /// 是否当前正在执行引导组
    /// </summary>
    /// <param name="guideGroup"></param>
    /// <param name="guideId"></param>
    /// <returns></returns>
    public bool IsDoingGroup(uint guideGroup, out uint guideId)
    {
        guideId = 0;
        GuideDefine.LocalGuideGroupData groupData = null;
        if (TryGetGuideGroupData(guideGroup, out groupData))
        {
            if (groupData.GType == GuideDefine.GuideType.Unconstrain)
            {
                if (!groupData.LoopTrigger)
                {
                    if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count != 0)
                    {
                        var iemurator = CurDoUnConstraintGuide.GetEnumerator();
                        GuideDefine.LocalGuideGroupData tempGroup = null;
                        while (iemurator.MoveNext())
                        {
                            tempGroup = iemurator.Current.Value;
                            if (tempGroup.GroupId == guideGroup)
                            {
                                guideId = tempGroup.CurStep;
                                return(true);
                            }
                        }
                    }
                }
                else if (null != CurDoRepeatUnConstraintGuide &&
                         CurDoRepeatUnConstraintGuide.GroupId == guideGroup)
                {
                    guideId = CurDoRepeatUnConstraintGuide.CurStep;
                    return(true);
                }
            }
            else if (groupData.GType == GuideDefine.GuideType.Constraint)
            {
                if (null != CurDoConstriantGuide &&
                    CurDoConstriantGuide.GroupId == guideGroup)
                {
                    guideId = CurDoConstriantGuide.CurStep;
                    return(true);
                }
            }
        }

        return(false);
    }
Example #5
0
    /// <summary>
    /// 重置引导
    /// </summary>
    private void ResetGuide()
    {
        //新手引导
        m_lst_completeGroupGuide.Clear();
        m_curDoConstraintGuide = null;
        m_lstTriggerGuideGroups.Clear();
        m_bGuideDataReady = false;
        if (null != m_dic_guideGroupDatas && m_dic_guideGroupDatas.Count != 0)
        {
            List <uint> groupIds = new List <uint>(m_dic_guideGroupDatas.Keys);
            for (int i = 0, max = groupIds.Count; i < max; i++)
            {
                m_dic_guideGroupDatas[groupIds[i]].Reset();
            }
        }

        if (null != m_dic_canDoGuideGroup)
        {
            m_dic_canDoGuideGroup.Clear();
        }

        if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0)
        {
            var iemurator = CurDoUnConstraintGuide.GetEnumerator();
            GuideDefine.LocalGuideGroupData localGroupData = null;
            while (iemurator.MoveNext())
            {
                localGroupData = iemurator.Current.Value;
                if (localGroupData.CurStep != 0)
                {
                    CancelUnconstrainGuideShow(localGroupData.CurStep);
                }
            }
            CurDoUnConstraintGuide.Clear();
        }

        if (null != m_curDoRepeatUnConstraintGuide)
        {
            if (m_curDoRepeatUnConstraintGuide.CurStep != 0)
            {
                CancelUnconstrainGuideShow(m_curDoRepeatUnConstraintGuide.CurStep);
            }
            m_curDoRepeatUnConstraintGuide = null;
        }
    }
Example #6
0
    /// <summary>
    /// 依赖面板关闭清空相应的循环触发引导(正在执行,或者等待执行的)
    /// </summary>
    /// <param name="id"></param>
    private void ClearRecycleTriggerGuideByPanel(PanelID pid)
    {
        //1、等待列表移除
        uint        tempID     = 0;
        List <uint> waitDoList = null;
        List <uint> removeList = null;
        List <uint> stepList   = null;

        GuideDefine.LocalGuideGroupData localGroupData = null;
        GuideDefine.LocalGuideData      localGuideData = null;
        if (m_dic_canDoGuideGroup.TryGetValue(GuideDefine.GuideType.Unconstrain, out waitDoList) &&
            waitDoList.Count > 0)
        {
            for (int i = 0, max = waitDoList.Count; i < max; i++)
            {
                tempID = waitDoList[i];
                if (!TryGetGuideGroupData(tempID, out localGroupData) || !localGroupData.LoopTrigger)
                {
                    continue;
                }
                stepList = localGroupData.GroupSteps;
                if (null == stepList || stepList.Count == 0)
                {
                    continue;
                }

                for (int j = 0, maxj = stepList.Count; j < maxj; j++)
                {
                    tempID = stepList[j];
                    if (!TryGetGuideLocalData(tempID, out localGuideData))
                    {
                        continue;
                    }

                    if (localGuideData.GuideTargetDependPanel == pid)
                    {
                        if (null == removeList)
                        {
                            removeList = new List <uint>();
                        }
                        if (!removeList.Contains(waitDoList[i]))
                        {
                            removeList.Add(waitDoList[i]);
                        }
                    }
                }
            }
        }
        if (null != removeList)
        {
            for (int i = 0, max = removeList.Count; i < max; i++)
            {
                tempID = removeList[i];
                waitDoList.Remove(tempID);
            }
        }

        //2、进行中引导
        if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0)
        {
            var iemurator = CurDoUnConstraintGuide.GetEnumerator();
            while (iemurator.MoveNext())
            {
                localGroupData = iemurator.Current.Value;
                if (null == localGroupData || !localGroupData.LoopTrigger)
                {
                    continue;
                }
                if (localGroupData.CurStep != 0 &&
                    TryGetGuideLocalData(localGroupData.CurStep, out localGuideData) &&
                    localGuideData.GuideTargetDependPanel == pid &&
                    (   //localGroupData.CurStep != localGroupData.FirstStep ||
                        pid != PanelID.MainPanel))
                {
                    if (null == removeList)
                    {
                        removeList = new List <uint>();
                    }
                    if (!removeList.Contains(localGroupData.GroupId))
                    {
                        removeList.Add(localGroupData.GroupId);
                    }
                }
            }
        }
        if (null != removeList)
        {
            for (int i = 0, max = removeList.Count; i < max; i++)
            {
                tempID = removeList[i];
                ResetGuideGroup(tempID);
            }
        }

        //3、重复触发引导
        if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.CurStep != 0)
        {
            if (CurDoRepeatUnConstraintGuide.CurStep != 0 &&
                TryGetGuideLocalData(CurDoRepeatUnConstraintGuide.CurStep, out localGuideData) &&
                localGuideData.GuideTargetDependPanel == pid &&
                (       //localGroupData.CurStep != localGroupData.FirstStep ||
                    pid != PanelID.MainPanel))
            {
                ResetGuideGroup(CurDoRepeatUnConstraintGuide.GroupId);
            }
        }
    }
Example #7
0
    /// <summary>
    /// 完成引导
    /// </summary>
    /// <param name="guideId"></param>
    private void CompleteGuide(uint guideId)
    {
        //   Engine.Utility.Log.LogGroup("WJH", "CompleteGuide:" + guideId);
        GuideDefine.LocalGuideGroupData groupdata = null;
        uint groupID = 0;

        if (TryGetGuideGroupID(guideId, out groupID) && TryGetGuideGroupData(groupID, out groupdata))
        {
            bool complete = false;
            if (groupdata.GType == GuideDefine.GuideType.Constraint)
            {
                if (null != CurDoConstriantGuide && CurDoConstriantGuide.CurStep == guideId)
                {
                    CurDoConstriantGuide.LastestDoStep = guideId;
                    CurDoConstriantGuide.EndCur();
                    if (CurDoConstriantGuide.CurStep == CurDoConstriantGuide.LastStepGuideID)
                    {
                        complete             = true;
                        CurDoConstriantGuide = null;
                    }
                }
            }
            else if (groupdata.GType == GuideDefine.GuideType.Unconstrain)
            {
                if (CurDoUnConstraintGuide.ContainsKey(groupID))
                {
                    if (CurDoUnConstraintGuide[groupID].CurStep == guideId)
                    {
                        CurDoUnConstraintGuide[groupID].LastestDoStep = guideId;
                        CurDoUnConstraintGuide[groupID].EndCur();
                        if (CurDoUnConstraintGuide[groupID].LastestDoStep == CurDoUnConstraintGuide[groupID].LastStepGuideID)
                        {
                            complete = true;
                            CurDoUnConstraintGuide.Remove(groupID);
                        }
                    }
                }
                else if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.CurStep == guideId)
                {
                    CurDoRepeatUnConstraintGuide.LastestDoStep = guideId;
                    CurDoRepeatUnConstraintGuide.EndCur();
                    if (CurDoRepeatUnConstraintGuide.LastestDoStep == CurDoRepeatUnConstraintGuide.LastStepGuideID)
                    {
                        complete = true;
                        CurDoRepeatUnConstraintGuide = null;
                    }
                }
            }

            //如果组最后一步发送消息到服务器保存已完成组
            if (complete && !m_lst_completeGroupGuide.Contains(groupdata.GroupId))
            {
                m_lst_completeGroupGuide.Add(groupdata.GroupId);
                //非循环引导
                if (!groupdata.LoopTrigger)
                {
                    SendGuideComplete(groupdata.GroupId);
                }
            }
        }
    }