/// <summary> /// 玩家上线初始化时获取玩家翅膀数据 /// </summary> /// <param name="roleId"></param> /// <returns></returns> public void onPlayerLogin(int roleId, string strRoleName) { WingRankingInfo data = null; lock (playerWingDatas) { if (playerWingDatas.TryGetValue(roleId, out data)) { return; } } if (null == data) { data = WingPaiHangDBController.getInstance().getWingDataById(roleId); if (null != data) { // 添加更新翅膀排行榜数据 ModifyWingPaihangData(data, true); lock (playerWingDatas) { playerWingDatas.Add(data.nRoleID, data); } } } }
/// <summary> /// 创建翅膀数据 /// </summary> /// <param name="data"></param> /// <returns></returns> public int createWingData(int nRoleID) { WingRankingInfo data = null; lock (playerWingDatas) { if (playerWingDatas.ContainsKey(nRoleID)) { return(0); } data = getWingData(nRoleID); if (null != data) { playerWingDatas.Add(data.nRoleID, data); } } if (null != data) { // 添加更新翅膀排行榜数据 ModifyWingPaihangData(data, false); } return(1); }
public void ModifyWingPaihangData(WingRankingInfo data, bool bIsLogin) { if (null != data) { lock (this.rankingDatas) { PlayerWingRankingData result = this.rankingDatas.Find((PlayerWingRankingData paiHang) => paiHang.roleId == data.nRoleID); if (null == result) { if (this.rankingDatas.Count < WingPaiHangManager.RankingList_Max_Num) { this.rankingDatas.Add(data.getPlayerWingRankingData()); } else if (data.nWingID * 20 + data.nStarNum > this.rankingDatas[this.rankingDatas.Count - 1].WingID * 20 + this.rankingDatas[this.rankingDatas.Count - 1].WingStarNum) { this.rankingDatas.RemoveAt(this.rankingDatas.Count - 1); this.rankingDatas.Add(data.getPlayerWingRankingData()); } } else if (!bIsLogin) { try { result.UpdateData(data); this.rankingDatas.Sort(); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } } } } }
internal void OnChangeName(int roleid, string oldName, string newName) { WingRankingInfo info = this.getWingData(roleid); if (info != null) { info.strRoleName = newName; } WingPaiHangDBController.getInstance().OnChangeName(roleid, oldName, newName); }
/// <summary> /// 修改翅膀排行榜数据 /// </summary> /// <param name="data"></param> /// <returns></returns> public void ModifyWingPaihangData(WingRankingInfo data, bool bIsLogin) { if (null == data) { return; } lock (rankingDatas) { PlayerWingRankingData result = rankingDatas.Find( delegate(PlayerWingRankingData paiHang) { return(paiHang.roleId == data.nRoleID); } ); // 如果没有在排行榜中,看看能不能添加 if (null == result) { // 排行榜数据量是有限制的 if (rankingDatas.Count < RankingList_Max_Num) { rankingDatas.Add(data.getPlayerWingRankingData()); } else { // 如果数据好于排行榜最后一名,把排行榜最后移除掉,用其代替 if (data.nWingID * 20 + data.nStarNum > rankingDatas[rankingDatas.Count - 1].WingID * 20 + rankingDatas[rankingDatas.Count - 1].WingStarNum) { rankingDatas.RemoveAt(rankingDatas.Count - 1); rankingDatas.Add(data.getPlayerWingRankingData()); } } } // 在排行榜中,用新数据重新排序 else { // 由参数控制,登录时数据没有改变,不需要重新排序 if (!bIsLogin) { try { rankingDatas.Sort(); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false); } } } } }
public void onPlayerLogout(int roleId) { WingRankingInfo data = null; lock (this.playerWingDatas) { this.playerWingDatas.TryGetValue(roleId, out data); if (null != data) { this.playerWingDatas.Remove(roleId); } } }
public WingRankingInfo getWingData(int nRoleID) { WingRankingInfo data = null; lock (this.playerWingDatas) { if (this.playerWingDatas.TryGetValue(nRoleID, out data)) { return(data); } } return(WingPaiHangDBController.getInstance().getWingDataById(nRoleID)); }
/// <summary> /// 创建翅膀数据 /// </summary> /// <param name="data"></param> /// <returns></returns> public WingRankingInfo getWingData(int nRoleID) { WingRankingInfo data = null; lock (playerWingDatas) { if (playerWingDatas.TryGetValue(nRoleID, out data)) { return(data); } } // 没有找到的话直接返回空 // 因为在登录时有处理,这里不找重复处理 return(WingPaiHangDBController.getInstance().getWingDataById(nRoleID)); }