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); }
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); }
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); }
/// <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); } }