diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java index d18cc8736..11bf2b516 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java @@ -13,13 +13,13 @@ import org.springframework.stereotype.Component; public class ArenaChallengeHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { - return MessageTypeProto.MessageType.ARENA_INFO_REQUEST; + return MessageTypeProto.MessageType.ARENA_CHALLENGE_REQUEST; } @Override public void process(ISession iSession, PacketNetData netData) throws Exception { byte[] bytes = netData.parseClientProtoNetData(); ArenaInfoProto.ArenaChallengeRequest arenaChallengeRequest = ArenaInfoProto.ArenaChallengeRequest.parseFrom(bytes); - ArenaLogic.getInstance().challenge(iSession,arenaChallengeRequest.getChallengeUid(),arenaChallengeRequest.getMyAttackTeamId()); + ArenaLogic.getInstance().challenge(iSession,arenaChallengeRequest.getChallengeUid(),arenaChallengeRequest.getTeamId()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 368cac4f1..f4c276934 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -106,23 +106,40 @@ public class ArenaLogic { return; } int fightResult=0; - int myscore = 2000; + int myscore = 1000; int defScore =1000; int enemyType = enemyInfo.getEnemyType(); int myscoreChange=0; int defScoreChange=0; + if(arenaManager.getCount() != 0){ + myscore = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(challengeUid)).intValue(); + } + arenaEnemies = new ArrayList<>(); Set robotIds = randomRobot(user.getPlayerInfoManager().getLevel(), 5); toArenaEnemy(uid,robotIds,arenaEnemies,0); arenaManager.setArenaEnemies(arenaEnemies); - myscoreChange = calScore(myscore, defScore,fightResult); - defScoreChange = calScore(defScore, myscore,fightResult); RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(uid),myscoreChange); if( enemyType == GlobalsDef.ARENA_PLAYER_TYPE){ + User defUser = UserManager.getUser(challengeUid); + fightResult = getFightResultByPersonToPerson(user, teamId, defUser, 200); + defScore = RedisUtil.getInstence().getZSetScore("Arena_Rank_1", Integer.toString(challengeUid)).intValue(); + defScoreChange = calScore(defScore, myscore,fightResult); + myscoreChange = calScore(myscore, defScore,fightResult); RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(challengeUid),defScoreChange); + }else{ + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(challengeUid); + fightResult = getFightResultByPersonToRobot(user, teamId,sArenaRobotConfig); + myscoreChange = calScore(myscore, defScore,fightResult); + defScoreChange = calScore(defScore, myscore,fightResult); + } + if(arenaManager.getCount() == 0){ + RedisUtil.getInstence().incrementZsetScore("Arena_Rank_1",Integer.toString(uid),myscoreChange); + } + arenaManager.updateChallenge(fightResult); //组战斗数据 ArenaInfoProto.ArenaChallengeResponse build = ArenaInfoProto.ArenaChallengeResponse.newBuilder().setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true); @@ -217,6 +234,16 @@ public class ArenaLogic { return robotIds; } + public Set randomPerson(int myScore){ + Set result = new HashSet<>(5); + int[][] interval = SArenaSetting.getSArenaSetting().getInterval(); + for(int[] item: interval){ + int high = item[0]; + + } + return result; + } + private void toArenaEnemy(int uid,Set enemyList,List arenaEnemies,int type){ for(Integer enemyId: enemyList){ if(1 == type && enemyId == uid){ @@ -246,7 +273,7 @@ public class ArenaLogic { .setName(playerInfoManager.getNickName()) .setScore(score) .setHead(0) - .setRank(start++) + .setRank(++start) .setTotalForce(totalForce) .build()); } @@ -256,7 +283,7 @@ public class ArenaLogic { if(score == -1){ score = 1000; }else{ - myRank= RedisUtil.getInstence().getZSetreverseRank("Arena_Rank_1", Integer.toString(uid)).intValue(); + myRank= RedisUtil.getInstence().getZSetreverseRank("Arena_Rank_1", Integer.toString(uid)).intValue()+1; } ArenaInfoProto.GetArenaRankInfoResponse build = ArenaInfoProto.GetArenaRankInfoResponse.newBuilder() diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java index 440af19eb..edbda0251 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.java @@ -24,8 +24,16 @@ public class ArenaManager extends MongoBase { private List arenaEnemies; - public void updateScore(int changeScore){ + public void updateChallenge(int fightResult){ + if(fightResult == 1){ + successNums ++; + updateString("successNums",successNums); + }else{ + failNums++; + updateString("failNums",failNums); + } count++; + updateString("count",count); } @@ -76,4 +84,7 @@ public class ArenaManager extends MongoBase { updateString("useFreeTimes",useFreeTimes); this.useFreeTimes = useFreeTimes; } + + + }