Example #1
0
    //获得当前大页签下面的数据 key: 小类 value: 里面的称号 id list
    public Dictionary <uint, List <uint> > GetTitleTypeDic(uint typeId)
    {
        Dictionary <uint, List <uint> > titleTypeDic = new Dictionary <uint, List <uint> >();//1、key 小类   2、value 里面的称号 id list

        List <uint> list;

        if (m_dicTitle.TryGetValue(typeId, out list))
        {
            //1、排序
            //OrderTitleIdList(ref list);
            list.Sort(TitleSort);

            //2、添加到字典
            for (int i = 0; i < list.Count; i++)
            {
                TitleDataBase tdb = m_tableTitleList.Find((data) => { return(data.dwID == list[i]); });
                if (titleTypeDic.ContainsKey(tdb.secondType) == false)
                {
                    List <uint> titleIdList = new List <uint>();
                    titleIdList.Add(tdb.dwID);
                    titleTypeDic.Add(tdb.secondType, titleIdList);
                }
                else
                {
                    titleTypeDic[tdb.secondType].Add(tdb.dwID);
                }
            }
        }

        return(titleTypeDic);
    }
Example #2
0
    public override void SetGridData(object data)
    {
        base.SetGridData(data);
        this.m_titleId = (uint)data;

        List <TitleDataBase> tableTitleList = GameTableManager.Instance.GetTableList <TitleDataBase>();
        TitleManager         titleManager   = DataManager.Manager <TitleManager>();

        TitleDataBase tdb = tableTitleList.Find((d) => { return(d.dwID == this.m_titleId); });

        m_lblName.text = tdb.strName;

        if (this.m_titleId == titleManager.WearTitleId)//穿的
        {
            m_goWear.SetActive(true);
        }
        else
        {
            m_goWear.SetActive(false);
        }

        if (this.m_titleId == titleManager.ActivateTitleId) //激活的
        {
            m_goUse.SetActive(true);
        }
        else
        {
            m_goUse.SetActive(false);
        }
    }
Example #3
0
    public void OnSelectTitle(stSelectTitlePropertyUserCmd_CS cmd)
    {
        //如果是玩家自己
        if (Client.ClientGlobal.Instance().IsMainPlayer(cmd.dwUserID))
        {
            this.WearTitleId = cmd.wdTitleID;

            TitleDataBase titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(this.WearTitleId);
            if (titleDataBase != null)
            {
                TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Title_Commond_peidaichenghao, titleDataBase.strName);//佩戴称号{0}
            }
        }


        Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem();
        if (es != null)
        {
            //设置人物身上称号
            Client.IPlayer player = es.FindPlayer(cmd.dwUserID);
            if (player != null)
            {
                player.SetProp((int)PlayerProp.TitleId, (int)cmd.wdTitleID);
            }
        }


        //处理文字特效
        Client.stTitleWear data = new Client.stTitleWear {
            uid = cmd.dwUserID, titleId = cmd.wdTitleID
        };
        EventEngine.Instance().DispatchEvent((int)GameEventID.TITLE_WEAR, data);//抛出现在佩戴的称号
    }
Example #4
0
    /// <summary>
    /// 总加成
    /// </summary>
    public uint GetAllAdd()
    {
        uint allAdd = 0;

        //基础累加加成
        for (int i = 0; i < m_listOwnedTitle.Count; i++)
        {
            TitleDataBase titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(m_listOwnedTitle[i].dwID);

            if (titleDataBase == null)
            {
                Engine.Utility.Log.Error("取不到表格数据!!!");
                continue;
            }
            if (titleDataBase.timeliness == 0 || titleDataBase.timeliness == 2 || m_listOwnedTitle[i].dwTime > 0)//永久,限次,限时时间还没用完
            {
                uint fight = GetForeverAddFight(m_listOwnedTitle[i].dwID);
                allAdd += fight;
            }
        }

        //激活加成
        uint activateAdd = GetActivateAddFight(this.ActivateTitleId);

        allAdd += activateAdd;

        return(allAdd);
    }
Example #5
0
    /// <summary>
    /// 分项目总加成
    /// </summary>
    /// <returns>  </returns>
    public List <uint> GetAllForeverAddeffectIdList()
    {
        List <uint> allForeverAddList = new List <uint>();

        for (int i = 0; i < m_listOwnedTitle.Count; i++)
        {
            TitleDataBase titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(m_listOwnedTitle[i].dwID);
            if (titleDataBase == null)
            {
                Engine.Utility.Log.Error("取不到表格数据!!!");
                continue;
            }

            if (titleDataBase.timeliness == 0 || titleDataBase.timeliness == 2 || m_listOwnedTitle[i].dwTime > 0)//永久,限次,限时时间还没用完
            {
                List <uint> list = GetForeverAddList(m_listOwnedTitle[i].dwID);

                for (int j = 0; j < list.Count; j++)
                {
                    allForeverAddList.Add(list[j]);
                }
            }
        }

        return(allForeverAddList);
    }
Example #6
0
    /// <summary>
    /// 称号展示
    /// </summary>
    void InitTitleDisplay(TitleDataBase titleDataBase)
    {
        if (m_titleDataBase.UIState == 0)
        {
            m_label_TitleLabel.gameObject.SetActive(true);
            m_trans_TitleFx.gameObject.SetActive(false);
            m_label_TitleLabel.text = titleDataBase.TextUI;
        }

        if (m_titleDataBase.UIState == 1)
        {
            m_label_TitleLabel.gameObject.SetActive(false);
            m_trans_TitleFx.gameObject.SetActive(true);

            uint fxId = m_titleDataBase.FxUI;

            //特效
            UIParticleWidget wight = m_trans_TitleFx.GetComponent <UIParticleWidget>();
            if (null == wight)
            {
                wight       = m_trans_TitleFx.gameObject.AddComponent <UIParticleWidget>();
                wight.depth = 100;
            }

            if (wight != null)
            {
                wight.ReleaseParticle();
                wight.AddParticle(fxId);
            }
        }
    }
Example #7
0
    /// <summary>
    /// 右侧称呼详细信息
    /// </summary>
    /// <param name="titleId"></param>
    void InitTitleInfoUI()
    {
        m_titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(this.m_selectTitleId);           //表格中数据
        m_titleData     = TManager.OwnedTitleList.Find((data) => { return(data.dwID == this.m_selectTitleId); }); //服务器下发的数据

        //当前称号详细信息
        if (m_titleDataBase != null)
        {
            //称号UI展示
            InitTitleDisplay(m_titleDataBase);

            //时效
            InitTimelinessUI(m_titleDataBase.timeliness, m_titleData);

            //描述
            m_label_TitleDescription.text = m_titleDataBase.strDesc;

            //永久加成
            CreateForeverAddUI();

            //激活加成
            CreateActivateAddUI();

            //佩戴和激活按钮初始化
            InitWearAndActivateUI();
        }
    }
Example #8
0
    /// <summary>
    /// 跟新一级页签数据
    /// </summary>
    /// <param name="gridBase"></param>
    /// <param name="index"></param>
    private void OnUpdateTitileCtrTypeGrid(UIGridBase gridBase, int index)
    {
        if (m_titleDic != null && m_titleDic.Keys.Count > index)
        {
            UICtrTypeGrid grid = gridBase as UICtrTypeGrid;
            if (grid == null)
            {
                return;
            }

            Dictionary <uint, List <uint> > .KeyCollection kc = m_titleDic.Keys;
            List <uint> keyIdList = kc.ToList <uint>();
            uint        keyId     = keyIdList[index];

            List <uint> secondIdList;
            if (m_titleDic.TryGetValue(keyId, out secondIdList))
            {
                if (secondIdList.Count == 0)
                {
                    return;
                }
                TitleDataBase tdb = m_lstTableTitle.Find((d) => { return(d.dwID == secondIdList[0]); });

                //数据
                grid.SetData(keyId, tdb != null ? tdb.secondTypeName : "", secondIdList.Count);

                //红点
                bool haveNewTitle = HaveNewTilteInList(secondIdList);
                grid.SetRedPointStatus(haveNewTitle);
            }
        }
    }
Example #9
0
        /// <summary>
        /// 通过[编号]二分快速查表
        /// </summary>
        /// <param name="dwID">编号</param>
        /// <returns></returns>
        public static TitleDataBase Query(this List <TitleDataBase> sorted, uint dwID)
        {
            var key = new TitleDataBase()
            {
                dwID = dwID
            };
            var comparer = new Comparer1();
            var index    = sorted.BinarySearch(key, comparer);

            return(index >= 0 ? sorted[index] : default(TitleDataBase));
        }
Example #10
0
    public void SetGridData(uint firstKeyId, uint titleId)
    {
        this.m_firstKeyId = firstKeyId;
        this.m_titleId    = titleId;

        List <TitleDataBase> tableTitleList = GameTableManager.Instance.GetTableList <TitleDataBase>();
        TitleManager         titleManager   = DataManager.Manager <TitleManager>();

        TitleDataBase tdb = tableTitleList.Find((d) => { return(d.dwID == this.m_titleId); });

        //拥有未拥有
        if (titleManager.OwnedTitleList.Exists((d) => { return(d.dwID == this.m_titleId ? true : false); }))
        {
            SetName(tdb.strName, true);
        }
        else
        {
            SetName(tdb.strName, false);
        }

        //佩戴称号  激活称号
        //限时  限次   限时限次
        if (tdb.timeliness == (uint)PropPanel.Timeliness.TimeLimit || tdb.timeliness == (uint)PropPanel.Timeliness.NumLimit || tdb.timeliness == (uint)PropPanel.Timeliness.TimeNumLimit)
        {
            GameCmd.stTitleData titleData = titleManager.OwnedTitleList.Find((d) => { return(d.dwID == this.m_titleId); });
            if (titleData != null)
            {
                //有时间剩余  或次数剩余
                if (titleData.dwTime > 0 || titleData.dwCount > 0)
                {
                    SetWearMark(this.m_titleId == titleManager.WearTitleId);
                    SetActivateMark(this.m_titleId == titleManager.ActivateTitleId);
                }
                else
                {
                    SetWearMark(false);
                    SetActivateMark(false);
                }
            }
            else
            {
                SetWearMark(false);
                SetActivateMark(false);
            }
        }
        //永久称号
        else
        {
            SetWearMark(this.m_titleId == titleManager.WearTitleId);
            SetActivateMark(this.m_titleId == titleManager.ActivateTitleId);
        }
    }
Example #11
0
    void UpdateUseTimes(uint titleId)
    {
        if (this.m_selectTitleId == titleId)
        {
            m_titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(this.m_selectTitleId);           //表格中数据
            m_titleData     = TManager.OwnedTitleList.Find((data) => { return(data.dwID == this.m_selectTitleId); }); //服务器下发的数据

            //当前称号详细信息
            if (m_titleDataBase != null)
            {
                InitTimelinessUI(m_titleDataBase.timeliness, m_titleData);  //时效
            }
        }
    }
Example #12
0
    /// <summary>
    /// 用于系统消息
    /// </summary>
    void SendToMe(uint titleId)
    {
        TitleDataBase titleDb = GameTableManager.Instance.GetTableItem <TitleDataBase>(titleId);

        if (titleDb == null)
        {
            return;
        }

        string message = string.Format("恭喜您获得了{0}称号", titleDb.strName);

        Pmd.stCommonChatUserPmd_CS sendCmd = new Pmd.stCommonChatUserPmd_CS();
        sendCmd.szInfo     = message;
        sendCmd.byChatType = (uint)GameCmd.CHATTYPE.CHAT_SYS;
        sendCmd.dwOPDes    = (uint)Client.ClientGlobal.Instance().MainPlayer.GetID();
        NetService.Instance.SendToMe(sendCmd);
    }
Example #13
0
    /// <summary>
    /// 领取奖励成功
    /// </summary>
    /// <param name="cmd"></param>
    public void OnResponGetAchieveReward(stGetAchieveRewardDataUserCmd_CS cmd)
    {
        if (cmd != null)
        {
            for (int i = 0; i < cmd.id.Count; i++)
            {
                uint id = cmd.id[i];
                if (achievementServerData.ContainsKey(id))
                {
                    achievementServerData[id].status = (uint)AchieveStatus.AchieveStatus_HaveReceive;
                    table.AchievementDataBase table = GameTableManager.Instance.GetTableItem <table.AchievementDataBase>(id);
                    if (table == null)
                    {
                        Engine.Utility.Log.Error("成就表格找不到对应ID为{0}的数据", id);
                    }
                    else
                    {
                        haveAchievePoint += table.get_point;
                        if (table.title != 0)
                        {
                            TitleDataBase title = GameTableManager.Instance.GetTableItem <TitleDataBase>(table.title);
                            TipsManager.Instance.ShowTips(DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Local_TXT_Notice_GetTitle, title.strName));
                        }
                    }
                }
            }
        }
        if (HaveCanReceiveAchieve())
        {
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.REFRESHACHIEVEMENTPUSH, null);
            stShowMainPanelRedPoint st = new stShowMainPanelRedPoint()
            {
                modelID   = (int)WarningEnum.Achievement,
                direction = (int)WarningDirection.Left,
                bShowRed  = true,
            };
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.MAINPANEL_SHOWREDWARING, st);
        }

        DispatchValueUpdateEvent(new ValueUpdateEventArgs(AchieveDispatchEvents.GetAchieveReward.ToString(), null, null));
    }
Example #14
0
    public void OnActivateTitle(stActivateTitlePropertyUserCmd_CS cmd)
    {
        this.ActivateTitleId = cmd.wdTitleID;

        if (this.ActivateTitleId == 0)
        {
            //取消激活
        }
        else
        {
            //激活称号
            TitleDataBase titleDataBase = GameTableManager.Instance.GetTableItem <TitleDataBase>(this.ActivateTitleId);
            if (titleDataBase != null)
            {
                TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Title_Commond_jihuochenghao, titleDataBase.strName);//激活称号{0}
            }
        }

        object data = this.ActivateTitleId;

        EventEngine.Instance().DispatchEvent((int)GameEventID.TITLE_ACTIVATE, data);//抛出激活的称号
    }
Example #15
0
    /// <summary>
    /// 激活加成effectIdList
    /// </summary>
    public List <uint> GetActivateAddList(uint titleId)
    {
        List <uint>   activateAddList = new List <uint>();
        TitleDataBase titleDataBase   = GameTableManager.Instance.GetTableItem <TitleDataBase>(titleId);

        if (titleDataBase != null)
        {
            string addStr = titleDataBase.act_effect;

            if (addStr == "0")
            {
                return(activateAddList);
            }

            string[] addStrArr = addStr.Split('_');
            for (int i = 0; i < addStrArr.Length; i++)
            {
                uint addEffectId = uint.Parse(addStrArr[i]);
                activateAddList.Add(addEffectId);
            }
        }
        return(activateAddList);
    }
Example #16
0
    /// <summary>
    /// UI中用到的排序
    /// </summary>
    /// <param name="titleId"></param>
    /// <param name="dic"></param>
    public void OrderTitleIdDic(uint titleId, ref Dictionary <uint, List <uint> > dic)
    {
        if (dic == null)
        {
            return;
        }

        TitleDataBase tdb = m_tableTitleList.Find((data) => { return(data.dwID == titleId); });

        if (tdb != null)
        {
            Dictionary <uint, List <uint> > .Enumerator enumerator = dic.GetEnumerator();
            while (enumerator.MoveNext())
            {
                List <uint> list;
                if (dic.TryGetValue(enumerator.Current.Key, out list))
                {
                    //排序
                    //OrderTitleIdList(ref list);
                    list.Sort(TitleSort);
                }
            }
        }
    }