/// <summary> /// 新获得称号 /// </summary> public void OnAddNewTitle(stAddTitlePropertyUserCmd_S cmd) { uint newTitleId = cmd.data.dwID; if (this.m_listNewTitleId.Contains(cmd.data.dwID) == false) { this.m_listNewTitleId.Add(cmd.data.dwID); } stTitleData titleData = m_listOwnedTitle.Find((data) => { return(data.dwID == cmd.data.dwID ? true : false); }); if (titleData != null) { titleData.dwCount = cmd.data.dwCount; titleData.dwTime = cmd.data.dwTime; } else { m_listOwnedTitle.Add(new stTitleData { dwID = cmd.data.dwID, dwCount = cmd.data.dwCount, dwTime = cmd.data.dwTime }); } object param = newTitleId; stShowMainPanelRedPoint st = new stShowMainPanelRedPoint() { modelID = (int)WarningEnum.TITLE_NEWTITLE, direction = (int)WarningDirection.Left, bShowRed = HaveNewTitle(), }; EventEngine.Instance().DispatchEvent((int)GameEventID.MAINPANEL_SHOWREDWARING, st); SendToMe(cmd.data.dwID); //系统消息获得称号 }
/// <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> public void OnDeleteTitle(stDeleteTitlePropertyUserCmd_CS cmd) { stTitleData titleData = m_listOwnedTitle.Find((data) => { return(data.dwID == cmd.wdTitleID); }); if (titleData != null) { m_listOwnedTitle.Remove(titleData); } object titleIdData = cmd.wdTitleID; EventEngine.Instance().DispatchEvent((int)GameEventID.TITLE_DELETE, titleIdData);//抛出删除的称号 isDelete = true; }
//对称号Id排序 void OrderTitleIdList(ref List <uint> titleIdList) { List <uint> copyTitleIdList = new List <uint>();//拷贝数据 for (int i = 0; i < titleIdList.Count; i++) { copyTitleIdList.Add(titleIdList[i]); } titleIdList.Clear(); stTitleData td1 = m_listOwnedTitle.Find((data) => { return(data.dwID == ActivateTitleId); });// 1、激活 if (td1 != null && copyTitleIdList.Contains(td1.dwID)) { if (titleIdList.Contains(td1.dwID) == false) { titleIdList.Add(td1.dwID); } } stTitleData td2 = m_listOwnedTitle.Find((data) => { return(data.dwID == WearTitleId); }); // 2、佩戴 if (td2 != null && copyTitleIdList.Contains(td2.dwID)) { if (titleIdList.Contains(td2.dwID) == false) { titleIdList.Add(td2.dwID); } } for (int i = 0; i < m_listOwnedTitle.Count; i++) { if (m_listOwnedTitle[i].dwID != ActivateTitleId && m_listOwnedTitle[i].dwID != WearTitleId && copyTitleIdList.Contains(m_listOwnedTitle[i].dwID))//3、拥有的 { if (titleIdList.Contains(m_listOwnedTitle[i].dwID) == false) { titleIdList.Add(m_listOwnedTitle[i].dwID); } } } for (int i = 0; i < copyTitleIdList.Count; i++) //4、未拥有的 { if (titleIdList.Contains(copyTitleIdList[i]) == false) { titleIdList.Add(copyTitleIdList[i]); } } }
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> /// <param name="cmd"></param> public void OnGetTitleUseTimes(stSetCountTitlePropertyUserCmd_S cmd) { stTitleData titleData = m_listOwnedTitle.Find((data) => { return(data.dwID == cmd.wdTitleID); }); if (titleData != null) { titleData.dwCount = cmd.dwCount; //更新玩家身上称号属性 CleanMainPlayerTitleProp(titleData); } object titleIdData = cmd.wdTitleID; EventEngine.Instance().DispatchEvent((int)GameEventID.TITLE_USETIMES, titleIdData);//抛出激活的称号 }
/// <summary> /// 更新玩家称号属性 /// </summary> /// <param name="titleData"></param> void CleanMainPlayerTitleProp(stTitleData titleData) { IPlayer mainPlayer = Client.ClientGlobal.Instance().MainPlayer; if (mainPlayer != null) { int mainPlayerTitleId = mainPlayer.GetProp((int)PlayerProp.TitleId); //玩家称号使用时间和次数都为0 此时称号ID置0 if ((uint)mainPlayerTitleId == titleData.dwID) { if (titleData.dwCount == 0 && titleData.dwTime == 0) { mainPlayer.SetProp((int)PlayerProp.TitleId, 0); } } } }
/// <summary> /// 时效UI1 /// </summary> void InitTimelinessUI(uint timeliness, stTitleData titleData) { this.m_eTitleTimeliness = (Timeliness)timeliness; if (m_eTitleTimeliness == Timeliness.Forever) //永久 { m_widget_Permanent.gameObject.SetActive(true); //永久 m_widget_LimitedTime.gameObject.SetActive(false); //限时 m_widget_LimitedNumber.gameObject.SetActive(false); //限次 m_widget_NumAndTime.gameObject.SetActive(false); // } if (m_eTitleTimeliness == Timeliness.TimeLimit) //限时 { m_widget_Permanent.gameObject.SetActive(false); //永久 m_widget_LimitedTime.gameObject.SetActive(true); //限时 m_widget_LimitedNumber.gameObject.SetActive(false); //限次 m_widget_NumAndTime.gameObject.SetActive(false); // if (m_titleData != null) { m_label_LimitedTimeLbl.text = StringUtil.GetStringBySeconds(m_titleData.dwTime); } else { m_label_LimitedTimeLbl.text = "0"; } } if (m_eTitleTimeliness == Timeliness.NumLimit) //限次 { m_widget_Permanent.gameObject.SetActive(false); //永久 m_widget_LimitedTime.gameObject.SetActive(false); //限时 m_widget_LimitedNumber.gameObject.SetActive(true); //限次 m_widget_NumAndTime.gameObject.SetActive(false); // if (m_titleData != null) { m_label_LimitedNumberLbl.text = m_titleData.dwCount.ToString(); } else { m_label_LimitedNumberLbl.text = "0"; } } if (m_eTitleTimeliness == Timeliness.TimeNumLimit) //限时限次 { m_widget_Permanent.gameObject.SetActive(false); //永久 m_widget_LimitedTime.gameObject.SetActive(false); //限时 m_widget_LimitedNumber.gameObject.SetActive(false); //限次 m_widget_NumAndTime.gameObject.SetActive(true); //限时限次 if (m_titleData != null) { m_label_UseNumberLbl.text = m_titleData.dwCount.ToString(); m_label_UseTimeLbl.text = StringUtil.GetStringBySeconds(m_titleData.dwTime); } else { m_label_UseNumberLbl.text = "0"; m_label_UseTimeLbl.text = "0"; } } }