示例#1
0
    /// <summary>
    /// 刷新新功能UI状态
    /// </summary>
    /// <param name="funcId"></param>
    private void RefreshNewFuncUIStatus(uint funcId)
    {
        GuideDefine.LocalFuncOpenData localData = null;

        if (null != m_dic_funcOpenDatas && m_dic_funcOpenDatas.TryGetValue(funcId, out localData))
        {
            PanelID dependPanelId = localData.FuncCreateObjPathData.DependPanelId;
            if (dependPanelId == PanelID.None || !DataManager.Manager <UIPanelManager>().IsShowPanel(dependPanelId))
            {
                //Engine.Utility.Log.Error("GuideManger->RefreshNewFuncUIStatus faield,relative panel panelId:{0}"
                //    , localData.FuncCreateObjPathData.DependPanelId);
                return;
            }
            GameObject obj = localData.CreateFuncObj;
            if (null != obj)
            {
                bool funcOpen = IsNewFuncOpen(funcId);
                if (funcOpen && localData.NeedSort)
                {
                    obj.transform.localPosition = GetNewFuncObjTargetPos(funcId);
                }
                if (obj.activeSelf != funcOpen)
                {
                    obj.SetActive(funcOpen);
                }
            }
        }
        else
        {
            Engine.Utility.Log.Error("GuideManger->RefreshNewFuncUIStatus faield,can't found funcId:{0}", funcId);
        }
    }
示例#2
0
    /// <summary>
    /// 获取已开启功能按钮的目标位置
    /// </summary>
    /// <param name="newFuncId"></param>
    /// <returns></returns>
    private Vector3 GetNewFuncObjTargetPos(uint newFuncId)
    {
        Vector3 pos = Vector3.zero;

        GuideDefine.LocalFuncOpenData openData = null;
        int funcIndex = 0;

        if (TryGetFuncOpenData(newFuncId, out openData) &&
            TryGetFunctionSortIndex(openData.SortGroup, newFuncId, out funcIndex))
        {
            pos += funcIndex * openData.FuncObjGap;
        }
        return(pos);
    }
示例#3
0
    /// <summary>
    /// 是否该功能开启
    /// </summary>
    /// <param name="funcId"></param>
    /// <returns></returns>
    public bool IsNewFuncOpen(uint funcId)
    {
        GuideDefine.LocalFuncOpenData localOpenData = null;
        if (!TryGetFuncOpenData(funcId, out localOpenData))
        {
            return(false);
        }

        if (null != m_lst_alreadyDoFuncOpen &&
            m_lst_alreadyDoFuncOpen.Contains(funcId) &&
            !IsMatchTriggerCondition(localOpenData.CloseTriggerId))
        {
            return(true);
        }

        return(false);
    }
示例#4
0
    /// <summary>
    /// 初始化功能开启提示
    /// </summary>
    private void InitFuncOpenData()
    {
        if (null == m_lst_alreadyDoFuncOpen)
        {
            m_lst_alreadyDoFuncOpen = new List <uint>();
        }

        if (null == m_lst_canDoFuncOpen)
        {
            m_lst_canDoFuncOpen = new List <uint>();
        }

        if (null == m_lst_closeFuncOpen)
        {
            m_lst_closeFuncOpen = new List <uint>();
        }

        if (null == m_dic_completeFuncSort)
        {
            m_dic_completeFuncSort = new Dictionary <int, List <uint> >();
        }
        m_dic_funcOpenDatas  = new Dictionary <uint, GuideDefine.LocalFuncOpenData>();
        m_FuncCommonNoticesQ = new System.Collections.Queue();
        List <table.NewFUNCOpenDataBase> newFuncOpenData = GameTableManager.Instance.GetTableList <table.NewFUNCOpenDataBase>();

        if (null != newFuncOpenData)
        {
            GuideDefine.LocalFuncOpenData localData = null;
            table.NewFUNCOpenDataBase     tempdb    = null;
            for (int i = 0; i < newFuncOpenData.Count; i++)
            {
                tempdb = newFuncOpenData[i];
                if (null == tempdb)
                {
                    continue;
                }
                if (!m_dic_funcOpenDatas.ContainsKey(tempdb.openFuncID))
                {
                    localData = GuideDefine.LocalFuncOpenData.Create(tempdb.openFuncID);
                    m_dic_funcOpenDatas.Add(tempdb.openFuncID, localData);
                }
            }
        }
    }
示例#5
0
    /// <summary>
    /// 新功能关闭
    /// </summary>
    /// <param name="funcOpenId"></param>
    private void CloseNewFuncOpen(uint funcOpenId)
    {
        GuideDefine.LocalFuncOpenData data = null;
        if (TryGetFuncOpenData(funcOpenId, out data))
        {
            bool needRefresh = false;
            if (m_lst_alreadyDoFuncOpen.Contains(funcOpenId))
            {
                needRefresh = true;
                m_lst_alreadyDoFuncOpen.Remove(funcOpenId);
            }

            if (m_lst_canDoFuncOpen.Contains(funcOpenId))
            {
                needRefresh = true;
                m_lst_canDoFuncOpen.Remove(funcOpenId);
            }

            if (m_lst_closeFuncOpen.Contains(funcOpenId))
            {
                needRefresh = true;
                m_lst_closeFuncOpen.Add(funcOpenId);
            }

            List <uint> sortGroupIDs = null;
            if (m_dic_completeFuncSort.TryGetValue(data.SortGroup, out sortGroupIDs) && sortGroupIDs.Contains(funcOpenId))
            {
                needRefresh = true;
                sortGroupIDs.Remove(funcOpenId);
            }

            RefreshNewFuncUIStatus(funcOpenId);
            if (data.NeedSort)
            {
                if (needRefresh)
                {
                    DoRefreshNewFuncOpenStaus(data.SortGroup);
                }
            }
        }
    }
示例#6
0
    /// <summary>
    /// 获取已经激活功能
    /// </summary>
    /// <returns></returns>
    public List <uint> GetActiveFuncId()
    {
        List <uint> activefuncId = new List <uint>();

        if (null != m_lst_alreadyDoFuncOpen)
        {
            GuideDefine.LocalFuncOpenData localData = null;
            for (int i = 0; i < m_lst_alreadyDoFuncOpen.Count; i++)
            {
                if (!m_dic_funcOpenDatas.TryGetValue(m_lst_alreadyDoFuncOpen[i], out localData))
                {
                    continue;
                }
                if (!activefuncId.Contains(localData.FuncOpenId))
                {
                    activefuncId.Add(localData.FuncOpenId);
                }
            }
        }
        return(activefuncId);
    }
示例#7
0
    /// <summary>
    /// 是否新功能开启UI准备好
    /// </summary>
    /// <param name="isSkillOpen">是否为技能</param>
    /// <param name="newFuncOpenId"></param>
    /// <returns></returns>
    public bool IsNewFuncUIStatusReady(GuideDefine.FuncOpenShowData showData)
    {
        PanelID targetPanelId = PanelID.None;

        if (showData.FOT == GuideDefine.FuncOpenType.Skill)
        {
            targetPanelId = PanelID.MainPanel;
        }
        else if (showData.FOT == GuideDefine.FuncOpenType.Base)
        {
            GuideDefine.LocalFuncOpenData localdata = GuideDefine.LocalFuncOpenData.Create(showData.FuncOpenId);
            if (null != localdata)
            {
                targetPanelId = localdata.FlyToTargetDependPanel;
            }
        }
        if (targetPanelId == PanelID.None)
        {
            return(false);
        }
        return(DataManager.Manager <UIPanelManager>().IsPanelFocus(targetPanelId));
    }
示例#8
0
    /// <summary>
    /// 添加新功能提醒到缓存
    /// </summary>
    /// <param name="showData"></param>
    private void OnNewFuncOpenAdd(GuideDefine.FuncOpenShowData showData)
    {
        if (null != showData)
        {
            bool add = false;
            if (showData.FOT == GuideDefine.FuncOpenType.Base)
            {
                GuideDefine.LocalFuncOpenData localdata = m_dic_funcOpenDatas[showData.FuncOpenId];
                if (IsNeedIgnoreByCondi(localdata.IgnoreCondi))
                {
                    CompleteNewFuncOpen(showData);
                }
                else if (!m_lst_canDoFuncOpen.Contains(showData.FuncOpenId))
                {
                    //1、添加到新功能提醒列表
                    m_lst_canDoFuncOpen.Add(showData.FuncOpenId);
                    //2、根据优先级排序
                    m_lst_canDoFuncOpen.Sort((left, right) =>
                    {
                        return(GuideDefine.LocalFuncOpenData.CompareFuncOpenPriority(left, right));
                    });
                    add = true;
                }
            }
            else if (showData.FOT == GuideDefine.FuncOpenType.Skill)
            {
                int count = m_FuncCommonNoticesQ.Count + 1;
                m_FuncCommonNoticesQ.Enqueue(showData);
                add = true;
            }

            if (add)
            {
                //执行下一个工作流
                Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
            }
        }
    }
示例#9
0
    /// <summary>
    /// 获取下一个新功能开启ID
    /// </summary>
    /// <param name="funcId"></param>
    /// <returns></returns>
    public bool TakeNextNewFuncOpen(out GuideDefine.FuncOpenShowData showData)
    {
        showData = null;
        if (null != m_FuncCommonNoticesQ &&
            m_FuncCommonNoticesQ.Count != 0 &&
            null != m_FuncCommonNoticesQ.Peek())
        {
            showData = (GuideDefine.FuncOpenShowData)m_FuncCommonNoticesQ.Peek();
            return(true);
        }
        else if (null != m_lst_canDoFuncOpen && m_lst_canDoFuncOpen.Count > 0)
        {
            GuideDefine.LocalFuncOpenData db = null;
            bool match = false;
            do
            {
                db       = GuideDefine.LocalFuncOpenData.Create(m_lst_canDoFuncOpen[0]);
                showData = db.ShowData;
                if (!IsNeedIgnoreByCondi(db.IgnoreCondi) &&
                    !m_lst_alreadyDoFuncOpen.Contains(db.FuncOpenId))
                {
                    match = true;
                }
                else
                {
                    CompleteNewFuncOpen(showData);
                }
            } while (!match && m_lst_canDoFuncOpen.Count > 0);

            if (match)
            {
                return(true);
            }
        }

        return(false);
    }
示例#10
0
    /// <summary>
    /// 添加到已完成功能提示列表
    /// </summary>
    /// <param name="funcId"></param>
    private void CompleteNewFuncOpen(GuideDefine.FuncOpenShowData showData)
    {
        if (null == showData)
        {
            return;
        }
        if (showData.FOT == GuideDefine.FuncOpenType.Base)
        {
            //1、从当前新功能开启列表中移除
            if (null != m_lst_canDoFuncOpen && m_lst_canDoFuncOpen.Contains(showData.FuncOpenId))
            {
                m_lst_canDoFuncOpen.Remove(showData.FuncOpenId);
            }

            bool add = false;
            //2、并添加到已完成提醒功能列表
            if (null != m_lst_alreadyDoFuncOpen && !m_lst_alreadyDoFuncOpen.Contains(showData.FuncOpenId))
            {
                m_lst_alreadyDoFuncOpen.Add(showData.FuncOpenId);
                add = true;
            }

            GuideDefine.LocalFuncOpenData openData = null;
            if (TryGetFuncOpenData(showData.FuncOpenId, out openData))
            {
                if (openData.NeedSort)
                {
                    List <uint> sortIds       = null;
                    bool        needRefreshUI = false;
                    if (!m_dic_completeFuncSort.TryGetValue(openData.SortGroup, out sortIds))
                    {
                        sortIds = new List <uint>();
                        sortIds.Add(showData.FuncOpenId);
                        m_dic_completeFuncSort.Add(openData.SortGroup, sortIds);
                        needRefreshUI = true;
                    }
                    else if (!sortIds.Contains(showData.FuncOpenId))
                    {
                        sortIds.Add(showData.FuncOpenId);
                        sortIds.Sort((left, right) =>
                        {
                            GuideDefine.LocalFuncOpenData leftData  = null;
                            GuideDefine.LocalFuncOpenData rightData = null;
                            if (TryGetFuncOpenData(left, out leftData) && TryGetFuncOpenData(right, out rightData))
                            {
                                return(leftData.SortID - rightData.SortID);
                            }
                            return(0);
                        });
                        needRefreshUI = true;
                    }
                    if (needRefreshUI)
                    {
                        DoRefreshNewFuncOpenStaus(openData.SortGroup);
                    }
                }
                else if (null != openData.CreateFuncObj && !openData.CreateFuncObj.activeSelf)
                {
                    openData.CreateFuncObj.SetActive(true);
                }
            }

            if (add)
            {
                Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTNEWFUNCOPEN, showData.FuncOpenId);
                //发送已完成消息
                SendNewFuncOpenComplete(showData.FuncOpenId);
            }
        }
        else if (showData.FOT == GuideDefine.FuncOpenType.Skill)
        {
            if (null != m_FuncCommonNoticesQ && m_FuncCommonNoticesQ.Count != 0)
            {
                GuideDefine.FuncOpenShowData cacheShowData = (GuideDefine.FuncOpenShowData)m_FuncCommonNoticesQ.Peek();
                if (cacheShowData.FuncOpenId == showData.FuncOpenId)
                {
                    //取出第一个
                    m_FuncCommonNoticesQ.Dequeue();
                }
            }
        }
        m_currentFuncOpenShowData = null;
        Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTNEWFUNCCOMPLETE, showData);
    }
示例#11
0
 /// <summary>
 /// 尝试获取功能开启数据
 /// </summary>
 /// <param name="funcId"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 public bool TryGetFuncOpenData(uint funcId, out GuideDefine.LocalFuncOpenData data)
 {
     return(m_dic_funcOpenDatas.TryGetValue(funcId, out data));
 }