计算机器人星级
parent
147a3a2368
commit
43e355c242
|
@ -1727,41 +1727,34 @@ public class HeroLogic {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据英雄等级计算出starBreaklId
|
* 根据英雄等级计算出starBreaklId
|
||||||
*
|
|
||||||
* @param heroTid
|
* @param heroTid
|
||||||
* @param heroLevel
|
* @param heroLevel
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
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);
|
// 根据等级计算星级
|
||||||
if (byStar != null) {
|
int heroStar = calRobotStarByLevel(heroTid,heroLevel);
|
||||||
// 换个对象,尽量不要修改原值
|
// 突破,根据初始星级获取不同分区
|
||||||
List<SCHeroRankUpConfig> rankUpConfigs = new ArrayList<>(byStar.values());
|
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star);
|
||||||
// 聚合::根据openlevel倒序,输出list
|
int starBreakId = 0;
|
||||||
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
|
if (configByShow != null) {
|
||||||
for (SCHeroRankUpConfig scHeroRankUpConfig : collect) {
|
// openLevel 正序
|
||||||
if (heroLevel == scHeroRankUpConfig.getOpenLevel()) {
|
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
|
||||||
if (scHeroRankUpConfig.getOpenStar() > 10) {
|
for (SCHeroRankUpConfig rank : collect) {
|
||||||
continue;
|
if (heroStar == rank.getOpenStar()){
|
||||||
}
|
starBreakId = rank.getId();
|
||||||
return scHeroRankUpConfig.getId();
|
break;
|
||||||
} else if (heroLevel > scHeroRankUpConfig.getOpenLevel()) {
|
|
||||||
if (scHeroRankUpConfig.getOpenStar() > 10) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return scHeroRankUpConfig.getId() + 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return starBreakId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据英雄等级计算出BreaklId
|
* 根据英雄等级计算出BreaklId
|
||||||
*
|
|
||||||
* @param heroTid
|
* @param heroTid
|
||||||
* @param heroLevel
|
* @param heroLevel
|
||||||
* @return
|
* @return
|
||||||
|
@ -1769,18 +1762,20 @@ 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);
|
// 突破,根据初始星级获取不同分区
|
||||||
if (byBreak != null) {
|
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star);
|
||||||
List<SCHeroRankUpConfig> rankUpConfigs = new ArrayList<>(byBreak.values());
|
int breakId = 0;
|
||||||
// 聚合:根据openlevel倒叙排序,输出成list
|
if (configByShow != null) {
|
||||||
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
|
// openLevel 正序排列
|
||||||
for (SCHeroRankUpConfig scHeroRankUpConfig : collect) {
|
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
|
||||||
if (heroLevel > scHeroRankUpConfig.getLimitLevel()) {
|
for (SCHeroRankUpConfig rank : collect) {
|
||||||
return scHeroRankUpConfig.getId();
|
if (heroLevel < rank.getLimitLevel()){
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
breakId = rank.getId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return breakId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1794,38 +1789,65 @@ public class HeroLogic {
|
||||||
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
||||||
// 英雄初始星级
|
// 英雄初始星级
|
||||||
int star = scHero.getStar();
|
int star = scHero.getStar();
|
||||||
|
|
||||||
// 进阶,根据初始星级获取不同分区,先进行进阶验证,再进行突破验证
|
|
||||||
Map<Integer, SCHeroRankUpConfig> byStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star);
|
|
||||||
if (byStar != null) {
|
|
||||||
// 换个对象,尽量不要修改原值
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 突破,根据初始星级获取不同分区
|
// 突破,根据初始星级获取不同分区
|
||||||
Map<Integer, SCHeroRankUpConfig> byBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star);
|
Map<Integer, SCHeroRankUpConfig> configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star);
|
||||||
if (byBreak != null) {
|
if (configByShow != null) {
|
||||||
List<SCHeroRankUpConfig> rankUpBreak = new ArrayList<>(byBreak.values());
|
// openLevel 正序排列
|
||||||
// 聚合:根据openlevel倒叙排序,输出成list
|
List<SCHeroRankUpConfig> collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList());
|
||||||
List<SCHeroRankUpConfig> collect = rankUpBreak.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
|
// 遍历
|
||||||
for (SCHeroRankUpConfig val : collect) {
|
for (int i = collect.size() - 1; i >= 0; i--) {
|
||||||
if (heroLevel > val.getLimitLevel()) {
|
SCHeroRankUpConfig rank = collect.get(i);
|
||||||
return val.getOpenStar();
|
if (heroLevel >= rank.getOpenLevel() && i == collect.size()-1){
|
||||||
|
star = rank.getOpenStar();
|
||||||
|
}
|
||||||
|
if (heroLevel > rank.getOpenLevel()){
|
||||||
|
star = rank.getOpenStar()+1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (heroLevel <= rank.getOpenLevel() && i == 0 && heroLevel >= 100){
|
||||||
|
star = rank.getLimitStar();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return star;
|
return star;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据等级计算机器人的星级,突破等级,星级突破等级
|
||||||
|
* @param heroLevel
|
||||||
|
* @param type
|
||||||
|
* @param star
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private int calRobotIdByLevel(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.getId();
|
||||||
|
}
|
||||||
|
// 最高星级
|
||||||
|
else if (heroLevel > rank.getOpenLevel() && i==0){
|
||||||
|
return rank.getId();
|
||||||
|
}
|
||||||
|
// 等级超过突破阶段,返回上层等级
|
||||||
|
else if (heroLevel > rank.getOpenLevel()){
|
||||||
|
return collect.get(i-1).getId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
|
Loading…
Reference in New Issue