Exemplo n.º 1
0
        public int onChallengeEnd(JingJiChallengeResultData result)
        {
            PlayerJingJiData challenger   = null;
            PlayerJingJiData beChallenger = null;
            int ranking;

            lock (this.changeRankingLock)
            {
                this.playerJingJiDatas.TryGetValue(result.playerId, out challenger);
                this.playerJingJiDatas.TryGetValue(result.robotId, out beChallenger);
                BeChallengerCount beChallengerCount = null;
                this.lockPlayerJingJiDatas.TryGetValue(result.robotId, out beChallengerCount);
                if (null != beChallengerCount)
                {
                    beChallengerCount.nBeChallengerCount--;
                }
                if (result.isWin)
                {
                    int playerRanking = challenger.ranking;
                    int robotRanking  = beChallenger.ranking;
                    if (robotRanking < 1 || playerRanking == robotRanking)
                    {
                        return(challenger.ranking);
                    }
                    if (playerRanking == -1)
                    {
                        challenger.ranking   = robotRanking;
                        beChallenger.ranking = playerRanking;
                        this.rankingDatas.Remove(beChallenger.getPlayerJingJiRankingData());
                        this.rankingDatas.Add(challenger.getPlayerJingJiRankingData());
                        this.rankingDatas.Sort();
                        JingJiChangDBController.getInstance().updateJingJiRanking(challenger.roleId, challenger.ranking);
                        JingJiChangDBController.getInstance().updateJingJiRanking(beChallenger.roleId, beChallenger.ranking);
                    }
                    else if (playerRanking > robotRanking)
                    {
                        challenger.ranking   = robotRanking;
                        beChallenger.ranking = playerRanking;
                        beChallenger.getPlayerJingJiRankingData();
                        challenger.getPlayerJingJiRankingData();
                        this.rankingDatas.Sort();
                        JingJiChangDBController.getInstance().updateJingJiRanking(challenger.roleId, challenger.ranking);
                        JingJiChangDBController.getInstance().updateJingJiRanking(beChallenger.roleId, beChallenger.ranking);
                    }
                }
                ranking = challenger.ranking;
            }
            return(ranking);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 创建竞技场数据
        /// 用于玩家到达一定等级开启竞技场功能时,初始化竞技场数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool createRobotData(PlayerJingJiData data)
        {
            lock (changeRankingLock)
            {
                if (playerJingJiDatas.ContainsKey(data.roleId))
                {
                    return(false);
                }

                data.isOnline = true;
                playerJingJiDatas.Add(data.roleId, data);
                challengeInfos.Add(data.roleId, new List <JingJiChallengeInfoData>());

                if (rankingDatas.Count >= RankingList_Max_Num)
                {
                    data.ranking = -1;
                }
                else
                {
                    data.ranking = rankingDatas.Count + 1;
                    rankingDatas.Add(data.getPlayerJingJiRankingData());
                }
            }

            return(JingJiChangDBController.getInstance().insertJingJiData(data));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 挑战结束处理
        /// </summary>
        public int onChallengeEnd(JingJiChallengeResultData result)
        {
            PlayerJingJiData challenger   = null;
            PlayerJingJiData beChallenger = null;

            //获取数据
            lock (changeRankingLock)
            {
                playerJingJiDatas.TryGetValue(result.playerId, out challenger);
                playerJingJiDatas.TryGetValue(result.robotId, out beChallenger);

                BeChallengerCount beChallengerCount = null;
                lockPlayerJingJiDatas.TryGetValue(result.robotId, out beChallengerCount);
                if (null != beChallengerCount)
                {
                    beChallengerCount.nBeChallengerCount -= 1;
                }

                //胜利
                if (result.isWin)
                {
                    // lock (rankingDatas)
                    {
                        //记录挑战前排行
                        int playerRanking = challenger.ranking;
                        int robotRanking  = beChallenger.ranking;

                        // 被挑战者500名以后或排名相等,直接返回
                        if (robotRanking < 1 || playerRanking == robotRanking)
                        {
                            return(challenger.ranking);
                        }
                        //挑战者500名以后
                        else if (playerRanking == -1)
                        {
                            //排行互换
                            challenger.ranking   = robotRanking;
                            beChallenger.ranking = playerRanking;

                            //被挑战者排名500名以后,被踢出排行榜
                            rankingDatas.Remove(beChallenger.getPlayerJingJiRankingData());

                            //将挑战者加入排行榜
                            rankingDatas.Add(challenger.getPlayerJingJiRankingData());

                            rankingDatas.Sort();

                            JingJiChangDBController.getInstance().updateJingJiRanking(challenger.roleId, challenger.ranking);
                            JingJiChangDBController.getInstance().updateJingJiRanking(beChallenger.roleId, beChallenger.ranking);
                        }
                        //双方都在榜上
                        else if (playerRanking > robotRanking)
                        {
                            //排行互换
                            challenger.ranking   = robotRanking;
                            beChallenger.ranking = playerRanking;

                            beChallenger.getPlayerJingJiRankingData();
                            challenger.getPlayerJingJiRankingData();

                            rankingDatas.Sort();

                            JingJiChangDBController.getInstance().updateJingJiRanking(challenger.roleId, challenger.ranking);
                            JingJiChangDBController.getInstance().updateJingJiRanking(beChallenger.roleId, beChallenger.ranking);
                        }
                    }
                }

                return(challenger.ranking);
            }
        }