arena
parent
983d1d85ce
commit
ec99e122cd
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Integer> 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<Integer> randomPerson(int myScore){
|
||||
Set<Integer> 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<Integer> enemyList,List<ArenaEnemy> 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()
|
||||
|
|
|
@ -24,8 +24,16 @@ public class ArenaManager extends MongoBase {
|
|||
|
||||
private List<ArenaEnemy> 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue