Merge branch 'master_xiyou' into master_luofu
# Conflicts: # serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java # serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java # serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaManager.javamaster_dev
commit
415df3b213
|
@ -25,81 +25,10 @@ public class SArenaRobotStaticConfig extends AbstractClassStaticConfig {
|
||||||
Map<Integer, SArenaRobotConfig> integerSArenaRobotConfigMap = SArenaRobotConfig.getsArenaRobotConfigMap();
|
Map<Integer, SArenaRobotConfig> integerSArenaRobotConfigMap = SArenaRobotConfig.getsArenaRobotConfigMap();
|
||||||
|
|
||||||
for(SArenaRobotConfig sArenaRobotConfig : integerSArenaRobotConfigMap.values()){
|
for(SArenaRobotConfig sArenaRobotConfig : integerSArenaRobotConfigMap.values()){
|
||||||
List<Integer> heroList = sArenaRobotConfig.getHeroList();
|
|
||||||
List<Integer> heroList2 = sArenaRobotConfig.getHeroList2();
|
|
||||||
List<Integer> heroList3= sArenaRobotConfig.getHeroList3();
|
|
||||||
int heroLevel = sArenaRobotConfig.getRoleLv();
|
int heroLevel = sArenaRobotConfig.getRoleLv();
|
||||||
|
sArenaRobotConfig.setHeroMapList(buildHeroProtoMap(sArenaRobotConfig, sArenaRobotConfig.getHeroList(), heroLevel));
|
||||||
Map<Integer, CommonProto.Hero> heroMap = new HashMap<>();
|
sArenaRobotConfig.setHeroMapList2(buildHeroProtoMap(sArenaRobotConfig, sArenaRobotConfig.getHeroList2(), heroLevel));
|
||||||
for(Integer heroTid :heroList){
|
sArenaRobotConfig.setHeroMapList3(buildHeroProtoMap(sArenaRobotConfig, sArenaRobotConfig.getHeroList3(), heroLevel));
|
||||||
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
|
||||||
if(null ==scHero){
|
|
||||||
throw new IllegalArgumentException("sArenaRobotConfig id "+sArenaRobotConfig.getId()+"机器人英雄模板id找不到 heroTid:"+heroTid);
|
|
||||||
}
|
|
||||||
|
|
||||||
CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder();
|
|
||||||
|
|
||||||
int star = HeroLogic.getInstance().calRobotStarByLevel(heroTid,heroLevel);
|
|
||||||
int heroStarBreakId = HeroLogic.getInstance().calRobotStarBreakByLevel(heroTid,heroLevel);
|
|
||||||
int heroBreakId = HeroLogic.getInstance().calRobotBreakByLevel(heroTid,heroLevel);
|
|
||||||
|
|
||||||
heroBuilder.setId(String.valueOf(scHero.getId()));
|
|
||||||
heroBuilder.setHeroId(scHero.getId());
|
|
||||||
heroBuilder.setLevel(heroLevel);
|
|
||||||
heroBuilder.setStar(star);
|
|
||||||
heroBuilder.setStarBreakId(heroStarBreakId);
|
|
||||||
heroBuilder.setBreakId(heroBreakId);
|
|
||||||
heroBuilder.setPropertyId(scHero.getPropertyName());
|
|
||||||
heroMap.put(heroTid,heroBuilder.build());
|
|
||||||
}
|
|
||||||
sArenaRobotConfig.setHeroMapList(heroMap);
|
|
||||||
|
|
||||||
Map<Integer, CommonProto.Hero> heroMap2 = new HashMap<>();
|
|
||||||
for(Integer heroTid :heroList2){
|
|
||||||
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
|
||||||
if(null ==scHero){
|
|
||||||
throw new IllegalArgumentException("sArenaRobotConfig id "+sArenaRobotConfig.getId()+"机器人英雄模板id找不到 heroTid:"+heroTid);
|
|
||||||
}
|
|
||||||
|
|
||||||
CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder();
|
|
||||||
|
|
||||||
int star = HeroLogic.getInstance().calRobotStarByLevel(heroTid,heroLevel);
|
|
||||||
int heroStarBreakId = HeroLogic.getInstance().calRobotStarBreakByLevel(heroTid,heroLevel);
|
|
||||||
int heroBreakId = HeroLogic.getInstance().calRobotBreakByLevel(heroTid,heroLevel);
|
|
||||||
|
|
||||||
heroBuilder.setId(String.valueOf(scHero.getId()));
|
|
||||||
heroBuilder.setHeroId(scHero.getId());
|
|
||||||
heroBuilder.setLevel(heroLevel);
|
|
||||||
heroBuilder.setStar(star);
|
|
||||||
heroBuilder.setStarBreakId(heroStarBreakId);
|
|
||||||
heroBuilder.setBreakId(heroBreakId);
|
|
||||||
heroBuilder.setPropertyId(scHero.getPropertyName());
|
|
||||||
heroMap2.put(heroTid,heroBuilder.build());
|
|
||||||
}
|
|
||||||
sArenaRobotConfig.setHeroMapList2(heroMap2);
|
|
||||||
Map<Integer, CommonProto.Hero> heroMap3 = new HashMap<>();
|
|
||||||
for(Integer heroTid :heroList3){
|
|
||||||
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
|
||||||
if(null ==scHero){
|
|
||||||
throw new IllegalArgumentException("sArenaRobotConfig id "+sArenaRobotConfig.getId()+"机器人英雄模板id找不到 heroTid:"+heroTid);
|
|
||||||
}
|
|
||||||
|
|
||||||
CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder();
|
|
||||||
|
|
||||||
int star = HeroLogic.getInstance().calRobotStarByLevel(heroTid,heroLevel);
|
|
||||||
int heroStarBreakId = HeroLogic.getInstance().calRobotStarBreakByLevel(heroTid,heroLevel);
|
|
||||||
int heroBreakId = HeroLogic.getInstance().calRobotBreakByLevel(heroTid,heroLevel);
|
|
||||||
|
|
||||||
heroBuilder.setId(String.valueOf(scHero.getId()));
|
|
||||||
heroBuilder.setHeroId(scHero.getId());
|
|
||||||
heroBuilder.setLevel(heroLevel);
|
|
||||||
heroBuilder.setStar(star);
|
|
||||||
heroBuilder.setStarBreakId(heroStarBreakId);
|
|
||||||
heroBuilder.setBreakId(heroBreakId);
|
|
||||||
heroBuilder.setPropertyId(scHero.getPropertyName());
|
|
||||||
heroMap3.put(heroTid,heroBuilder.build());
|
|
||||||
}
|
|
||||||
sArenaRobotConfig.setHeroMapList3(heroMap3);
|
|
||||||
int totleForce = HeroLogic.getInstance().calRobotTotalForce(sArenaRobotConfig);
|
int totleForce = HeroLogic.getInstance().calRobotTotalForce(sArenaRobotConfig);
|
||||||
sArenaRobotConfig.setTotalForce(totleForce);
|
sArenaRobotConfig.setTotalForce(totleForce);
|
||||||
int totleYxldForce = HeroLogic.getInstance().calRobotYxldTotalForce(sArenaRobotConfig);
|
int totleYxldForce = HeroLogic.getInstance().calRobotYxldTotalForce(sArenaRobotConfig);
|
||||||
|
@ -121,6 +50,32 @@ public class SArenaRobotStaticConfig extends AbstractClassStaticConfig {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<Integer, CommonProto.Hero> buildHeroProtoMap(SArenaRobotConfig sArenaRobotConfig, List<Integer> heroList3, int heroLevel) {
|
||||||
|
Map<Integer, CommonProto.Hero> heroMap = new HashMap<>();
|
||||||
|
for(Integer heroTid : heroList3){
|
||||||
|
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
||||||
|
if(null ==scHero){
|
||||||
|
throw new IllegalArgumentException("sArenaRobotConfig id "+sArenaRobotConfig.getId()+"机器人英雄模板id找不到 heroTid:"+heroTid);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommonProto.Hero.Builder heroBuilder = CommonProto.Hero.newBuilder();
|
||||||
|
|
||||||
|
int star = HeroLogic.getInstance().calRobotStarByLevel(heroTid,heroLevel);
|
||||||
|
int heroStarBreakId = HeroLogic.getInstance().calRobotStarBreakByLevel(heroTid,heroLevel);
|
||||||
|
int heroBreakId = HeroLogic.getInstance().calRobotBreakByLevel(heroTid,heroLevel);
|
||||||
|
|
||||||
|
heroBuilder.setId(String.valueOf(scHero.getId()));
|
||||||
|
heroBuilder.setHeroId(scHero.getId());
|
||||||
|
heroBuilder.setLevel(heroLevel);
|
||||||
|
heroBuilder.setStar(star);
|
||||||
|
heroBuilder.setStarBreakId(heroStarBreakId);
|
||||||
|
heroBuilder.setBreakId(heroBreakId);
|
||||||
|
heroBuilder.setPropertyId(scHero.getPropertyName());
|
||||||
|
heroMap.put(heroTid,heroBuilder.build());
|
||||||
|
}
|
||||||
|
return heroMap;
|
||||||
|
}
|
||||||
|
|
||||||
public static Integer getFloorForce2robotId(int force) {
|
public static Integer getFloorForce2robotId(int force) {
|
||||||
Map.Entry<Integer,LinkedList<Integer>> entry = force2robotId.ceilingEntry(force);
|
Map.Entry<Integer,LinkedList<Integer>> entry = force2robotId.ceilingEntry(force);
|
||||||
LinkedList<Integer> value;
|
LinkedList<Integer> value;
|
||||||
|
|
|
@ -378,6 +378,9 @@ public class RedisKey {
|
||||||
public static final String NEW_ARENA_RANK = "NEW_ARENA_RANK"; //新竞技场排行榜
|
public static final String NEW_ARENA_RANK = "NEW_ARENA_RANK"; //新竞技场排行榜
|
||||||
public static final String NEW_ARENA_PLAYER = "NEW_ARENA_PLAYER";//新竞技场玩家信息
|
public static final String NEW_ARENA_PLAYER = "NEW_ARENA_PLAYER";//新竞技场玩家信息
|
||||||
public static final String NEW_ARENA_RESET = "NEW_ARENA_RESET";//新竞技场重置标记
|
public static final String NEW_ARENA_RESET = "NEW_ARENA_RESET";//新竞技场重置标记
|
||||||
|
public static final String NEW_ARENA_REFRESH_FIRST_MARK = "NEW_ARENA_REFRESH_FIRST_MARK";//新竞技场第一次匹配标记
|
||||||
|
// public static final String NEW_ARENA_FIRST_PUSH = "NEW_ARENA_FIRST_PUSH";//竞技场第一名推送标记
|
||||||
|
|
||||||
|
|
||||||
//进程排行 合区统一
|
//进程排行 合区统一
|
||||||
public static Set<String> newAreaCacChe = new HashSet<>();
|
public static Set<String> newAreaCacChe = new HashSet<>();
|
||||||
|
|
|
@ -27,27 +27,27 @@ public class ArenaRandomHandler extends BaseHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(ISession session, PacketNetData netData) throws Exception {
|
public void process(ISession session, PacketNetData netData) throws Exception {
|
||||||
int curSeason =ArenaLogic.getInstance().getCurSeason();
|
// int curSeason =ArenaLogic.getInstance().getCurSeason();
|
||||||
if(curSeason == 0){
|
// if(curSeason == 0){
|
||||||
throw new ErrorCodeException(ErrorCode.newDefineCode("season_close"));
|
// throw new ErrorCodeException(ErrorCode.newDefineCode("season_close"));
|
||||||
}
|
// }
|
||||||
int uid = session.getUid();
|
// int uid = session.getUid();
|
||||||
SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting();
|
// SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting();
|
||||||
if(sArenaSetting == null){
|
// if(sArenaSetting == null){
|
||||||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
// throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||||
}
|
// }
|
||||||
User user = UserManager.getUser(uid);
|
// User user = UserManager.getUser(uid);
|
||||||
ArenaManager arenaManager = user.getArenaManager();
|
// ArenaManager arenaManager = user.getArenaManager();
|
||||||
int flushEnenyTime = arenaManager.getFlushTime();
|
// int flushEnenyTime = arenaManager.getFlushTime();
|
||||||
int coldTime = sArenaSetting.getColdTime();
|
// int coldTime = sArenaSetting.getColdTime();
|
||||||
int now = (int)(TimeUtils.now()/1000);
|
// int now = TimeUtils.nowInt();
|
||||||
if( now - flushEnenyTime < coldTime-1 ){
|
// if(now - flushEnenyTime < coldTime - 1){
|
||||||
throw new ErrorCodeException(ErrorCode.ARENA_RANDOM_ENEMY_CODE_TIME);
|
// throw new ErrorCodeException(ErrorCode.ARENA_RANDOM_ENEMY_CODE_TIME);
|
||||||
}
|
// }
|
||||||
//刷新选手
|
// //刷新选手
|
||||||
ArenaLogic.getInstance().setMyArenaEnemys(uid,user);
|
// ArenaLogic.getInstance().setMyArenaEnemys(uid,user);
|
||||||
arenaManager.setFlushTime(now);
|
// arenaManager.setFlushTime(now);
|
||||||
ArenaInfoProto.ArenaRandomResponse build = ArenaInfoProto.ArenaRandomResponse.newBuilder().addAllArenaEnemys(ArenaLogic.getInstance().getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
// ArenaInfoProto.ArenaRandomResponse build = ArenaInfoProto.ArenaRandomResponse.newBuilder().addAllArenaEnemys(ArenaLogic.getInstance().getArenaEnemyList(arenaManager.getArenaEnemies())).build();
|
||||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,build,true);
|
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_RANDOM_ENEMY_RESPONSE_VALUE,null,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ public enum ActivityTypeEnum {
|
||||||
CONTINUOUS_GIFT(ActivityType.CONTINUOUS_GIFT,SuperBoxActivity::new),//连续礼包
|
CONTINUOUS_GIFT(ActivityType.CONTINUOUS_GIFT,SuperBoxActivity::new),//连续礼包
|
||||||
TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝
|
TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝
|
||||||
CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包
|
CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包
|
||||||
ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼
|
// ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼
|
||||||
|
|
||||||
NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//超值返利6
|
NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//超值返利6
|
||||||
NEW_RECHARGE_SUM_DAY_12(ActivityType.NEW_RECHARGE_SUM_DAY_12,NewRechargeSumDayActivity::new),//超值返利12
|
NEW_RECHARGE_SUM_DAY_12(ActivityType.NEW_RECHARGE_SUM_DAY_12,NewRechargeSumDayActivity::new),//超值返利12
|
||||||
|
|
|
@ -55,44 +55,44 @@ public class ArenaRankActivity extends AbstractActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityEnd() throws Exception {
|
public void onActivityEnd() throws Exception {
|
||||||
LOGGER.info("竞技试炼发奖励 onActivityEnd...{}", id);
|
// LOGGER.info("竞技试炼发奖励 onActivityEnd...{}", id);
|
||||||
ThreadManager.scheduleOne(this::sendReward,0, TimeUnit.NANOSECONDS);
|
// ThreadManager.scheduleOne(this::sendReward,0, TimeUnit.NANOSECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendReward(){
|
// private void sendReward(){
|
||||||
Thread.currentThread().setName("sendReward-Activity-"+id);
|
// Thread.currentThread().setName("sendReward-Activity-"+id);
|
||||||
List<SActivityRankingReward> sActivityRankingRewards = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
// List<SActivityRankingReward> sActivityRankingRewards = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||||
if (sActivityRankingRewards == null || sActivityRankingRewards.isEmpty()) {
|
// if (sActivityRankingRewards == null || sActivityRankingRewards.isEmpty()) {
|
||||||
LOGGER.info("竞技试炼未配置奖励 onActivityEnd...{}", id);
|
// LOGGER.info("竞技试炼未配置奖励 onActivityEnd...{}", id);
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
int curSeason = ArenaLogic.getInstance().getCurSeason();
|
// int curSeason = ArenaLogic.getInstance().getCurSeason();
|
||||||
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, -1);
|
// Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, -1);
|
||||||
int rank = 1;
|
// int rank = 1;
|
||||||
int nowTime = (int) (TimeUtils.now() / 1000);
|
// int nowTime = (int) (TimeUtils.now() / 1000);
|
||||||
String title = SErrorCodeEerverConfig.getI18NMessage("arena_activity_mail_title");
|
// String title = SErrorCodeEerverConfig.getI18NMessage("arena_activity_mail_title");
|
||||||
for (ZSetOperations.TypedTuple<String> item : arenaRankInfo) {
|
// for (ZSetOperations.TypedTuple<String> item : arenaRankInfo) {
|
||||||
String value = item.getValue();
|
// String value = item.getValue();
|
||||||
int uid = Integer.parseInt(value);
|
// int uid = Integer.parseInt(value);
|
||||||
User user = UserManager.getUserNotCache(uid);
|
// User user = UserManager.getUserNotCache(uid);
|
||||||
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("arena_activity_mail_txt", new Object[]{rank}, new int[0], "#");
|
// String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("arena_activity_mail_txt", new Object[]{rank}, new int[0], "#");
|
||||||
int[][] rewardByRank = null;
|
// int[][] rewardByRank = null;
|
||||||
for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewards) {
|
// for (SActivityRankingReward sActivityRankingReward : sActivityRankingRewards) {
|
||||||
if (sActivityRankingReward.getMinRank() >= rank && rank <= sActivityRankingReward.getMaxRank()) {
|
// if (sActivityRankingReward.getMinRank() >= rank && rank <= sActivityRankingReward.getMaxRank()) {
|
||||||
rewardByRank = sActivityRankingReward.getRankingReward();
|
// rewardByRank = sActivityRankingReward.getRankingReward();
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if (rewardByRank == null) {
|
// if (rewardByRank == null) {
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardByRank), nowTime, Global.MAIL_EFFECTIVE_TIME);
|
// MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardByRank), nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||||
rank++;
|
// rank++;
|
||||||
}
|
// }
|
||||||
try {
|
// try {
|
||||||
MongoUtil.getInstence().lastUpdate();
|
// MongoUtil.getInstence().lastUpdate();
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
e.printStackTrace();
|
// e.printStackTrace();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,7 +250,7 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
||||||
backRankType = chongRankInfo.getBackRankType();
|
backRankType = chongRankInfo.getBackRankType();
|
||||||
AbstractRank backRank = RankContext.getRankEnum(backRankType);
|
AbstractRank backRank = RankContext.getRankEnum(backRankType);
|
||||||
Set<ZSetOperations.TypedTuple<String>> backRankInfo = backRank.getRankByKey("", 0, -1);
|
Set<ZSetOperations.TypedTuple<String>> backRankInfo = backRank.getRankByKey("", 0, -1);
|
||||||
if (backRankInfo != null && backRankInfo.size() > 0){
|
if (backRankInfo != null && !backRankInfo.isEmpty()){
|
||||||
LOGGER.info("冲榜备份结束,备份数据已存在,活动id:{},排行榜类型:{},排行榜数量:{}",id,backRankType,backRankInfo.size());
|
LOGGER.info("冲榜备份结束,备份数据已存在,活动id:{},排行榜类型:{},排行榜数量:{}",id,backRankType,backRankInfo.size());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ import com.ljsd.GameApplication;
|
||||||
import com.ljsd.fight.ArenaRecord;
|
import com.ljsd.fight.ArenaRecord;
|
||||||
import com.ljsd.fight.FightType;
|
import com.ljsd.fight.FightType;
|
||||||
import com.ljsd.jieling.core.GlobalsDef;
|
import com.ljsd.jieling.core.GlobalsDef;
|
||||||
|
import com.ljsd.jieling.config.clazzStaticCfg.SArenaRobotStaticConfig;
|
||||||
|
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
@ -76,19 +78,19 @@ public class ArenaLogic {
|
||||||
return viewSeason;
|
return viewSeason;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies) {
|
// public List<CommonProto.ArenaEnemy> getArenaEnemyList(List<ArenaEnemy> arenaEnemies) {
|
||||||
List<CommonProto.ArenaEnemy> arenaEnemyList = new ArrayList<>(arenaEnemies.size());
|
// List<CommonProto.ArenaEnemy> arenaEnemyList = new ArrayList<>(arenaEnemies.size());
|
||||||
for (ArenaEnemy arenaEnemy : arenaEnemies) {
|
// for (ArenaEnemy arenaEnemy : arenaEnemies) {
|
||||||
int enemyId = arenaEnemy.getEnemyId();
|
// int enemyId = arenaEnemy.getEnemyId();
|
||||||
int enemyType = arenaEnemy.getEnemyType();
|
// int enemyType = arenaEnemy.getEnemyType();
|
||||||
try {
|
// try {
|
||||||
arenaEnemyList.add(getArenaEnemy(enemyId, enemyType));
|
// arenaEnemyList.add(getArenaEnemy(enemyId, enemyType));
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
LOGGER.error("竞技场报错:{}",e.getMessage());
|
// LOGGER.error("竞技场报错:{}",e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return arenaEnemyList;
|
// return arenaEnemyList;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public CommonProto.ArenaEnemy getArenaEnemy(int enemyId, int enemyType) throws Exception {
|
public CommonProto.ArenaEnemy getArenaEnemy(int enemyId, int enemyType) throws Exception {
|
||||||
if (enemyType == 0) { //机器人
|
if (enemyType == 0) { //机器人
|
||||||
|
@ -109,12 +111,7 @@ public class ArenaLogic {
|
||||||
User user = UserManager.getUser(enemyId);
|
User user = UserManager.getUser(enemyId);
|
||||||
long totalForce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.TEAM_ARENA_DEFENSE.getTeamId());
|
long totalForce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.TEAM_ARENA_DEFENSE.getTeamId());
|
||||||
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.TEAM_ARENA_DEFENSE.getTeamId());
|
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.TEAM_ARENA_DEFENSE.getTeamId());
|
||||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
CommonProto.Team teamBuild = buildTeam(user, teamPosHeroInfoList);
|
||||||
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
|
||||||
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList) {
|
|
||||||
heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId());
|
|
||||||
}
|
|
||||||
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(heroTids).build();
|
|
||||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||||
long score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK, Integer.toString(curSeason), Integer.toString(enemyId)).longValue();
|
long score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK, Integer.toString(curSeason), Integer.toString(enemyId)).longValue();
|
||||||
if (score == -1) {
|
if (score == -1) {
|
||||||
|
@ -136,36 +133,45 @@ public class ArenaLogic {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMyArenaEnemys(int uid, User user) {
|
public static CommonProto.Team buildTeam(User user, List<TeamPosHeroInfo> teamPosHeroInfoList) {
|
||||||
int score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK, Integer.toString(curSeason), Integer.toString(uid)).intValue();
|
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||||
if (score == -1) {
|
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
||||||
score = SArenaSetting.getSArenaSetting().getScore();
|
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList) {
|
||||||
|
heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId());
|
||||||
}
|
}
|
||||||
ArenaManager arenaManager = user.getArenaManager();
|
return CommonProto.Team.newBuilder().addAllHeroTid(heroTids).build();
|
||||||
List<ArenaEnemy> arenaEnemies = new ArrayList<>();
|
|
||||||
if (curSeason == 1 && arenaManager.getFlushNums() < SArenaSetting.getSArenaSetting().getPveNum()) {
|
|
||||||
Set<Integer> robotIds = randomRobot(score, 5);
|
|
||||||
toArenaEnemy(uid, robotIds, arenaEnemies, GlobalsDef.ARENA_ROBOT_TYPE);
|
|
||||||
} else {
|
|
||||||
Set<Integer> robotIds = randomPerson(uid, score, true);
|
|
||||||
int type = GlobalsDef.ARENA_PLAYER_TYPE;
|
|
||||||
toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
|
||||||
if (robotIds.isEmpty()) {
|
|
||||||
if (curSeason > 1) {
|
|
||||||
robotIds = randomPerson(uid, score, false);
|
|
||||||
}
|
|
||||||
toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
|
||||||
}
|
|
||||||
int size = robotIds.size();
|
|
||||||
if (size < 5) {
|
|
||||||
robotIds = randomRobot(score, 5 - size);
|
|
||||||
type = GlobalsDef.ARENA_ROBOT_TYPE;
|
|
||||||
toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
arenaManager.setArenaEnemies(arenaEnemies);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public void setMyArenaEnemys(int uid, User user) {
|
||||||
|
// int score = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK, Integer.toString(curSeason), Integer.toString(uid)).intValue();
|
||||||
|
// if (score == -1) {
|
||||||
|
// score = SArenaSetting.getSArenaSetting().getScore();
|
||||||
|
// }
|
||||||
|
// ArenaManager arenaManager = user.getArenaManager();
|
||||||
|
// List<ArenaEnemy> arenaEnemies = new ArrayList<>();
|
||||||
|
// if (curSeason == 1 && arenaManager.getFlushNums() < SArenaSetting.getSArenaSetting().getPveNum()) {
|
||||||
|
// Set<Integer> robotIds = randomRobot(score, 5);
|
||||||
|
// toArenaEnemy(uid, robotIds, arenaEnemies, GlobalsDef.ARENA_ROBOT_TYPE);
|
||||||
|
// } else {
|
||||||
|
// Set<Integer> robotIds = randomPerson(uid, score, true);
|
||||||
|
// int type = GlobalsDef.ARENA_PLAYER_TYPE;
|
||||||
|
// toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
||||||
|
// if (robotIds.isEmpty()) {
|
||||||
|
// if (curSeason > 1) {
|
||||||
|
// robotIds = randomPerson(uid, score, false);
|
||||||
|
// }
|
||||||
|
// toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
||||||
|
// }
|
||||||
|
// int size = robotIds.size();
|
||||||
|
// if (size < 5) {
|
||||||
|
// robotIds = randomRobot(score, 5 - size);
|
||||||
|
// type = GlobalsDef.ARENA_ROBOT_TYPE;
|
||||||
|
// toArenaEnemy(uid, robotIds, arenaEnemies, type);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// arenaManager.setArenaEnemies(arenaEnemies);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 和竞技场真人对战结果
|
* 和竞技场真人对战结果
|
||||||
|
@ -238,51 +244,51 @@ public class ArenaLogic {
|
||||||
/**
|
/**
|
||||||
* 随机竞技场玩家,老方法
|
* 随机竞技场玩家,老方法
|
||||||
*/
|
*/
|
||||||
public Set<Integer> randomPerson(int uid, int myScore, boolean useCurSeason) {
|
// public Set<Integer> randomPerson(int uid, int myScore, boolean useCurSeason) {
|
||||||
Set<Integer> result = new HashSet<>(5);
|
// Set<Integer> result = new HashSet<>(5);
|
||||||
int[][] interval = SArenaSetting.getSArenaSetting().getInterval();
|
// int[][] interval = SArenaSetting.getSArenaSetting().getInterval();
|
||||||
int matchSeason = curSeason;
|
// int matchSeason = curSeason;
|
||||||
if (!useCurSeason) {
|
// if (!useCurSeason) {
|
||||||
matchSeason = curSeason - 1;
|
// matchSeason = curSeason - 1;
|
||||||
}
|
// }
|
||||||
for (int[] item : interval) {
|
// for (int[] item : interval) {
|
||||||
int low = item[0];
|
// int low = item[0];
|
||||||
int high = item[1];
|
// int high = item[1];
|
||||||
Set<String> arenaRank = RedisUtil.getInstence().getZsetRange(RedisKey.ARENA_RANK, Integer.toString(matchSeason), myScore * low / 10000.0f - 1, myScore * high / 10000.0f + 1);
|
// Set<String> arenaRank = RedisUtil.getInstence().getZsetRange(RedisKey.ARENA_RANK, Integer.toString(matchSeason), myScore * low / 10000.0f - 1, myScore * high / 10000.0f + 1);
|
||||||
LOGGER.info("curSeason={},matchSeason={},the uid={},the myscore={},the low={},the high={},mylow={},myhigh={},", curSeason, matchSeason, uid, myScore, low, high, myScore * low / 10000.0f - 1, myScore * high / 10000.0f + 1);
|
// LOGGER.info("curSeason={},matchSeason={},the uid={},the myscore={},the low={},the high={},mylow={},myhigh={},", curSeason, matchSeason, uid, myScore, low, high, myScore * low / 10000.0f - 1, myScore * high / 10000.0f + 1);
|
||||||
if (arenaRank != null && !arenaRank.isEmpty()) {
|
// if (arenaRank != null && !arenaRank.isEmpty()) {
|
||||||
arenaRank.remove(Integer.toString(uid));
|
// arenaRank.remove(Integer.toString(uid));
|
||||||
String s = randomSet(arenaRank);
|
// String s = randomSet(arenaRank);
|
||||||
if (!StringUtil.isEmpty(s)) {
|
// if (!StringUtil.isEmpty(s)) {
|
||||||
result.add(Integer.parseInt(s));
|
// result.add(Integer.parseInt(s));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return result;
|
// return result;
|
||||||
}
|
// }
|
||||||
|
|
||||||
private String randomSet(Set<String> infos) {
|
// private String randomSet(Set<String> infos) {
|
||||||
if (infos == null || infos.isEmpty()) {
|
// if (infos == null || infos.isEmpty()) {
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
int num = MathUtils.randomInt(infos.size());
|
// int num = MathUtils.randomInt(infos.size());
|
||||||
for (String id : infos) {
|
// for (String id : infos) {
|
||||||
if (num-- == 0) {
|
// if (num-- == 0) {
|
||||||
return id;
|
// return id;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return null;
|
// return null;
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
public void toArenaEnemy(int uid, Set<Integer> enemyList, List<ArenaEnemy> arenaEnemies, int type) {
|
// public void toArenaEnemy(int uid, Set<Integer> enemyList, List<ArenaEnemy> arenaEnemies, int type) {
|
||||||
for (Integer enemyId : enemyList) {
|
// for (Integer enemyId : enemyList) {
|
||||||
if (1 == type && enemyId == uid) {
|
// if (1 == type && enemyId == uid) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
arenaEnemies.add(new ArenaEnemy(enemyId, type, type));
|
// arenaEnemies.add(new ArenaEnemy(enemyId, type, type));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
// public void getWorldRankByPage(ISession session, int page) {
|
// public void getWorldRankByPage(ISession session, int page) {
|
||||||
|
@ -672,68 +678,35 @@ public class ArenaLogic {
|
||||||
int size = 4;
|
int size = 4;
|
||||||
Map<Integer, CommonProto.ArenaPersonInfo> result = new LimitedSizeMap<>(size);
|
Map<Integer, CommonProto.ArenaPersonInfo> result = new LimitedSizeMap<>(size);
|
||||||
|
|
||||||
|
// 每個人第一次初始化機器人
|
||||||
|
String markKey = RedisKey.NEW_ARENA_REFRESH_FIRST_MARK + ":" + user.getId();
|
||||||
|
String firstMark = redisUtil.getObject(markKey, String.class);
|
||||||
|
if (firstMark == null){
|
||||||
|
refreshRobotList(score, size, result);
|
||||||
|
redisUtil.set(markKey, "1");
|
||||||
|
}
|
||||||
|
|
||||||
SArenaSetting arenaSetting = SArenaSetting.getSArenaSetting();
|
SArenaSetting arenaSetting = SArenaSetting.getSArenaSetting();
|
||||||
int[][] interval = arenaSetting.getInterval();
|
int[][] interval = arenaSetting.getInterval();
|
||||||
// 读取配置走正常区间分配
|
// 读取配置走正常区间分配
|
||||||
for (int[] limit : interval) {
|
if (result.size() < size){
|
||||||
// 获取匹配积分区间的最大值和最小值
|
for (int[] limit : interval) {
|
||||||
double low = score * limit[0] / 10000.0f - 1;
|
// 获取匹配积分区间的最大值和最小值
|
||||||
double high = score * limit[1] / 10000.0f + 1;
|
double low = score * limit[0] / 10000.0f - 1;
|
||||||
Set<String> range = redisUtil.getZsetRangeOrigin(key, low, high);
|
double high = score * limit[1] / 10000.0f + 1;
|
||||||
if (range == null || range.isEmpty()){
|
Set<String> range = redisUtil.getZsetRangeOrigin(key, low, high);
|
||||||
continue;
|
refreshPersonList(user.getId(), size, roomId, range, result);
|
||||||
}
|
|
||||||
List<String> list = new ArrayList<>(range);
|
|
||||||
Collections.shuffle(list);
|
|
||||||
for (String id : list) {
|
|
||||||
int uid = Integer.parseInt(id);
|
|
||||||
if (uid == user.getId() || result.containsKey(uid)){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CommonProto.ArenaPersonInfo personInfo = CBean2Proto.getNewArenaPlayerProto(uid, roomId);
|
|
||||||
if (personInfo == null){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.put(uid, personInfo);
|
|
||||||
if (result.size() == size){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 长度不足,走顺位排名
|
// 长度不足,走顺位排名
|
||||||
if (result.size() < size){
|
if (result.size() < size){
|
||||||
int end = ranking + size;
|
int end = ranking + size;
|
||||||
Set<String> zset = redisUtil.getReverseZset(key, ranking, end);
|
Set<String> zset = redisUtil.getReverseZset(key, ranking, end);
|
||||||
if (zset != null && !zset.isEmpty()){
|
refreshPersonList(user.getId(), size, roomId, zset, result);
|
||||||
for (String id : zset) {
|
|
||||||
int uid = Integer.parseInt(id);
|
|
||||||
if (uid == user.getId() || result.containsKey(uid)){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
CommonProto.ArenaPersonInfo personInfo = CBean2Proto.getNewArenaPlayerProto(uid, roomId);
|
|
||||||
if (personInfo == null){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.put(uid, personInfo);
|
|
||||||
if (result.size() == size){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 长度不足,走机器人表
|
// 长度不足,走机器人表
|
||||||
if (result.size() < size){
|
if (result.size() < size){
|
||||||
Set<Integer> robotIds = randomRobot(score, size);
|
refreshRobotList(score, size, result);
|
||||||
for (Integer robotId : robotIds) {
|
|
||||||
CommonProto.ArenaPersonInfo personInfo = CBean2Proto.getNewArenaRobotProto(robotId);
|
|
||||||
if (personInfo == null){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.put(robotId, personInfo);
|
|
||||||
if (result.size() == size){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<CommonProto.ArenaPersonInfo> personInfos = new ArrayList<>(result.values());
|
ArrayList<CommonProto.ArenaPersonInfo> personInfos = new ArrayList<>(result.values());
|
||||||
|
@ -742,6 +715,42 @@ public class ArenaLogic {
|
||||||
return personInfos;
|
return personInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refreshRobotList(long score, int size, Map<Integer, CommonProto.ArenaPersonInfo> result) {
|
||||||
|
Set<Integer> robotIds = randomRobot(score, size);
|
||||||
|
for (Integer robotId : robotIds) {
|
||||||
|
CommonProto.ArenaPersonInfo personInfo = CBean2Proto.getNewArenaRobotProto(robotId);
|
||||||
|
if (personInfo == null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result.put(robotId, personInfo);
|
||||||
|
if (result.size() == size){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshPersonList(int userId, int size, int roomId, Set<String> set, Map<Integer, CommonProto.ArenaPersonInfo> result){
|
||||||
|
if (set == null || set.isEmpty()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ArrayList<String> list = new ArrayList<>(set);
|
||||||
|
Collections.shuffle(list);
|
||||||
|
for (String id : list) {
|
||||||
|
int uid = Integer.parseInt(id);
|
||||||
|
if (uid == userId || result.containsKey(uid)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
CommonProto.ArenaPersonInfo personInfo = CBean2Proto.getNewArenaPlayerProto(uid, roomId);
|
||||||
|
if (personInfo == null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result.put(uid, personInfo);
|
||||||
|
if (result.size() == size){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算上赛季竞技场
|
* 结算上赛季竞技场
|
||||||
* @param session 用户session
|
* @param session 用户session
|
||||||
|
@ -1124,11 +1133,11 @@ public class ArenaLogic {
|
||||||
NewArenaRank rank = (NewArenaRank) RankEnum.toRank(RankEnum.NEW_ARENA_RANK.getType());
|
NewArenaRank rank = (NewArenaRank) RankEnum.toRank(RankEnum.NEW_ARENA_RANK.getType());
|
||||||
String title = SErrorCodeEerverConfig.getI18NMessage("arena_season_reward_title");
|
String title = SErrorCodeEerverConfig.getI18NMessage("arena_season_reward_title");
|
||||||
// 最高场房间id
|
// 最高场房间id
|
||||||
int maxHighRoomId = SArenaRoom.getMaxHighRoomId();
|
// int maxHighRoomId = SArenaRoom.getMaxHighRoomId();
|
||||||
for (Integer roomId : crossRooms) {
|
for (Integer roomId : crossRooms) {
|
||||||
String roomName = SArenaRoom.getRoomName(roomId);
|
String roomName = SArenaRoom.getRoomName(roomId);
|
||||||
int ranking = 1;
|
int ranking = 1;
|
||||||
int firstUid = 0;
|
// int firstUid = 0;
|
||||||
Set<ZSetOperations.TypedTuple<String>> allRank = rank.getAllRank(roomId);
|
Set<ZSetOperations.TypedTuple<String>> allRank = rank.getAllRank(roomId);
|
||||||
if (allRank == null){
|
if (allRank == null){
|
||||||
LOGGER.error("高级竞技场赛季发奖退出,找不到房间排行榜,roomId:{}",roomId);
|
LOGGER.error("高级竞技场赛季发奖退出,找不到房间排行榜,roomId:{}",roomId);
|
||||||
|
@ -1150,9 +1159,9 @@ public class ArenaLogic {
|
||||||
// 重置标记,发送段位分
|
// 重置标记,发送段位分
|
||||||
setNewArenaResetMark(uid, roomId, ranking);
|
setNewArenaResetMark(uid, roomId, ranking);
|
||||||
// 获取第一名的uid
|
// 获取第一名的uid
|
||||||
if (ranking == 1){
|
// if (ranking == 1){
|
||||||
firstUid = uid;
|
// firstUid = uid;
|
||||||
}
|
// }
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
LOGGER.error("高级竞技场赛季发奖报错,已跳过玩家:{},排名:{},错误:{}",value,ranking,e.getMessage());
|
LOGGER.error("高级竞技场赛季发奖报错,已跳过玩家:{},排名:{},错误:{}",value,ranking,e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -139,48 +139,47 @@ public class CrossYuxulundaoLogic {
|
||||||
/**
|
/**
|
||||||
* 赛季段位重置 发奖
|
* 赛季段位重置 发奖
|
||||||
*/
|
*/
|
||||||
public void resetSeason(User user) {
|
// public void resetSeason(User user) {
|
||||||
PlayerManager player = user.getPlayerInfoManager();
|
// PlayerManager player = user.getPlayerInfoManager();
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
public void setMatchRivals(User user) {
|
// public void setMatchRivals(User user) {
|
||||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
// int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||||
if (crossGroup == -1) {
|
// if (crossGroup == -1) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
Set<Integer> robotIds = new HashSet<>(5);
|
// Set<Integer> robotIds = new HashSet<>(5);
|
||||||
PlayerManager player = user.getPlayerInfoManager();
|
// ArenaManager arenaManager = user.getArenaManager();
|
||||||
ArenaManager arenaManager = user.getArenaManager();
|
// int curLevel = arenaManager.getCrossYuxulundaoNewLevelId();//当前段位
|
||||||
int curLevel = arenaManager.getCrossYuxulundaoNewLevelId();//当前段位
|
// List<ArenaEnemy> arenaEnemies = new ArrayList<>(); //得存储
|
||||||
List<ArenaEnemy> arenaEnemies = new ArrayList<>(); //得存储
|
//
|
||||||
|
//
|
||||||
|
// Map<Integer, SMServerRankConfig> robotConfigMap = STableManager.getConfig(SMServerRankConfig.class);
|
||||||
Map<Integer, SMServerRankConfig> robotConfigMap = STableManager.getConfig(SMServerRankConfig.class);
|
// if (!robotConfigMap.containsKey(curLevel)) {
|
||||||
if (!robotConfigMap.containsKey(curLevel)) {
|
// return;
|
||||||
return;
|
// }
|
||||||
}
|
// int[] timePool = robotConfigMap.get(curLevel).getFitRobotPool();
|
||||||
int[] timePool = robotConfigMap.get(curLevel).getFitRobotPool();
|
// if (arenaManager.getCrossMatchTimes() < timePool[0]) {
|
||||||
if (arenaManager.getCrossMatchTimes() < timePool[0]) {
|
// //匹配机器人
|
||||||
//匹配机器人
|
// List<SArenaRobotConfig> robotConfig = STableManager.getConfig(SArenaRobotConfig.class).values().stream().filter(n -> n.getPoolId() == timePool[1]).collect(Collectors.toList());
|
||||||
List<SArenaRobotConfig> robotConfig = STableManager.getConfig(SArenaRobotConfig.class).values().stream().filter(n -> n.getPoolId() == timePool[1]).collect(Collectors.toList());
|
// Collections.shuffle(robotConfig);
|
||||||
Collections.shuffle(robotConfig);
|
// robotConfig.subList(0, robotIds.size()).forEach(n -> robotIds.add(n.getId()));
|
||||||
robotConfig.subList(0, robotIds.size()).forEach(n -> robotIds.add(n.getId()));
|
// for (int robot : robotIds) {
|
||||||
for (int robot : robotIds) {
|
// arenaEnemies.add(new ArenaEnemy(robot, 1, 0));
|
||||||
arenaEnemies.add(new ArenaEnemy(robot, 1, 0));
|
// }
|
||||||
}
|
// arenaManager.setCrossMatchTimes(arenaManager.getCrossMatchTimes() + 1);
|
||||||
arenaManager.setCrossMatchTimes(arenaManager.getCrossMatchTimes() + 1);
|
// arenaManager.setArenaEnemies(arenaEnemies);
|
||||||
arenaManager.setArenaEnemies(arenaEnemies);
|
// } else {
|
||||||
} else {
|
// //TODO 次数超过后怎么匹配真人 真人不足怎么办 匹配真人的规则
|
||||||
//TODO 次数超过后怎么匹配真人 真人不足怎么办 匹配真人的规则
|
// }
|
||||||
}
|
//
|
||||||
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 匹配实力相近队手
|
* 匹配实力相近队手
|
||||||
*/
|
*/
|
||||||
public void matchRivals(User user) throws Exception {
|
public void matchRivals(User user) {
|
||||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||||
if (crossGroup == -1) {
|
if (crossGroup == -1) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1166,12 +1166,7 @@ public class ChampionshipLogic {
|
||||||
long totalForce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CHAMPION_TEAM.getTeamId());
|
long totalForce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CHAMPION_TEAM.getTeamId());
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.CHAMPION_TEAM.getTeamId());
|
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(TeamEnum.CHAMPION_TEAM.getTeamId());
|
||||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
CommonProto.Team teamBuild = ArenaLogic.buildTeam(user, teamPosHeroInfoList);
|
||||||
List<Integer> heroTids = new ArrayList<>(teamPosHeroInfoList.size());
|
|
||||||
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList) {
|
|
||||||
heroTids.add(heroMap.get(teamPosHeroInfo.getHeroId()).getTemplateId());
|
|
||||||
}
|
|
||||||
CommonProto.Team teamBuild = CommonProto.Team.newBuilder().addAllHeroTid(heroTids).build();
|
|
||||||
builder.setTeam(teamBuild);
|
builder.setTeam(teamBuild);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,14 +6,8 @@ import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
public class ArenaManager extends MongoBase {
|
public class ArenaManager extends MongoBase {
|
||||||
|
|
||||||
private int failNums; //失败次数
|
|
||||||
private int successNums; //胜利次数
|
|
||||||
private int count; //进攻次数
|
|
||||||
private int flushTime; //刷新时间
|
|
||||||
private int topMaxRank=0; // 我的历史最高排名
|
private int topMaxRank=0; // 我的历史最高排名
|
||||||
public int worldFreeChallengeTime=0;
|
public int costDallyTime=0;
|
||||||
private List<ArenaEnemy> arenaEnemies;
|
|
||||||
private List<ArenaEnemy> crossYuxulundaoEnemies;
|
private List<ArenaEnemy> crossYuxulundaoEnemies;
|
||||||
|
|
||||||
//跨服 玉虚论道
|
//跨服 玉虚论道
|
||||||
|
@ -60,71 +54,6 @@ public class ArenaManager extends MongoBase {
|
||||||
return newArenaLvScore;
|
return newArenaLvScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateChallenge(int fightResult){
|
|
||||||
if(fightResult == 1){
|
|
||||||
successNums ++;
|
|
||||||
updateString("successNums",successNums);
|
|
||||||
}else{
|
|
||||||
failNums++;
|
|
||||||
updateString("failNums",failNums);
|
|
||||||
}
|
|
||||||
count++;
|
|
||||||
updateString("count",count);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFailNums() {
|
|
||||||
return failNums;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSuccessNums() {
|
|
||||||
return successNums;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCount() {
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlushTime() {
|
|
||||||
return flushTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ArenaEnemy> getArenaEnemies() {
|
|
||||||
return arenaEnemies;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArenaEnemies(List<ArenaEnemy> arenaEnemies) {
|
|
||||||
Collections.shuffle(arenaEnemies);
|
|
||||||
updateString("arenaEnemies",arenaEnemies);
|
|
||||||
this.arenaEnemies = arenaEnemies;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFlushTime(int flushTime) {
|
|
||||||
this.flushTime = flushTime;
|
|
||||||
updateString("flushTime",flushTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlushNums() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSeason() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void resetSeason(int curSeason) {
|
|
||||||
this.failNums =0;
|
|
||||||
this.successNums=0;
|
|
||||||
this.count=0;
|
|
||||||
this.flushTime=0;
|
|
||||||
|
|
||||||
|
|
||||||
updateString("failNums",failNums);
|
|
||||||
updateString("successNums",successNums);
|
|
||||||
updateString("count",count);
|
|
||||||
updateString("flushTime",flushTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTopMaxRank() {
|
public int getTopMaxRank() {
|
||||||
return topMaxRank;
|
return topMaxRank;
|
||||||
}
|
}
|
||||||
|
@ -134,17 +63,13 @@ public class ArenaManager extends MongoBase {
|
||||||
updateString("topMaxRank",topMaxRank);
|
updateString("topMaxRank",topMaxRank);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Integer> getHadTakeReward() {
|
public int getCostDallyTime() {
|
||||||
return new LinkedList<>();
|
return costDallyTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getWorldFreeChallengeTime() {
|
public void setCostDallyTime(int costDallyTime) {
|
||||||
return worldFreeChallengeTime;
|
updateString("costDallyTime",costDallyTime);
|
||||||
}
|
this.costDallyTime = costDallyTime;
|
||||||
|
|
||||||
public void setWorldFreeChallengeTime(int worldFreeChallengeTime) {
|
|
||||||
updateString("worldFreeChallengeTime",worldFreeChallengeTime);
|
|
||||||
this.worldFreeChallengeTime = worldFreeChallengeTime;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ArenaEnemy> getCrossYuxulundaoEnemies() {
|
public List<ArenaEnemy> getCrossYuxulundaoEnemies() {
|
||||||
|
|
|
@ -2529,7 +2529,7 @@ public class HeroLogic {
|
||||||
}
|
}
|
||||||
SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(templatePropetyId);
|
SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(templatePropetyId);
|
||||||
if (sPropertyConfig.getIfFormula() == 1) {
|
if (sPropertyConfig.getIfFormula() == 1) {
|
||||||
sb.append(propertyValue * 0.1 / (sArenaRobotConfig.getRoleLv() + 10) / 100).append(DIVISION);
|
sb.append(propertyValue * 0.1 / (robotLevel + 10) / 100).append(DIVISION);
|
||||||
} else {
|
} else {
|
||||||
if (sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE) {
|
if (sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE) {
|
||||||
sb.append(propertyValue / 10000f).append(DIVISION);
|
sb.append(propertyValue / 10000f).append(DIVISION);
|
||||||
|
|
|
@ -782,25 +782,19 @@ public class PlayerLogic {
|
||||||
CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
|
CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
|
||||||
if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()){
|
if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()){
|
||||||
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList().entrySet()){
|
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList().entrySet()){
|
||||||
Integer heroTid = item.getKey();
|
position = getPosition(sArenaRobotConfig, position, teamInfo, item);
|
||||||
int heroStar = item.getValue().getStar();
|
|
||||||
teamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder().setPropertyId(item.getValue().getPropertyId()).setHeroid(String.valueOf(heroTid)).setHeroTid(heroTid).setLevel(sArenaRobotConfig.getRoleLv()).setStar(heroStar).setPosition(position++).setGodSoulLv(item.getValue().getGodSoulLv()).build());
|
|
||||||
}
|
}
|
||||||
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce1());
|
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce1());
|
||||||
|
|
||||||
}else if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()){
|
}else if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()){
|
||||||
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList2().entrySet()){
|
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList2().entrySet()){
|
||||||
Integer heroTid = item.getKey();
|
position = getPosition(sArenaRobotConfig, position, teamInfo, item);
|
||||||
int heroStar = item.getValue().getStar();
|
|
||||||
teamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder().setPropertyId(item.getValue().getPropertyId()).setHeroid(String.valueOf(heroTid)).setHeroTid(heroTid).setLevel(sArenaRobotConfig.getRoleLv()).setStar(heroStar).setPosition(position++).setGodSoulLv(item.getValue().getGodSoulLv()).build());
|
|
||||||
}
|
}
|
||||||
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce2());
|
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce2());
|
||||||
|
|
||||||
}else if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()){
|
}else if(id ==TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()){
|
||||||
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList3().entrySet()){
|
for(Map.Entry<Integer,CommonProto.Hero> item : sArenaRobotConfig.getHeroMapList3().entrySet()){
|
||||||
Integer heroTid = item.getKey();
|
position = getPosition(sArenaRobotConfig, position, teamInfo, item);
|
||||||
int heroStar = item.getValue().getStar();
|
|
||||||
teamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder().setPropertyId(item.getValue().getPropertyId()).setHeroid(String.valueOf(heroTid)).setHeroTid(heroTid).setLevel(sArenaRobotConfig.getRoleLv()).setStar(heroStar).setPosition(position++).setGodSoulLv(item.getValue().getGodSoulLv()).build());
|
|
||||||
}
|
}
|
||||||
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce3());
|
teamInfo.setTotalForce(sArenaRobotConfig.getYxldTotalForce3());
|
||||||
}
|
}
|
||||||
|
@ -809,6 +803,22 @@ public class PlayerLogic {
|
||||||
return oneInfo;
|
return oneInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPosition(SArenaRobotConfig sArenaRobotConfig, int position, CommonProto.TeamOneTeamInfo.Builder teamInfo, Map.Entry<Integer, CommonProto.Hero> item) {
|
||||||
|
Integer heroTid = item.getKey();
|
||||||
|
CommonProto.Hero hero = item.getValue();
|
||||||
|
CommonProto.TeamSimpleInfo build = CommonProto.TeamSimpleInfo.newBuilder()
|
||||||
|
.setPropertyId(hero.getPropertyId())
|
||||||
|
.setHeroid(String.valueOf(heroTid))
|
||||||
|
.setHeroTid(heroTid)
|
||||||
|
.setLevel(sArenaRobotConfig.getRoleLv())
|
||||||
|
.setStar(hero.getStar())
|
||||||
|
.setPosition(position++)
|
||||||
|
.setGodSoulLv(hero.getGodSoulLv())
|
||||||
|
.build();
|
||||||
|
teamInfo.addTeam(build);
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
//获取跨服玩家信息
|
//获取跨服玩家信息
|
||||||
public CommonProto.TeamOneInfo getCrossYxldMyTeamInfo(User user,List<Integer> team) throws Exception{
|
public CommonProto.TeamOneInfo getCrossYxldMyTeamInfo(User user,List<Integer> team) throws Exception{
|
||||||
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
|
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
|
||||||
|
@ -989,7 +999,8 @@ public class PlayerLogic {
|
||||||
builder.setForce(HeroLogic.getInstance().calForce(robotHeroAttribute));
|
builder.setForce(HeroLogic.getInstance().calForce(robotHeroAttribute));
|
||||||
if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()){
|
if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId()){
|
||||||
builder.setHero(sArenaRobotConfig.getHeroMapList().get(scHero.getId()));
|
builder.setHero(sArenaRobotConfig.getHeroMapList().get(scHero.getId()));
|
||||||
}else if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()){
|
}
|
||||||
|
else if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId()){
|
||||||
builder.setHero(sArenaRobotConfig.getHeroMapList2().get(scHero.getId()));
|
builder.setHero(sArenaRobotConfig.getHeroMapList2().get(scHero.getId()));
|
||||||
}
|
}
|
||||||
else if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()){
|
else if(teamId==TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId()){
|
||||||
|
|
|
@ -26,7 +26,7 @@ public enum RankEnum {
|
||||||
EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new,false),// 达人排行榜 param1:活动进度 param2:无 param3:无
|
EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new,false),// 达人排行榜 param1:活动进度 param2:无 param3:无
|
||||||
FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new,false),//新战力排行榜 param1:人物战力 param2:无 param3:无
|
FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new,false),//新战力排行榜 param1:人物战力 param2:无 param3:无
|
||||||
@Deprecated
|
@Deprecated
|
||||||
ARENA_RANK(23,RedisKey.ARENA_RANK,ArenaRank::new,false),// 竞技场排行榜 param1:竞技场积分 param2:无 param3:无
|
// ARENA_RANK(23,RedisKey.ARENA_RANK,ArenaRank::new,false),// 竞技场排行榜 param1:竞技场积分 param2:无 param3:无
|
||||||
SITUATION_RANK(24,RedisKey.SITUATION_RANK,SituationRank::new,false),//param1:通关次数 param2:无 param3:无
|
SITUATION_RANK(24,RedisKey.SITUATION_RANK,SituationRank::new,false),//param1:通关次数 param2:无 param3:无
|
||||||
GUILD_CHALLENGE_RANK(26,RedisKey.GUILD_CHALLENGE_RANK,GuildChallengeRank::new,false),//param1:伤害 param2:无 param3:无
|
GUILD_CHALLENGE_RANK(26,RedisKey.GUILD_CHALLENGE_RANK,GuildChallengeRank::new,false),//param1:伤害 param2:无 param3:无
|
||||||
GUILD_SHEJI_SCORE_RANK(27,RedisKey.GUILD_SHEJI_SCORE_RANK,GuildSheJiScoreRank::new,false),//param1:公会社稷贡献 param2:无 param3:无
|
GUILD_SHEJI_SCORE_RANK(27,RedisKey.GUILD_SHEJI_SCORE_RANK,GuildSheJiScoreRank::new,false),//param1:公会社稷贡献 param2:无 param3:无
|
||||||
|
|
Loading…
Reference in New Issue