Example #1
0
        public void processCmd(GameServerClient client, int nID, byte[] cmdParams, int count)
        {
            JingJiChallengeResultData data = DataHelper.BytesToObject <JingJiChallengeResultData>(cmdParams, 0, count);
            int ranking = JingJiChangManager.getInstance().onChallengeEnd(data);

            client.sendCmd <int>(10144, ranking);
        }
Example #2
0
        public void processCmd(GameServerClient client, byte[] cmdParams, int count)
        {
            JingJiChallengeResultData data = DataHelper.BytesToObject <JingJiChallengeResultData>(cmdParams, 0, count);

            int ranking = JingJiChangManager.getInstance().onChallengeEnd(data);

            client.sendCmd <int>((int)TCPGameServerCmds.CMD_DB_JINGJICHANG_CHALLENGE_END, ranking);
        }
Example #3
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);
        }
Example #4
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);
            }
        }