Merge branch 'master_prb_gn' into master_test_gn

# Conflicts:
#	serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java
back_recharge
jiahuiwen 2021-12-07 16:03:47 +08:00
commit f0ba0de60b
1 changed files with 58 additions and 16 deletions

View File

@ -1727,21 +1727,34 @@ public class HeroLogic {
/**
* starBreaklId
*
* @param heroTid
* @param heroLevel
* @return
*/
public int calRobotStarBreakByLevel(int heroTid, int heroLevel) {
// 获取进阶属性
// 获取原始星级
int star = SCHero.getsCHero().get(heroTid).getStar();
return calRobotIdByLevel(heroLevel, GlobalsDef.UP_STAR_TYPE, star);
// 根据等级计算星级
int heroStar = calRobotStarByLevel(heroTid,heroLevel);
// 突破,根据初始星级获取不同分区
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star);
int starBreakId = 0;
if (configByShow != null) {
// openLevel 正序
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
for (SCHeroRankUpConfig rank : collect) {
if (heroStar == rank.getOpenStar()){
starBreakId = rank.getId();
break;
}
}
}
return starBreakId;
}
/**
* BreaklId
*
* @param heroTid
* @param heroLevel
* @return
@ -1749,7 +1762,20 @@ public class HeroLogic {
public int calRobotBreakByLevel(int heroTid, int heroLevel) {
// 初始等级
int star = SCHero.getsCHero().get(heroTid).getStar();
return calRobotIdByLevel(heroLevel, GlobalsDef.BREAK_TYPE, star);
// 突破,根据初始星级获取不同分区
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star);
int breakId = 0;
if (configByShow != null) {
// openLevel 正序排列
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
for (SCHeroRankUpConfig rank : collect) {
if (heroLevel <= rank.getLimitLevel()){
break;
}
breakId = rank.getId();
}
}
return breakId;
}
/**
@ -1763,17 +1789,31 @@ public class HeroLogic {
SCHero scHero = SCHero.getsCHero().get(heroTid);
// 英雄初始星级
int star = scHero.getStar();
Map<Integer, SCHeroRankUpConfig> config = STableManager.getConfig(SCHeroRankUpConfig.class);
// 等级从高到低开始验证,先升星,后突破
int id = calRobotIdByLevel(heroLevel, GlobalsDef.UP_STAR_TYPE, star);
if (id > 0){
// 大于0表示存在升星等级
return Optional.ofNullable(config.get(id)).map(SCHeroRankUpConfig::getOpenStar).orElse(star);
}
id = calRobotIdByLevel(heroLevel, GlobalsDef.BREAK_TYPE, star);
if (id > 0){
// 大于0表示存在突破等级
return Optional.ofNullable(config.get(id)).map(SCHeroRankUpConfig::getOpenStar).orElse(star);
// 突破,根据初始星级获取不同分区
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star);
if (configByShow != null) {
// openLevel 正序排列
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
// 遍历
for (int i = collect.size() - 1; i >= 0; i--) {
SCHeroRankUpConfig rank = collect.get(i);
if (heroLevel >= rank.getOpenLevel() && i == collect.size()-1){
star = rank.getOpenStar();
break;
}
if (heroLevel > rank.getOpenLevel()){
star = rank.getOpenStar()+1;
break;
}
if (i == 0 && heroLevel <= rank.getOpenLevel() && heroLevel > 100){
star = rank.getOpenStar();
break;
}
if (heroLevel >= 81 && heroLevel <= 100){
star = 5;
break;
}
}
}
return star;
}
@ -1794,6 +1834,7 @@ public class HeroLogic {
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.getId();
@ -1811,6 +1852,7 @@ public class HeroLogic {
return 0;
}
private Map<Integer, Object> getParaRate(SCHero scHero, int heroStar, int heroLevel, int heroBreakId) {
Map<Integer, Object> result = new HashMap<>(2);
Object rankupPara = null;