//获得当前大页签下面的数据 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); }
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); } }
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);//抛出现在佩戴的称号 }
/// <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); }
/// <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); }
/// <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); } } }
/// <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(); } }
/// <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); } } }
/// <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)); }
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); } }
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); //时效 } } }
/// <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); }
/// <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)); }
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);//抛出激活的称号 }
/// <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); }
/// <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); } } } }