Merge branch 'master_test_gn' into master_test_gn_xxp

xuexinpeng 2022-01-03 01:09:23 +08:00
commit 8db77db94c
5 changed files with 30 additions and 35 deletions

View File

@ -336,6 +336,8 @@ public class RedisKey {
// 跨服 排行
public static final String CROSS_SERVICE_ARENA = "CROSS_SERVICE_ARENA";
// 跨服 挑战状态
public static final String CROSS_SERVICE_ARENA_STATE = "CROSS_SERVICE_ARENA_STATE";
//跨服机器人信息
public static final String CROSS_ARENA_ROBOT_INFO = "CROSS_ARENA_ROBOT_INFO";

View File

@ -121,7 +121,6 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
CommonProto.ArenaEnemy arenaEnemys ;
CommonProto.ArenaEnemy arenaAttack ;
int force;
//当前分组
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_SERVICE_ARENA.getType());

View File

@ -79,7 +79,7 @@ public class GetWorldArenaInfoRequestHandler extends BaseHandler<WorldProto.GetW
if(rankByKey.size()<1){
builder.setStage(1);
}else{
builder.setStage(ArenaLogic.getState());
builder.setStage(ArenaLogic.getInstance().getState());
}
if (diff > setting.getRestTime()[0] && diff < setting.getRestTime()[1]) {
@ -109,7 +109,7 @@ public class GetWorldArenaInfoRequestHandler extends BaseHandler<WorldProto.GetW
builder1.setScore(score==-1?9999:(int)score);
//如果是攻击阶段
if(ArenaLogic.getState()==ArenaLogic.BATTLE_STATE){
if(ArenaLogic.getInstance().getState()==ArenaLogic.BATTLE_STATE){
List<CommonProto.ArenaEnemy> arenaEnemyList = ArenaLogic.randomRank(iSession.getUid(), score == -1 ? 9999 : (int) score,crossGroup);
builder1.addAllArenaEnemys(arenaEnemyList);
}else{

View File

@ -71,8 +71,6 @@ public class ArenaLogic {
private int curSeason;
private int viewSeason;
private static int state = 0;
public final static int NORMAL_STATE = 1;
public final static int BATTLE_STATE = 2;
public final static int RELAX_STATE = 3;
@ -718,22 +716,24 @@ public class ArenaLogic {
}
public void worldSendReward(){
checkState();
}
public static int getState() {
return state;
public int getState() {
String key = RedisUtil.getInstence().getKey(RedisKey.CROSS_SERVICE_ARENA_STATE, "");
return Optional.ofNullable(RedisUtil.getInstence().get(key))
.map(v->Integer.valueOf(v.toString()))
.orElse(0);
}
public static void setState(int state) {
ArenaLogic.state = state;
public void setState(int state) {
String key = RedisUtil.getInstence().getKey(RedisKey.CROSS_SERVICE_ARENA_STATE, "");
RedisUtil.getInstence().set(key,String.valueOf(state));
}
private void b2r(){
if(state != RELAX_STATE){
if(state==BATTLE_STATE){
if(getState() != RELAX_STATE){
if(getState()==BATTLE_STATE){
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer,ISession> entry:sessionMap.entrySet()){
MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.GetWorldArenaInfoIndication_VALUE,null,true);
@ -748,7 +748,7 @@ public class ArenaLogic {
TreeMap<Integer, SMServerArenaReward> rewardMapByRank = SMServerArenaReward.rewardMapByRank;
Set<ZSetOperations.TypedTuple<String>> rankInfo= rank.getRankByKey(String.valueOf(crossGroup), 0, -1);
int index = 0;
int index = 0;
Iterator<ZSetOperations.TypedTuple<String>> iterator = rankInfo.iterator();
while (iterator.hasNext()){
index++;
@ -758,7 +758,7 @@ public class ArenaLogic {
continue;
}
try {
User user = UserManager.getUser(uid, true);
User user = UserManager.getUserNotCache(uid);
if(user==null){
continue;
}
@ -780,34 +780,31 @@ public class ArenaLogic {
e.printStackTrace();
}
}
try {
MongoUtil.getLjsdMongoTemplate().lastUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
LOGGER.info("罗浮争霸:转到休息状态,nowstate:{} to RELAX_STATE",state);
setState(RELAX_STATE);
LOGGER.info("罗浮争霸:转到休息状态,nowstate:{} to RELAX_STATE",getState());
getInstance().setState(RELAX_STATE);
}
}
public void r2e(){
if(state != NORMAL_STATE){
LOGGER.info("罗浮争霸:转到未开始状态,nowstate:{} to NORMAL_STATE",state);
setState(NORMAL_STATE);
if(getState() != NORMAL_STATE){
LOGGER.info("罗浮争霸:转到未开始状态,nowstate:{} to NORMAL_STATE",getState());
getInstance().setState(NORMAL_STATE);
}
}
public void e2b(){
if(state != BATTLE_STATE){
LOGGER.info("罗浮争霸:转到战斗状态,nowstate:{} to BATTLE_STATE",state);
if(state!=0){
initRank();
}
setState(BATTLE_STATE);
if(getState() != BATTLE_STATE){
LOGGER.info("罗浮争霸:转到战斗状态,nowstate:{} to BATTLE_STATE",getState());
// if(getState()!=0){
// initRank();
// }
getInstance().setState(BATTLE_STATE);
initRank();
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer,ISession> entry:sessionMap.entrySet()){
@ -817,7 +814,6 @@ public class ArenaLogic {
}
private void checkState(){
long now = System.currentTimeMillis();
TimeControllerOfFunction timeControllerOfFunction = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.World_Arena);
if(null ==timeControllerOfFunction){
return;
@ -831,8 +827,8 @@ public class ArenaLogic {
} else if (diff > setting.getRestTime()[1]) {
r2e();
}
}
static List<Integer> randomCrossRobot(int start, int end, int nums) {
List<Integer> robotIds = new LinkedList<>();
int index = 0;
@ -850,11 +846,9 @@ public class ArenaLogic {
//初始化机器人信息
private void initRank(){
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
if(crossGroup==-1){
return;
}
//分布式锁,保证一个组只有一个服进行初始化
boolean lock = RedisUtil.getInstence().lock("WORLD_ARENA_INIT_RANK:" + crossGroup, TimeUtils.ONE_MINUTE * 5);
if(!lock){
@ -875,7 +869,7 @@ public class ArenaLogic {
List<Integer> groupList = new ArrayList<>(8);
groupValues.forEach((k,v)->{
if(v==crossGroup) groupList.add(k);
if(v==crossGroup){ groupList.add(k);}
});
int[] fightArea = STableManager.getConfig(SMServerArenaSetting.class).get(1).getFightArea();

View File

@ -126,7 +126,7 @@ public class MessageUtil {
if(redType == GlobalsDef.MAIL_RED_TYPE){
return;
}
User user = UserManager.getUserInMem(sendUid);
User user = UserManager.getUserNotCache(sendUid);
if (user == null){
LOGGER.error("发送红点报错uid:{},type{}",sendUid,redType);
return;