Example #1
0
        /// <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);
                    }
                }
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
 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);
                 }
             }
         }
     }
 }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
                        }
                    }
                }
            }
        }
Example #6
0
        public void onPlayerLogout(int roleId)
        {
            WingRankingInfo data = null;

            lock (this.playerWingDatas)
            {
                this.playerWingDatas.TryGetValue(roleId, out data);
                if (null != data)
                {
                    this.playerWingDatas.Remove(roleId);
                }
            }
        }
Example #7
0
        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));
        }
Example #8
0
        /// <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));
        }