机器人根据等级计算信息

back_recharge
duhui 2021-12-07 10:40:23 +08:00
parent 147a3a2368
commit 067f639a52
1 changed files with 44 additions and 60 deletions

View File

@ -1735,27 +1735,7 @@ public class HeroLogic {
public int calRobotStarBreakByLevel(int heroTid, int heroLevel) { public int calRobotStarBreakByLevel(int heroTid, int heroLevel) {
// 获取进阶属性 // 获取进阶属性
int star = SCHero.getsCHero().get(heroTid).getStar(); int star = SCHero.getsCHero().get(heroTid).getStar();
Map<Integer, SCHeroRankUpConfig> byStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); return calRobotInfoToLevel(heroLevel, GlobalsDef.UP_STAR_TYPE, star);
if (byStar != null) {
// 换个对象,尽量不要修改原值
List<SCHeroRankUpConfig> rankUpConfigs = new ArrayList<>(byStar.values());
// 聚合::根据openlevel倒序,输出list
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for (SCHeroRankUpConfig scHeroRankUpConfig : collect) {
if (heroLevel == scHeroRankUpConfig.getOpenLevel()) {
if (scHeroRankUpConfig.getOpenStar() > 10) {
continue;
}
return scHeroRankUpConfig.getId();
} else if (heroLevel > scHeroRankUpConfig.getOpenLevel()) {
if (scHeroRankUpConfig.getOpenStar() > 10) {
continue;
}
return scHeroRankUpConfig.getId() + 1;
}
}
}
return 0;
} }
@ -1769,18 +1749,7 @@ public class HeroLogic {
public int calRobotBreakByLevel(int heroTid, int heroLevel) { public int calRobotBreakByLevel(int heroTid, int heroLevel) {
// 初始等级 // 初始等级
int star = SCHero.getsCHero().get(heroTid).getStar(); int star = SCHero.getsCHero().get(heroTid).getStar();
Map<Integer, SCHeroRankUpConfig> byBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star); return calRobotInfoToLevel(heroLevel, GlobalsDef.BREAK_TYPE, star);
if (byBreak != null) {
List<SCHeroRankUpConfig> rankUpConfigs = new ArrayList<>(byBreak.values());
// 聚合:根据openlevel倒叙排序,输出成list
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for (SCHeroRankUpConfig scHeroRankUpConfig : collect) {
if (heroLevel > scHeroRankUpConfig.getLimitLevel()) {
return scHeroRankUpConfig.getId();
}
}
}
return 0;
} }
/** /**
@ -1794,38 +1763,53 @@ public class HeroLogic {
SCHero scHero = SCHero.getsCHero().get(heroTid); SCHero scHero = SCHero.getsCHero().get(heroTid);
// 英雄初始星级 // 英雄初始星级
int star = scHero.getStar(); int star = scHero.getStar();
// 等级从高到低开始验证,先升星,后突破
// 进阶,根据初始星级获取不同分区,先进行进阶验证,再进行突破验证 int info = calRobotInfoToLevel(heroLevel, GlobalsDef.UP_STAR_TYPE, star);
Map<Integer, SCHeroRankUpConfig> byStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); if (info > 0){
if (byStar != null) { // 大于0表示存在升星等级
// 换个对象,尽量不要修改原值 return info;
List<SCHeroRankUpConfig> rankUpStar = new ArrayList<>(byStar.values());
// 聚合::根据openlevel倒序,输出list
List<SCHeroRankUpConfig> collect = rankUpStar.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for (SCHeroRankUpConfig val : collect) {
if (heroLevel > val.getOpenLevel()) {
// 计算星级需要+1操作
return val.getOpenStar();
}
}
} }
info = calRobotInfoToLevel(heroLevel, GlobalsDef.BREAK_TYPE, star);
// 突破,根据初始星级获取不同分区 if (info > 0){
Map<Integer, SCHeroRankUpConfig> byBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star); // 大于0表示存在突破等级
if (byBreak != null) { return info;
List<SCHeroRankUpConfig> rankUpBreak = new ArrayList<>(byBreak.values());
// 聚合:根据openlevel倒叙排序,输出成list
List<SCHeroRankUpConfig> collect = rankUpBreak.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for (SCHeroRankUpConfig val : collect) {
if (heroLevel > val.getLimitLevel()) {
return val.getOpenStar();
}
}
} }
return star; return star;
} }
/**
*
* @param heroLevel
* @param type
* @param star
* @return
*/
private int calRobotInfoToLevel(int heroLevel, int type, int star){
// 突破,根据初始星级获取不同分区
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(type, star);
if (configByShow != null) {
List<SCHeroRankUpConfig> configs = new ArrayList<>(configByShow.values());
// 聚合:根据openlevel倒叙排序,输出成list
List<SCHeroRankUpConfig> collect = configs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for (int i = 0; i < collect.size(); i++) {
SCHeroRankUpConfig rank = collect.get(i);
// 等级卡在突破阶段,返回下层星级
if (heroLevel == rank.getOpenLevel()) {
return rank.getOpenStar();
}
// 最高星级
else if (heroLevel > rank.getOpenLevel() && i==0){
return rank.getOpenStar();
}
// 等级超过突破阶段,返回上层等级
else if (heroLevel > rank.getOpenLevel()){
return rank.getOpenStar()+1;
}
}
}
return 0;
}
private Map<Integer, Object> getParaRate(SCHero scHero, int heroStar, int heroLevel, int heroBreakId) { private Map<Integer, Object> getParaRate(SCHero scHero, int heroStar, int heroLevel, int heroBreakId) {
Map<Integer, Object> result = new HashMap<>(2); Map<Integer, Object> result = new HashMap<>(2);
Object rankupPara = null; Object rankupPara = null;