Merge branch 'master_test_hw_server_arena' of http://60.1.1.230/backend/jieling_server into master_test_hw_server_arena
# Conflicts: # gamecommon/src/main/java/rpc/protocols/CommonProto.java # gamecommon/src/main/java/rpc/protocols/MessageTypeProto.java # gamecommon/src/main/java/rpc/world/WorldProto.java # worldserver/build.gradle # worldserver/src/main/java/com/world/handler/GetWorldArenaChallengeRequestHandler.java # worldserver/src/main/java/com/world/handler/GetWorldArenaRecordInfoRequestHandler.java # worldserver/src/main/java/com/world/redis/RedisKey.javaback_recharge
commit
fb5da8c93b
File diff suppressed because it is too large
Load Diff
|
@ -4061,30 +4061,6 @@ public final class MessageTypeProto {
|
|||
* <code>SeletSubRewardPoolResponse = 303672;</code>
|
||||
*/
|
||||
SeletSubRewardPoolResponse(655, 303672),
|
||||
/**
|
||||
* <code>NewGeneralAttackRequest = 303691;</code>
|
||||
*
|
||||
* <pre>
|
||||
*303691 - 303692 新将来袭
|
||||
* </pre>
|
||||
*/
|
||||
NewGeneralAttackRequest(656, 303691),
|
||||
/**
|
||||
* <code>NewGeneralAttackResponse = 303692;</code>
|
||||
*/
|
||||
NewGeneralAttackResponse(657, 303692),
|
||||
/**
|
||||
* <code>UpgradeGodTreeRequest = 303701;</code>
|
||||
*
|
||||
* <pre>
|
||||
* 303701 - 303702 建木神树
|
||||
* </pre>
|
||||
*/
|
||||
UpgradeGodTreeRequest(658, 303701),
|
||||
/**
|
||||
* <code>UpgradeGodTreeResponse = 303702;</code>
|
||||
*/
|
||||
UpgradeGodTreeResponse(659, 303702),
|
||||
/**
|
||||
* <code>GetWorldServerRequest = 800001;</code>
|
||||
*
|
||||
|
@ -4092,11 +4068,11 @@ public final class MessageTypeProto {
|
|||
*800000起为global 协议
|
||||
* </pre>
|
||||
*/
|
||||
GetWorldServerRequest(660, 800001),
|
||||
GetWorldServerRequest(656, 800001),
|
||||
/**
|
||||
* <code>GetWorldServerResponse = 800002;</code>
|
||||
*/
|
||||
GetWorldServerResponse(661, 800002),
|
||||
GetWorldServerResponse(657, 800002),
|
||||
/**
|
||||
* <code>GetWorldArenaInfoRequest = 900001;</code>
|
||||
*
|
||||
|
@ -4104,11 +4080,11 @@ public final class MessageTypeProto {
|
|||
*900000起为跨服消息 世界服服返回消息gs只负责透传
|
||||
* </pre>
|
||||
*/
|
||||
GetWorldArenaInfoRequest(662, 900001),
|
||||
GetWorldArenaInfoRequest(658, 900001),
|
||||
/**
|
||||
* <code>GetWorldArenaInfoResponse = 900002;</code>
|
||||
*/
|
||||
GetWorldArenaInfoResponse(663, 900002),
|
||||
GetWorldArenaInfoResponse(659, 900002),
|
||||
/**
|
||||
* <code>GetWorldArenaChallengeRequest = 900003;</code>
|
||||
*
|
||||
|
@ -4116,11 +4092,11 @@ public final class MessageTypeProto {
|
|||
*跨服天梯挑战
|
||||
* </pre>
|
||||
*/
|
||||
GetWorldArenaChallengeRequest(664, 900003),
|
||||
GetWorldArenaChallengeRequest(660, 900003),
|
||||
/**
|
||||
* <code>GetWorldArenaChallengeResponse = 900004;</code>
|
||||
*/
|
||||
GetWorldArenaChallengeResponse(665, 900004),
|
||||
GetWorldArenaChallengeResponse(661, 900004),
|
||||
/**
|
||||
* <code>GetWorldArenaProudRequest = 900005;</code>
|
||||
*
|
||||
|
@ -4128,11 +4104,11 @@ public final class MessageTypeProto {
|
|||
*膜拜
|
||||
* </pre>
|
||||
*/
|
||||
GetWorldArenaProudRequest(666, 900005),
|
||||
GetWorldArenaProudRequest(662, 900005),
|
||||
/**
|
||||
* <code>GetWorldArenaProudResponse = 900006;</code>
|
||||
*/
|
||||
GetWorldArenaProudResponse(667, 900006),
|
||||
GetWorldArenaProudResponse(663, 900006),
|
||||
/**
|
||||
* <code>GetWorldArenaRecordInfoRequest = 900007;</code>
|
||||
*
|
||||
|
@ -4140,11 +4116,11 @@ public final class MessageTypeProto {
|
|||
*跨服天梯挑战与被挑战 战斗记录
|
||||
* </pre>
|
||||
*/
|
||||
GetWorldArenaRecordInfoRequest(668, 900007),
|
||||
GetWorldArenaRecordInfoRequest(664, 900007),
|
||||
/**
|
||||
* <code>GetWorldArenaRecordInfoResponse = 900008;</code>
|
||||
*/
|
||||
GetWorldArenaRecordInfoResponse(669, 900008),
|
||||
GetWorldArenaRecordInfoResponse(665, 900008),
|
||||
/**
|
||||
* <code>GetGSUserArenaInfoRequest = 900009;</code>
|
||||
*
|
||||
|
@ -4152,23 +4128,15 @@ public final class MessageTypeProto {
|
|||
*gs --》word
|
||||
* </pre>
|
||||
*/
|
||||
GetGSUserArenaInfoRequest(670, 900009),
|
||||
GetGSUserArenaInfoRequest(666, 900009),
|
||||
/**
|
||||
* <code>GetGSUserArenaInfoResponse = 900010;</code>
|
||||
*/
|
||||
GetGSUserArenaInfoResponse(671, 900010),
|
||||
GetGSUserArenaInfoResponse(667, 900010),
|
||||
/**
|
||||
* <code>GetRankRequest = 900011;</code>
|
||||
*/
|
||||
GetRankRequest(672, 900011),
|
||||
/**
|
||||
* <code>AddDeathPathRankRequest = 900012;</code>
|
||||
*/
|
||||
AddDeathPathRankRequest(673, 900012),
|
||||
/**
|
||||
* <code>GetDeathPathFirstRequest = 900013;</code>
|
||||
*/
|
||||
GetDeathPathFirstRequest(674, 900013),
|
||||
GetRankRequest(668, 900011),
|
||||
;
|
||||
|
||||
/**
|
||||
|
@ -8219,30 +8187,6 @@ public final class MessageTypeProto {
|
|||
* <code>SeletSubRewardPoolResponse = 303672;</code>
|
||||
*/
|
||||
public static final int SeletSubRewardPoolResponse_VALUE = 303672;
|
||||
/**
|
||||
* <code>NewGeneralAttackRequest = 303691;</code>
|
||||
*
|
||||
* <pre>
|
||||
*303691 - 303692 新将来袭
|
||||
* </pre>
|
||||
*/
|
||||
public static final int NewGeneralAttackRequest_VALUE = 303691;
|
||||
/**
|
||||
* <code>NewGeneralAttackResponse = 303692;</code>
|
||||
*/
|
||||
public static final int NewGeneralAttackResponse_VALUE = 303692;
|
||||
/**
|
||||
* <code>UpgradeGodTreeRequest = 303701;</code>
|
||||
*
|
||||
* <pre>
|
||||
* 303701 - 303702 建木神树
|
||||
* </pre>
|
||||
*/
|
||||
public static final int UpgradeGodTreeRequest_VALUE = 303701;
|
||||
/**
|
||||
* <code>UpgradeGodTreeResponse = 303702;</code>
|
||||
*/
|
||||
public static final int UpgradeGodTreeResponse_VALUE = 303702;
|
||||
/**
|
||||
* <code>GetWorldServerRequest = 800001;</code>
|
||||
*
|
||||
|
@ -8319,14 +8263,6 @@ public final class MessageTypeProto {
|
|||
* <code>GetRankRequest = 900011;</code>
|
||||
*/
|
||||
public static final int GetRankRequest_VALUE = 900011;
|
||||
/**
|
||||
* <code>AddDeathPathRankRequest = 900012;</code>
|
||||
*/
|
||||
public static final int AddDeathPathRankRequest_VALUE = 900012;
|
||||
/**
|
||||
* <code>GetDeathPathFirstRequest = 900013;</code>
|
||||
*/
|
||||
public static final int GetDeathPathFirstRequest_VALUE = 900013;
|
||||
|
||||
|
||||
public final int getNumber() { return value; }
|
||||
|
@ -8989,10 +8925,6 @@ public final class MessageTypeProto {
|
|||
case 303656: return GetShejiAwardResponse;
|
||||
case 303671: return SeletSubRewardPoolRequest;
|
||||
case 303672: return SeletSubRewardPoolResponse;
|
||||
case 303691: return NewGeneralAttackRequest;
|
||||
case 303692: return NewGeneralAttackResponse;
|
||||
case 303701: return UpgradeGodTreeRequest;
|
||||
case 303702: return UpgradeGodTreeResponse;
|
||||
case 800001: return GetWorldServerRequest;
|
||||
case 800002: return GetWorldServerResponse;
|
||||
case 900001: return GetWorldArenaInfoRequest;
|
||||
|
@ -9006,8 +8938,6 @@ public final class MessageTypeProto {
|
|||
case 900009: return GetGSUserArenaInfoRequest;
|
||||
case 900010: return GetGSUserArenaInfoResponse;
|
||||
case 900011: return GetRankRequest;
|
||||
case 900012: return AddDeathPathRankRequest;
|
||||
case 900013: return GetDeathPathFirstRequest;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
@ -9069,7 +8999,7 @@ public final class MessageTypeProto {
|
|||
static {
|
||||
java.lang.String[] descriptorData = {
|
||||
"\n\026MessageTypeProto.proto\022\rrpc.protocols*" +
|
||||
"\300\254\001\n\013MessageType\022\027\n\022HEART_BEAT_REQUEST\020\350" +
|
||||
"\207\253\001\n\013MessageType\022\027\n\022HEART_BEAT_REQUEST\020\350" +
|
||||
"\007\022\030\n\023HEART_BEAT_RESPONSE\020\351\007\022\036\n\031ACTIVITE_" +
|
||||
"WORKSHOP_REQUEST\020\224N\022\037\n\032ACTIVITE_WORKSHOP" +
|
||||
"_RESPONSE\020\225N\022\027\n\022ARENA_INFO_REQUEST\020\226N\022\030\n" +
|
||||
|
@ -9605,23 +9535,18 @@ public final class MessageTypeProto {
|
|||
"tivityItemResponse\020\246\304\022\022\032\n\024GetShejiAwardR" +
|
||||
"equest\020\247\304\022\022\033\n\025GetShejiAwardResponse\020\250\304\022\022" +
|
||||
"\037\n\031SeletSubRewardPoolRequest\020\267\304\022\022 \n\032Sele" +
|
||||
"tSubRewardPoolResponse\020\270\304\022\022\035\n\027NewGeneral" +
|
||||
"AttackRequest\020\313\304\022\022\036\n\030NewGeneralAttackRes" +
|
||||
"ponse\020\314\304\022\022\033\n\025UpgradeGodTreeRequest\020\325\304\022\022\034",
|
||||
"\n\026UpgradeGodTreeResponse\020\326\304\022\022\033\n\025GetWorld" +
|
||||
"ServerRequest\020\201\3520\022\034\n\026GetWorldServerRespo" +
|
||||
"nse\020\202\3520\022\036\n\030GetWorldArenaInfoRequest\020\241\3676\022" +
|
||||
"\037\n\031GetWorldArenaInfoResponse\020\242\3676\022#\n\035GetW" +
|
||||
"orldArenaChallengeRequest\020\243\3676\022$\n\036GetWorl" +
|
||||
"dArenaChallengeResponse\020\244\3676\022\037\n\031GetWorldA" +
|
||||
"renaProudRequest\020\245\3676\022 \n\032GetWorldArenaPro" +
|
||||
"udResponse\020\246\3676\022$\n\036GetWorldArenaRecordInf" +
|
||||
"oRequest\020\247\3676\022%\n\037GetWorldArenaRecordInfoR" +
|
||||
"esponse\020\250\3676\022\037\n\031GetGSUserArenaInfoRequest",
|
||||
"\020\251\3676\022 \n\032GetGSUserArenaInfoResponse\020\252\3676\022\024" +
|
||||
"\n\016GetRankRequest\020\253\3676\022\035\n\027AddDeathPathRank" +
|
||||
"Request\020\254\3676\022\036\n\030GetDeathPathFirstRequest\020" +
|
||||
"\255\3676B\002H\001"
|
||||
"tSubRewardPoolResponse\020\270\304\022\022\033\n\025GetWorldSe" +
|
||||
"rverRequest\020\201\3520\022\034\n\026GetWorldServerRespons" +
|
||||
"e\020\202\3520\022\036\n\030GetWorldArenaInfoRequest\020\241\3676\022\037\n",
|
||||
"\031GetWorldArenaInfoResponse\020\242\3676\022#\n\035GetWor" +
|
||||
"ldArenaChallengeRequest\020\243\3676\022$\n\036GetWorldA" +
|
||||
"renaChallengeResponse\020\244\3676\022\037\n\031GetWorldAre" +
|
||||
"naProudRequest\020\245\3676\022 \n\032GetWorldArenaProud" +
|
||||
"Response\020\246\3676\022$\n\036GetWorldArenaRecordInfoR" +
|
||||
"equest\020\247\3676\022%\n\037GetWorldArenaRecordInfoRes" +
|
||||
"ponse\020\250\3676\022\037\n\031GetGSUserArenaInfoRequest\020\251" +
|
||||
"\3676\022 \n\032GetGSUserArenaInfoResponse\020\252\3676\022\024\n\016" +
|
||||
"GetRankRequest\020\253\3676B\002H\001"
|
||||
};
|
||||
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,38 @@
|
|||
package com.ljsd.jieling.handler.gtw;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.network.server.GlobalidHelper;
|
||||
import com.ljsd.jieling.network.server.WorldHelper;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.world.WorldCommonProto;
|
||||
|
||||
/**
|
||||
* Description: des
|
||||
* Author: zsx
|
||||
* CreateDate: 2020/12/10 19:55
|
||||
*/
|
||||
public class GetWorldArenaProudRequestHandler extends BaseHandler<WorldCommonProto.GetWorldArenaProudRequest> {
|
||||
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, WorldCommonProto.GetWorldArenaProudRequest proto) throws Exception {
|
||||
|
||||
GlobalidHelper.WorldInfo worldInfo = GlobalidHelper.getWorldInfo();
|
||||
if (null == worldInfo){
|
||||
throw new ErrorCodeException("world unavailable or play not open");
|
||||
}
|
||||
|
||||
//转发到world服
|
||||
boolean b = WorldHelper.sendMessageToWord(iSession.getUid(),proto);
|
||||
if(!b){
|
||||
throw new ErrorCodeException(ErrorCode.UNKNOWN);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.ljsd.jieling.handler.gtw;
|
||||
|
||||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.network.server.GlobalidHelper;
|
||||
import com.ljsd.jieling.network.server.WorldHelper;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.world.WorldProto;
|
||||
|
||||
/**
|
||||
* Description: des
|
||||
* Author: zsx
|
||||
* CreateDate: 2020/12/10 19:53
|
||||
*/
|
||||
public class GetWorldArenaRecordInfoRequestHandler extends BaseHandler<WorldProto.GetWorldArenaRecordInfoRequest> {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, WorldProto.GetWorldArenaRecordInfoRequest proto) throws Exception {
|
||||
GlobalidHelper.WorldInfo worldInfo = GlobalidHelper.getWorldInfo();
|
||||
if (null == worldInfo){
|
||||
throw new ErrorCodeException("world unavailable or play not open");
|
||||
}
|
||||
|
||||
//转发到world服
|
||||
boolean b = WorldHelper.sendMessageToWord(iSession.getUid(),proto);
|
||||
if(!b){
|
||||
throw new ErrorCodeException(ErrorCode.UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -236,8 +236,6 @@ class SheJiActivity extends AbstractActivity {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
for (Integer uid : sendUids) {
|
||||
try {
|
||||
User user = UserManager.getUser(uid, true);
|
||||
|
|
|
@ -13,6 +13,7 @@ public enum UUIDEnum {
|
|||
EXPEDITION(9),//圣物
|
||||
JEWEL(10),
|
||||
SpecialMonster(11),
|
||||
ROBOT_UUID(12),
|
||||
;
|
||||
|
||||
private int value;
|
||||
|
|
|
@ -23,13 +23,23 @@ jar {
|
|||
dependencies {
|
||||
compile project(":netty")
|
||||
compile project(":hotfix")
|
||||
compile project(":serverlogic")
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
compile("org.apache.thrift:libthrift:0.9.2")
|
||||
compile("org.springframework.boot:spring-boot-starter-data-redis:1.5.9.RELEASE")
|
||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4'
|
||||
compile project(":gamecommon")
|
||||
compile project(":tablemanager")
|
||||
compile project(":serverlogic")
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
compile("org.javassist:javassist:3.18.2-GA")
|
||||
compile("org.springframework.boot:spring-boot:1.5.9.RELEASE")
|
||||
compile("org.springframework.boot:spring-boot-starter-test:1.5.9.RELEASE")
|
||||
compile("org.springframework.boot:spring-boot-starter-data-redis:1.5.9.RELEASE")
|
||||
compile("io.netty:netty-all:4.1.6.Final")
|
||||
compile("com.google.protobuf:protobuf-java:2.5.0")
|
||||
compile("com.fasterxml.jackson.core:jackson-core:2.3.1")
|
||||
compile("com.fasterxml.jackson.core:jackson-databind:2.3.3")
|
||||
compile group: 'com.googlecode.protobuf-java-format', name: 'protobuf-java-format', version: '1.2'
|
||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4'
|
||||
compile("org.apache.thrift:libthrift:0.9.2")
|
||||
compile("com.alibaba:fastjson:1.2.47")
|
||||
compile("org.apache.httpcomponents:httpclient:4.5.3")
|
||||
compile files("${System.properties['java.home']}/../lib/tools.jar")
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.util.KeyGenUtils;
|
||||
import com.world.config.ConfigurableApplicationContextManager;
|
||||
import com.world.config.WorldCoreSettings;
|
||||
import com.world.db.mongo.MongoUtil;
|
||||
|
@ -58,7 +60,7 @@ public class WorldServerApplication {
|
|||
LOGGER.info("STableManager err ->{}", e);
|
||||
}
|
||||
|
||||
|
||||
KeyGenUtils.setMachineNum(0);
|
||||
WorldRpcService.initHandler("com.world.handler", WorldServerApplication.class.getClassLoader());
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,18 @@ package com.world.handler;
|
|||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.fight.ArenaRecord;
|
||||
import com.ljsd.fight.ArenaRecordWrap;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.logic.championship.ChampionshipLogic;
|
||||
import com.ljsd.jieling.logic.dao.FamilyFightInfo;
|
||||
import com.ljsd.jieling.logic.dao.PlayerManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.fight.result.FightResult;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.util.KeyGenUtils;
|
||||
import com.ljsd.jieling.util.UUIDEnum;
|
||||
import com.world.logic.arean.ArenaEnemy;
|
||||
import com.world.logic.arean.ArenaLogic;
|
||||
import com.world.logic.arean.fight.FightUtil;
|
||||
|
@ -40,7 +51,7 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
}
|
||||
|
||||
|
||||
Lockeys.getInstance().lock("arena",rpcMessage.getServerId());
|
||||
Lockeys.getInstance().lock("arena", rpcMessage.getServerId());
|
||||
|
||||
try {
|
||||
//TODO 校验需要对手是否在匹配范围内
|
||||
|
@ -49,9 +60,9 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
HashMap<Integer, ArenaEnemy> integerIntegerHashMap = ArenaLogic.ranInfo.get(integer);
|
||||
//判断信息是否改变
|
||||
//我的信息
|
||||
Set<Integer> hisRank =RedisUtil.getInstence().getObject(RedisUtil.getInstence().getKey(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(rpcMessage.getUid())), new TypeToken<Set<Integer>>() {
|
||||
Set<Integer> hisRank = RedisUtil.getInstence().getObject(RedisUtil.getInstence().getKey(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(rpcMessage.getUid())), new TypeToken<Set<Integer>>() {
|
||||
}.getType());
|
||||
if(hisRank.size()==0){
|
||||
if (hisRank.size() == 0) {
|
||||
//被替了
|
||||
//重新拿数据
|
||||
builder1.setErr(-2);
|
||||
|
@ -59,7 +70,7 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
}
|
||||
//对方信息
|
||||
ArenaEnemy arenaEnemy = integerIntegerHashMap.get(proto.getChallengeRank());
|
||||
if(arenaEnemy==null||arenaEnemy.getEnemyId()!=proto.getChallengeUid()){
|
||||
if (arenaEnemy == null || arenaEnemy.getEnemyId() != proto.getChallengeUid()) {
|
||||
builder1.setErr(-2);
|
||||
return builder1.build();
|
||||
}
|
||||
|
@ -67,21 +78,24 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
|
||||
int force;
|
||||
CommonProto.FightTeamInfo teamInfo;
|
||||
if(arenaEnemy.getEnemyType()==1){
|
||||
CommonProto.ArenaEnemy arenaEnemys;
|
||||
if (arenaEnemy.getEnemyType() == 1) {
|
||||
WorldProto.GetGSUserArenaInfoResponse getGSUserArenaInfoResponse = gsHelper.sendMessageToGs(arenaEnemy.getServerID(), arenaEnemy.getEnemyId(), WorldProto.GetGSUserArenaInfoRequest.newBuilder().setUid(arenaEnemy.getEnemyId()).build(), WorldProto.GetGSUserArenaInfoResponse.class);
|
||||
if (getGSUserArenaInfoResponse == null) {
|
||||
builder1.setErr(-2);
|
||||
return builder1.build();
|
||||
}
|
||||
force=getGSUserArenaInfoResponse.getTotalForce();
|
||||
force = getGSUserArenaInfoResponse.getTotalForce();
|
||||
teamInfo = getGSUserArenaInfoResponse.getFightTeamInfo();
|
||||
}else {
|
||||
arenaEnemys = getGSUserArenaInfoResponse.getArenaEnemys();
|
||||
} else {
|
||||
teamInfo = FightUtil.makeRobotFightData(arenaEnemy.getEnemyId());
|
||||
force = SArenaRobotConfig.getsArenaRobotConfigById(arenaEnemy.getEnemyId()).getTotalForce();
|
||||
force = SArenaRobotConfig.getsArenaRobotConfigById(arenaEnemy.getEnemyId()).getTotalForce();
|
||||
arenaEnemys =ArenaLogic.getInstance().getRobotArenaEnemy(arenaEnemy.getEnemyId());
|
||||
}
|
||||
|
||||
|
||||
boolean isRevert = proto.getTotalForce()<force;
|
||||
boolean isRevert = proto.getTotalForce() < force;
|
||||
FightResult fightResult = FightUtil.getFightForPVP(rpcMessage.getUid(), proto.getChallengeUid(), proto.getFightTeamInfo(), teamInfo, FightUtil.getFightSeed(), isRevert);
|
||||
builder1.setFightResult(fightResult.getCheckResult()[0]);
|
||||
int seed = fightResult.getSeed();
|
||||
|
@ -93,44 +107,52 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
.build();
|
||||
builder1.setFightData(build);
|
||||
CommonProto.ArenaInfo.Builder arenaInfoBuild = CommonProto.ArenaInfo.newBuilder();
|
||||
if(fightResult.getCheckResult()[0]>0){
|
||||
WorldProto.WroldBattleRecord.Builder builder = WorldProto.WroldBattleRecord.newBuilder();
|
||||
builder.setFightData(fightResult.getFightData());
|
||||
builder.setResult(fightResult.getCheckResult()[0]);
|
||||
if (fightResult.getCheckResult()[0] > 0) {
|
||||
|
||||
//交换队伍
|
||||
Map.Entry<Integer, ArenaEnemy> myRank = ArenaLogic.getKey(integerIntegerHashMap, rpcMessage.getUid());
|
||||
if(myRank!=null){
|
||||
integerIntegerHashMap.put(myRank.getKey(),arenaEnemy);
|
||||
integerIntegerHashMap.put(proto.getChallengeRank(),myRank.getValue());
|
||||
if(arenaEnemy.getEnemyType()==0){
|
||||
if (myRank != null) {
|
||||
builder.setOldrank(myRank.getKey());
|
||||
integerIntegerHashMap.put(myRank.getKey(), arenaEnemy);
|
||||
integerIntegerHashMap.put(proto.getChallengeRank(), myRank.getValue());
|
||||
if (arenaEnemy.getEnemyType() == 0) {
|
||||
//清空匹配
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf( arenaEnemy.getEnemyId()), new HashSet<>());
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(arenaEnemy.getEnemyId()), new HashSet<>());
|
||||
}
|
||||
}else {
|
||||
integerIntegerHashMap.put(proto.getChallengeRank(), new ArenaEnemy(rpcMessage.getUid(),rpcMessage.getServerId(),1,0));
|
||||
} else {
|
||||
builder.setOldrank(9999);
|
||||
integerIntegerHashMap.put(proto.getChallengeRank(), new ArenaEnemy(rpcMessage.getUid(), rpcMessage.getServerId(), 1, 0));
|
||||
}
|
||||
myRank = ArenaLogic.getKey(integerIntegerHashMap, rpcMessage.getUid());
|
||||
//处理匹配信息
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf( rpcMessage.getUid()), new HashSet<>());
|
||||
List<ArenaEnemy> arenaEnemies = ArenaLogic.randomRank(integerIntegerHashMap, rpcMessage.getUid(), myRank==null?9999:myRank.getKey());
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(rpcMessage.getUid()), new HashSet<>());
|
||||
List<ArenaEnemy> arenaEnemies = ArenaLogic.randomRank(integerIntegerHashMap, rpcMessage.getUid(), myRank == null ? 9999 : myRank.getKey());
|
||||
|
||||
//notify client
|
||||
List<CommonProto.ArenaEnemy> arenaEnemyList = ArenaLogic.getInstance().getArenaEnemyList(new LinkedList<>(arenaEnemies));
|
||||
List<CommonProto.ArenaEnemy> arenaEnemyList = ArenaLogic.getInstance().getArenaEnemyList(new LinkedList<>(arenaEnemies),new LinkedList<>());
|
||||
arenaInfoBuild.addAllArenaEnemys(arenaEnemyList);
|
||||
arenaInfoBuild.setScore(proto.getChallengeRank());
|
||||
|
||||
|
||||
// ArenaRecord arenaRecord = new ArenaRecord();
|
||||
// arenaRecord.setAttackId(rpcMessage.getUid());
|
||||
// arenaRecord.setDefScore(defScoreChange);
|
||||
// arenaRecord.setCreateTime((int) (System.currentTimeMillis() / 1000));
|
||||
// arenaRecord.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ARENARECORD, uid));
|
||||
// arenaRecord.setFightResult(fightResult ^ 1);
|
||||
// RedisUtil.getInstence().putMapEntry(RedisKey.ARENA_RRECORD, Integer.toString(challengeUid), arenaRecord.getId(), ArenaRecordWrap);
|
||||
//record
|
||||
builder.setRedEnemy(proto.getArenaEnemys());
|
||||
builder.setBlueEnemy(arenaEnemys);
|
||||
builder.setRank(myRank == null ? 9999 : myRank.getKey());
|
||||
String s = KeyGenUtils.produceIdByModule(UUIDEnum.ARENARECORD, rpcMessage.getUid());
|
||||
builder.setRecordId(s);
|
||||
builder.setAttackTime((int)(System.currentTimeMillis()/1000));
|
||||
RedisUtil.getInstence().putMapEntry(RedisKey.WORLD_ARENA_RRECORD, Integer.toString(proto.getChallengeUid()), s, builder.build().toByteArray());
|
||||
RedisUtil.getInstence().putMapEntry(RedisKey.WORLD_ARENA_RRECORD,Integer.toString(rpcMessage.getUid()), s, builder.build().toByteArray());
|
||||
}
|
||||
//
|
||||
// builder1.setArenaInfo(arenaInfoBuild);
|
||||
}catch (Exception e){
|
||||
|
||||
builder1.setArenaInfo(arenaInfoBuild);
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
Lockeys.getInstance().reset();
|
||||
}
|
||||
|
||||
//TODO 掉落
|
||||
|
||||
return builder1.build();
|
||||
|
@ -138,4 +160,5 @@ public class GetWorldArenaChallengeRequestHandler extends gtGBaseHandler<WorldPr
|
|||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -39,7 +39,12 @@ public class GetWorldArenaInfoRequestHandler extends gtGBaseHandler<WorldProto.G
|
|||
}
|
||||
List<ArenaEnemy> arenaEnemies = ArenaLogic.randomRank(integerIntegerHashMap, rpcMessage.getUid(), myIndex);
|
||||
builder.setStage(2);
|
||||
builder1.setScore(myIndex).addAllArenaEnemys(ArenaLogic.getInstance().getArenaEnemyList(new LinkedList<>(arenaEnemies))).build();
|
||||
List<String> strings = RedisUtil.getInstence().lGet(RedisKey.WORLD_ARENA_MY_PRON,String.valueOf(rpcMessage.getUid()), 0, -1);
|
||||
List<CommonProto.ArenaEnemy> arenaEnemyList = ArenaLogic.getInstance().getArenaEnemyList(new LinkedList<>(arenaEnemies),strings);
|
||||
builder1.setScore(myIndex)
|
||||
.addAllArenaEnemys(arenaEnemyList)
|
||||
.build();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
LOGGER.error(e.toString());
|
||||
|
|
|
@ -3,9 +3,12 @@ package com.world.handler;
|
|||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.world.logic.arean.ArenaEnemy;
|
||||
import com.world.logic.arean.ArenaLogic;
|
||||
import com.world.redis.RedisKey;
|
||||
import com.world.redis.RedisUtil;
|
||||
import rpc.net.RpcMessage;
|
||||
import rpc.net.gtGBaseHandler;
|
||||
import rpc.world.WorldCommonProto;
|
||||
import rpc.world.WorldProto;
|
||||
import rpc.world.WorldProto;
|
||||
import util.Lockeys;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
@ -16,23 +19,33 @@ import java.util.Map;
|
|||
* Author: zsx
|
||||
* CreateDate: 2020/12/2 21:19
|
||||
*/
|
||||
public class GetWorldArenaProudRequestHandler extends gtGBaseHandler<WorldCommonProto.GetWorldArenaProudRequest> {
|
||||
public class GetWorldArenaProudRequestHandler extends gtGBaseHandler<WorldProto.GetWorldArenaProudRequest> {
|
||||
|
||||
@Override
|
||||
public GeneratedMessage processWithProto(RpcMessage rpcMessage, WorldCommonProto.GetWorldArenaProudRequest proto) throws Exception {
|
||||
WorldCommonProto.GetWorldArenaProudResponse.Builder builder = WorldCommonProto.GetWorldArenaProudResponse.newBuilder();
|
||||
public GeneratedMessage processWithProto(RpcMessage rpcMessage, WorldProto.GetWorldArenaProudRequest proto) throws Exception {
|
||||
WorldProto.GetWorldArenaProudResponse.Builder builder = WorldProto.GetWorldArenaProudResponse.newBuilder();
|
||||
|
||||
try {
|
||||
//check 膜拜 在逻辑服做
|
||||
Lockeys.getInstance().lock("arena", rpcMessage.getServerId());
|
||||
|
||||
|
||||
|
||||
Integer integer = ArenaLogic.serverSplit.get(String.valueOf(rpcMessage.getServerId()));
|
||||
HashMap<Integer, ArenaEnemy> integerIntegerHashMap = ArenaLogic.ranInfo.get(integer);
|
||||
Map.Entry<Integer, ArenaEnemy> challRank = ArenaLogic.getKey(integerIntegerHashMap, proto.getChallengeUid());
|
||||
if(challRank==null||challRank.getKey()!=proto.getChallengeUid()){
|
||||
ArenaEnemy arenaEnemy = integerIntegerHashMap.get(proto.getChallengeRank());
|
||||
if(arenaEnemy==null||arenaEnemy.getEnemyId()!=proto.getChallengeUid()){
|
||||
return builder.build();
|
||||
}
|
||||
challRank.getValue().addWorshipTime();
|
||||
RedisUtil.getInstence().lSet(RedisKey.WORLD_ARENA_MY_PRON+":"+rpcMessage.getUid(),String.valueOf(arenaEnemy.getEnemyId_UUid()));
|
||||
arenaEnemy.addWorshipTime();
|
||||
|
||||
// builder.setDrop()
|
||||
builder.setWorshipTime(arenaEnemy.getWorshipTime());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
Lockeys.getInstance().reset();
|
||||
}
|
||||
|
||||
//todo 添加掉落
|
||||
|
|
|
@ -12,9 +12,10 @@ import rpc.protocols.CommonProto;
|
|||
import rpc.world.WorldProto;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Description: 许愿
|
||||
* Description:
|
||||
* Author: zsx
|
||||
* CreateDate: 2020/12/4 16:27
|
||||
*/
|
||||
|
@ -35,32 +36,29 @@ public class GetWorldArenaRecordInfoRequestHandler extends gtGBaseHandler<WorldP
|
|||
}
|
||||
|
||||
|
||||
Map<String, ArenaRecordWrap> result = RedisUtil.getInstence().getMapValues(RedisKey.WORLD_ARENA_RRECORD, Integer.toString(rpcMessage.getUid()), String.class, ArenaRecordWrap.class);
|
||||
Map<String, byte[]> result = RedisUtil.getInstence().getMapValues(RedisKey.WORLD_ARENA_RRECORD, Integer.toString(rpcMessage.getUid()), String.class, byte[].class);
|
||||
|
||||
|
||||
if (result != null && !result.isEmpty()) {
|
||||
List<CommonProto.ArenaRecordInfo> arenaRecordInfos = new ArrayList<>();
|
||||
List<ArenaRecordWrap> arenaRecordList = new ArrayList<>(result.values());
|
||||
arenaRecordList.sort(Comparator.comparingInt(o -> o.getArenaRecord().getCreateTime()));
|
||||
List< byte[]> arenaRecordList = new ArrayList<>(result.values());
|
||||
List<WorldProto.WroldBattleRecord> collect = arenaRecordList.stream().map(bytes -> {try {
|
||||
return WorldProto.WroldBattleRecord.parseFrom(bytes);
|
||||
}catch (Exception e){}
|
||||
return null;
|
||||
}).collect(Collectors.toList());
|
||||
collect.sort(Comparator.comparingInt(WorldProto.WroldBattleRecord::getAttackTime));
|
||||
int size = arenaRecordList.size();
|
||||
if (size > 20) {
|
||||
String[] removeMapKeys = new String[size - 10];
|
||||
for (int i = 0; i < size - 10; i++) {
|
||||
ArenaRecordWrap remove = arenaRecordList.remove(0);
|
||||
String removeId = remove.getArenaRecord().getId();
|
||||
WorldProto.WroldBattleRecord remove = collect.remove(0);
|
||||
String removeId = remove.getRecordId();
|
||||
removeMapKeys[i] = (removeId);
|
||||
}
|
||||
RedisUtil.getInstence().removeMapEntrys(RedisKey.WORLD_ARENA_RRECORD, Integer.toString(rpcMessage.getUid()), removeMapKeys);
|
||||
}
|
||||
|
||||
for (ArenaRecordWrap arenaRecord : arenaRecordList) {
|
||||
arenaRecordInfos.add(CommonProto.ArenaRecordInfo.newBuilder()
|
||||
.setId(arenaRecord.getArenaRecord().getId())
|
||||
.setAttackInfo(arenaRecord.getArenaEnemy().getPersonInfo())
|
||||
.setMyScoreChange(arenaRecord.getArenaRecord().getDefScore())
|
||||
.setAttackTime(arenaRecord.getArenaRecord().getCreateTime())
|
||||
.setFightResult(arenaRecord.getArenaRecord().getFightResult())
|
||||
.build());
|
||||
}
|
||||
// builder.addAllArenaRecordInfo(arenaRecordInfos);
|
||||
builder.addAllWroldBattleRecord(collect);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
|
|
@ -1,21 +1,44 @@
|
|||
package com.world.logic.arean;
|
||||
|
||||
|
||||
import com.ljsd.jieling.util.KeyGenUtils;
|
||||
import com.ljsd.jieling.util.UUIDEnum;
|
||||
|
||||
public class ArenaEnemy extends Object{
|
||||
private int enemyId;
|
||||
private String enemyId_UUid;//机器人唯一ID
|
||||
private int serverID;
|
||||
// 0:玩家,1:机器人
|
||||
// 0:机器人
|
||||
private int enemyType;
|
||||
// 0:未挑战,1:挑战成功,2:挑战失败
|
||||
private int enemyStatus;
|
||||
private int rank;//排名
|
||||
private int worshipTime;//膜拜次数
|
||||
|
||||
public ArenaEnemy(int enemyId, int serverID, int enemyType, int enemyStatus) {
|
||||
public ArenaEnemy(int enemyId, String enemyId_UUid, int serverID, int enemyType, int enemyStatus, int rank, int worshipTime) {
|
||||
this.enemyId = enemyId;
|
||||
this.enemyId_UUid = enemyId_UUid;
|
||||
this.serverID = serverID;
|
||||
this.enemyType = enemyType;
|
||||
this.enemyStatus = enemyStatus;
|
||||
this.rank = rank;
|
||||
this.worshipTime = worshipTime;
|
||||
}
|
||||
|
||||
public ArenaEnemy(int enemyId, int serverID, int enemyType, int enemyStatus) {
|
||||
this.enemyId = enemyId;
|
||||
this.enemyId_UUid=enemyType==0? KeyGenUtils.produceIdByModule(UUIDEnum.EXPEDITION, 0):String.valueOf(enemyId);
|
||||
this.serverID = serverID;
|
||||
this.enemyType = enemyType;
|
||||
this.enemyStatus = enemyStatus;
|
||||
}
|
||||
|
||||
public String getEnemyId_UUid() {
|
||||
return enemyId_UUid;
|
||||
}
|
||||
|
||||
public void setEnemyId_UUid(String enemyId_UUid) {
|
||||
this.enemyId_UUid = enemyId_UUid;
|
||||
}
|
||||
|
||||
public int getRank() {
|
||||
|
|
|
@ -51,15 +51,14 @@ public class ArenaLogic {
|
|||
public static volatile Map<String, Integer> serverSplit = new HashMap<>();
|
||||
public static ConcurrentHashMap<Integer, HashMap<Integer, ArenaEnemy>> ranInfo = new ConcurrentHashMap<>();//每个分组内排行榜信息
|
||||
|
||||
// public static ConcurrentHashMap<Integer, ArenaEnemy> userInfoCache = new ConcurrentHashMap<>();//成员信息缓存
|
||||
// public static ConcurrentHashMap<Integer, ArenaEnemy> userInfoCache = new ConcurrentHashMap<>();//成员信息缓存
|
||||
|
||||
// private static ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
|
||||
// public static ReentrantReadWriteLock.ReadLock rlock =rwlock.readLock(); 使用不规范 容易死锁 等有时间了封装
|
||||
// public static ReentrantReadWriteLock.WriteLock wlock=rwlock.writeLock();
|
||||
// private static ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
|
||||
// public static ReentrantReadWriteLock.ReadLock rlock =rwlock.readLock(); 使用不规范 容易死锁 等有时间了封装
|
||||
// public static ReentrantReadWriteLock.WriteLock wlock=rwlock.writeLock();
|
||||
|
||||
|
||||
|
||||
public static void initRank() throws Exception{
|
||||
public static void initRank() throws Exception {
|
||||
|
||||
Map<String, Integer> serverSplit = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO, String.class, Integer.class);
|
||||
serverSplit.forEach((s, integer) -> {
|
||||
|
@ -67,19 +66,20 @@ public class ArenaLogic {
|
|||
strings.add(s);
|
||||
map.put(integer, strings);
|
||||
});
|
||||
ArenaLogic.serverSplit =serverSplit;
|
||||
ArenaLogic.serverSplit = serverSplit;
|
||||
|
||||
Set<String> keys = new HashSet<>();
|
||||
Cursor<String> cursor =RedisUtil.getInstence().scan("WORLD_ARENA_RANK:*", 200);
|
||||
Cursor<String> cursor = RedisUtil.getInstence().scan("WORLD_ARENA_RANK:*", 200);
|
||||
while (cursor.hasNext()) {
|
||||
//找到一次就添加一次
|
||||
keys.add(cursor.next());
|
||||
}
|
||||
cursor.close();
|
||||
keys.forEach(k->{
|
||||
HashMap<Integer, ArenaEnemy> object =RedisUtil.getInstence().getObject(k,new TypeToken< HashMap<Integer, ArenaEnemy>>(){}.getType());
|
||||
keys.forEach(k -> {
|
||||
HashMap<Integer, ArenaEnemy> object = RedisUtil.getInstence().getObject(k, new TypeToken<HashMap<Integer, ArenaEnemy>>() {
|
||||
}.getType());
|
||||
|
||||
ranInfo.put(Integer.valueOf(k.split(":")[1]),object);
|
||||
ranInfo.put(Integer.valueOf(k.split(":")[1]), object);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -104,17 +104,18 @@ public class ArenaLogic {
|
|||
map.put(integer, strings);
|
||||
});
|
||||
//为每组生成排行榜
|
||||
ArenaLogic.serverSplit =serverSplit;
|
||||
ArenaLogic.serverSplit = serverSplit;
|
||||
int[] fightArea = STableManager.getConfig(SMServerArenaSetting.class).get(1).getFightArea();
|
||||
|
||||
map.forEach((integer, strings) -> {
|
||||
List<Integer> robotIds = randomRobot(fightArea[0], fightArea[1], 1000);
|
||||
HashMap<Integer, ArenaEnemy> orDefault = ranInfo.getOrDefault(integer, new HashMap<>());
|
||||
for (int i = 1; i <= robotIds.size(); i++) {
|
||||
orDefault.put(i,new ArenaEnemy(robotIds.get(i - 1),0,0,0));
|
||||
orDefault.put(i, new ArenaEnemy(robotIds.get(i - 1), 0, 0, 0));
|
||||
}
|
||||
ranInfo.put(integer, orDefault);
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK, String.valueOf(integer), orDefault,new TypeToken< HashMap<Integer, ArenaEnemy>>(){}.getType());
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK, String.valueOf(integer), orDefault, new TypeToken<HashMap<Integer, ArenaEnemy>>() {
|
||||
}.getType());
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -124,18 +125,37 @@ public class ArenaLogic {
|
|||
}
|
||||
|
||||
|
||||
public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies) throws Exception {
|
||||
public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies,List<String> myPro) throws Exception {
|
||||
List<CommonProto.ArenaEnemy> arenaEnemyList = new ArrayList<>(arenaEnemies.size());
|
||||
for (ArenaEnemy arenaEnemy : arenaEnemies) {
|
||||
int enemyId = arenaEnemy.getEnemyId();
|
||||
int enemyType = arenaEnemy.getEnemyType();
|
||||
int rank = arenaEnemy.getRank();//only robot
|
||||
arenaEnemyList.add(getArenaEnemy(enemyId, arenaEnemy.getServerID(), enemyType,rank));
|
||||
arenaEnemyList.add(getArenaEnemy(enemyId, arenaEnemy.getServerID(), enemyType, rank,arenaEnemy.getWorshipTime(),myPro.contains(arenaEnemy.getEnemyId_UUid())));
|
||||
}
|
||||
return arenaEnemyList;
|
||||
}
|
||||
|
||||
public CommonProto.ArenaEnemy getArenaEnemy(int enemyId, int serverId, int enemyType,int rank) throws Exception {
|
||||
|
||||
public CommonProto.ArenaEnemy getRobotArenaEnemy(int enemyId) throws Exception {
|
||||
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(enemyId);
|
||||
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(sArenaRobotConfig.getHeroList()).build();
|
||||
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
|
||||
.setUid(enemyId)
|
||||
.setLevel(sArenaRobotConfig.getRobotLevel())
|
||||
.setName(sArenaRobotConfig.getRobotName())
|
||||
.setScore(sArenaRobotConfig.getRobotScore())
|
||||
.setTotalForce(sArenaRobotConfig.getTotalForce())
|
||||
.build();
|
||||
return CommonProto.ArenaEnemy.newBuilder()
|
||||
.setPersonInfo(personInfoBuild)
|
||||
.setTeam(teamBuild)
|
||||
.build();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public CommonProto.ArenaEnemy getArenaEnemy(int enemyId, int serverId, int enemyType, int rank,int proTime,boolean isContain) throws Exception {
|
||||
if (enemyType == 0) { //机器人
|
||||
SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(enemyId);
|
||||
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(sArenaRobotConfig.getHeroList()).build();
|
||||
|
@ -150,13 +170,15 @@ public class ArenaLogic {
|
|||
return CommonProto.ArenaEnemy.newBuilder()
|
||||
.setPersonInfo(personInfoBuild)
|
||||
.setTeam(teamBuild)
|
||||
.setWorshipTime(proTime)
|
||||
.setHadProud(isContain)
|
||||
.build();
|
||||
} else {
|
||||
WorldProto.GetGSUserArenaInfoResponse getGSUserArenaInfoResponse = gsHelper.sendMessageToGs(serverId, enemyId, WorldProto.GetGSUserArenaInfoRequest.newBuilder().setUid(enemyId).build(), WorldProto.GetGSUserArenaInfoResponse.class);
|
||||
if (getGSUserArenaInfoResponse == null) {
|
||||
return null;
|
||||
}
|
||||
return getGSUserArenaInfoResponse.getArenaEnemys();
|
||||
return CommonProto.ArenaEnemy.newBuilder().mergeFrom(getGSUserArenaInfoResponse.getArenaEnemys()).setWorshipTime(proTime).setHadProud(isContain).build();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -329,7 +351,7 @@ public class ArenaLogic {
|
|||
}
|
||||
|
||||
|
||||
public static Map.Entry<Integer, ArenaEnemy> getKey(HashMap<Integer, ArenaEnemy> map ,int value) {
|
||||
public static Map.Entry<Integer, ArenaEnemy> getKey(HashMap<Integer, ArenaEnemy> map, int value) {
|
||||
for (Map.Entry<Integer, ArenaEnemy> entry : map.entrySet()) {
|
||||
ArenaEnemy value1 = entry.getValue();
|
||||
if (value1.getEnemyId() == value) {
|
||||
|
@ -343,46 +365,47 @@ public class ArenaLogic {
|
|||
/**
|
||||
* 上层加锁
|
||||
*/
|
||||
public static List<ArenaEnemy> randomRank(HashMap<Integer, ArenaEnemy> integerIntegerHashMap ,int uid,int myRank){
|
||||
public static List<ArenaEnemy> randomRank(HashMap<Integer, ArenaEnemy> integerIntegerHashMap, int uid, int myRank) {
|
||||
//缓存每次匹配结果
|
||||
Set<Integer> hisRank = RedisUtil.getInstence().getObject(RedisUtil.getInstence().getKey(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(uid)), new TypeToken<Set<Integer>>(){}.getType());
|
||||
Set<Integer> hisRank = RedisUtil.getInstence().getObject(RedisUtil.getInstence().getKey(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(uid)), new TypeToken<Set<Integer>>() {
|
||||
}.getType());
|
||||
List<ArenaEnemy> arenaEnemies = new ArrayList<>();
|
||||
|
||||
TreeSet<Integer> matchRank;
|
||||
if(hisRank==null||hisRank.size()==0){
|
||||
if (hisRank == null || hisRank.size() == 0) {
|
||||
//获取匹配对手
|
||||
matchRank = getMatchID(myRank);
|
||||
}else {
|
||||
matchRank = getMatchID(myRank==9999?1000:myRank);
|
||||
} else {
|
||||
matchRank = new TreeSet<>(hisRank);
|
||||
}
|
||||
|
||||
matchRank.forEach(rank -> {
|
||||
if(!integerIntegerHashMap.containsKey(rank)){
|
||||
if (!integerIntegerHashMap.containsKey(rank)) {
|
||||
return;
|
||||
}
|
||||
ArenaEnemy matchInfo = integerIntegerHashMap.get(rank);
|
||||
matchInfo.setRank(rank);
|
||||
arenaEnemies.add(matchInfo);
|
||||
// matchRank.add(rank);
|
||||
// matchRank.add(rank);
|
||||
});
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf( uid), matchRank);
|
||||
RedisUtil.getInstence().set(RedisKey.WORLD_ARENA_RANK_MY_MATH, String.valueOf(uid), matchRank);
|
||||
return arenaEnemies;
|
||||
}
|
||||
|
||||
/**
|
||||
* 实时随机 暂时不缓存
|
||||
*/
|
||||
private static TreeSet<Integer> getMatchID(int index){
|
||||
private static TreeSet<Integer> getMatchID(int index) {
|
||||
//玩家排名 获取配置
|
||||
Integer integer = SMServerArenaMatchConfig.rank2miss.floorKey(index);
|
||||
Integer integer1 = SMServerArenaMatchConfig.rank2miss.get(integer);
|
||||
TreeSet<Integer> objects = new TreeSet<>();
|
||||
//分配对手
|
||||
SMServerArenaMatchConfig serverArenaMatchConfig = STableManager.getConfig(SMServerArenaMatchConfig.class).get(integer1);
|
||||
int blockID1 = (int)( Math.random()*(serverArenaMatchConfig.getBlock1()[1]-serverArenaMatchConfig.getBlock1()[0])+serverArenaMatchConfig.getBlock1()[0])+index;
|
||||
int blockID2 = (int)( Math.random()*(serverArenaMatchConfig.getBlock2()[1]-serverArenaMatchConfig.getBlock2()[0])+serverArenaMatchConfig.getBlock2()[0])+index;
|
||||
int blockID3 = (int)( Math.random()*(serverArenaMatchConfig.getBlock3()[1]-serverArenaMatchConfig.getBlock3()[0])+serverArenaMatchConfig.getBlock3()[0])+index;
|
||||
int blockID4 = (int)( Math.random()*(serverArenaMatchConfig.getBlock4()[1]-serverArenaMatchConfig.getBlock4()[0])+serverArenaMatchConfig.getBlock4()[0])+index;
|
||||
int blockID1 = index-(int) (Math.random() * (serverArenaMatchConfig.getBlock1()[1] - serverArenaMatchConfig.getBlock1()[0]) + serverArenaMatchConfig.getBlock1()[0]) ;
|
||||
int blockID2 = index-(int) (Math.random() * (serverArenaMatchConfig.getBlock2()[1] - serverArenaMatchConfig.getBlock2()[0]) + serverArenaMatchConfig.getBlock2()[0]) ;
|
||||
int blockID3 = index-(int) (Math.random() * (serverArenaMatchConfig.getBlock3()[1] - serverArenaMatchConfig.getBlock3()[0]) + serverArenaMatchConfig.getBlock3()[0]) ;
|
||||
int blockID4 = index-(int) (Math.random() * (serverArenaMatchConfig.getBlock4()[1] - serverArenaMatchConfig.getBlock4()[0]) + serverArenaMatchConfig.getBlock4()[0]) ;
|
||||
objects.add(blockID1);
|
||||
objects.add(blockID2);
|
||||
objects.add(blockID3);
|
||||
|
|
|
@ -39,4 +39,6 @@ public class RedisKey {
|
|||
|
||||
public static final String GUILD_INFO_CACHE = "GUILD_INFO_CACHE";
|
||||
|
||||
public static final String WORLD_ARENA_MY_PRON = "WORLD_ARENA_MY_PRON";//我的膜拜记录
|
||||
|
||||
}
|
||||
|
|
|
@ -432,7 +432,17 @@ public class RedisUtil {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public <T> void putMapEntry(String type,String key,String mapKey, T value){
|
||||
String rkey = getKey(type, key);
|
||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||
try {
|
||||
redisTemplate.opsForHash().put(rkey,mapKey,gson.toJson(value));
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
TimeUtils.sleep(FAILED_SLEEP);
|
||||
}
|
||||
}
|
||||
}
|
||||
//操作sortset
|
||||
public void zsetAddAall(String key, Set<ZSetOperations.TypedTuple<String>> items){
|
||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||
|
@ -653,9 +663,25 @@ public class RedisUtil {
|
|||
}
|
||||
|
||||
}
|
||||
public List<String> lGet(String type,String key, long start, long end) {
|
||||
try {
|
||||
String key1 = getKey(type, key);
|
||||
return redisTemplate.opsForList().range(key1, start, end);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean lSet(String key, String value) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPush(key, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void removeZSetRangeByRank(String key,int start,int end){
|
||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||
|
|
Loading…
Reference in New Issue