From 43e355c2426a75034494ba4de623bfa35f31f41c Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 7 Dec 2021 15:04:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E4=BA=BA=E6=98=9F=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/hero/HeroLogic.java | 132 ++++++++++-------- 1 file changed, 77 insertions(+), 55 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 5ef6f75a0..8012cc161 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1727,41 +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(); - Map byStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); - if (byStar != null) { - // 换个对象,尽量不要修改原值 - List rankUpConfigs = new ArrayList<>(byStar.values()); - // 聚合::根据openlevel倒序,输出list - List 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; + // 根据等级计算星级 + int heroStar = calRobotStarByLevel(heroTid,heroLevel); + // 突破,根据初始星级获取不同分区 + Map configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); + int starBreakId = 0; + if (configByShow != null) { + // openLevel 正序 + List 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 0; + return starBreakId; } /** * 根据英雄等级计算出BreaklId - * * @param heroTid * @param heroLevel * @return @@ -1769,18 +1762,20 @@ public class HeroLogic { public int calRobotBreakByLevel(int heroTid, int heroLevel) { // 初始等级 int star = SCHero.getsCHero().get(heroTid).getStar(); - Map byBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star); - if (byBreak != null) { - List rankUpConfigs = new ArrayList<>(byBreak.values()); - // 聚合:根据openlevel倒叙排序,输出成list - List collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList()); - for (SCHeroRankUpConfig scHeroRankUpConfig : collect) { - if (heroLevel > scHeroRankUpConfig.getLimitLevel()) { - return scHeroRankUpConfig.getId(); + // 突破,根据初始星级获取不同分区 + Map configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star); + int breakId = 0; + if (configByShow != null) { + // openLevel 正序排列 + List 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 0; + return breakId; } /** @@ -1794,38 +1789,65 @@ public class HeroLogic { SCHero scHero = SCHero.getsCHero().get(heroTid); // 英雄初始星级 int star = scHero.getStar(); - - // 进阶,根据初始星级获取不同分区,先进行进阶验证,再进行突破验证 - Map byStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); - if (byStar != null) { - // 换个对象,尽量不要修改原值 - List rankUpStar = new ArrayList<>(byStar.values()); - // 聚合::根据openlevel倒序,输出list - List 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 byBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, star); - if (byBreak != null) { - List rankUpBreak = new ArrayList<>(byBreak.values()); - // 聚合:根据openlevel倒叙排序,输出成list - List collect = rankUpBreak.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList()); - for (SCHeroRankUpConfig val : collect) { - if (heroLevel > val.getLimitLevel()) { - return val.getOpenStar(); + Map configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, star); + if (configByShow != null) { + // openLevel 正序排列 + List 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(); + } + if (heroLevel > rank.getOpenLevel()){ + star = rank.getOpenStar()+1; + break; + } + if (heroLevel <= rank.getOpenLevel() && i == 0 && heroLevel >= 100){ + star = rank.getLimitStar(); + break; } } } - return star; } + /** + * 根据等级计算机器人的星级,突破等级,星级突破等级 + * @param heroLevel + * @param type + * @param star + * @return + */ + private int calRobotIdByLevel(int heroLevel, int type, int star){ + // 突破,根据初始星级获取不同分区 + Map configByShow = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(type, star); + if (configByShow != null) { + List configs = new ArrayList<>(configByShow.values()); + // 聚合:根据openlevel倒叙排序,输出成list + List 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 getParaRate(SCHero scHero, int heroStar, int heroLevel, int heroBreakId) { Map result = new HashMap<>(2); Object rankupPara = null; From aedf20d453d29c022808f4cf90b16a9b6c9bf379 Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 7 Dec 2021 15:24:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E4=BA=BA=E6=98=9F=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/hero/HeroLogic.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 8012cc161..3d6004fa8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1769,7 +1769,7 @@ public class HeroLogic { // openLevel 正序排列 List collect = configByShow.values().stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel)).collect(Collectors.toList()); for (SCHeroRankUpConfig rank : collect) { - if (heroLevel < rank.getLimitLevel()){ + if (heroLevel <= rank.getLimitLevel()){ break; } breakId = rank.getId(); @@ -1799,13 +1799,18 @@ public class HeroLogic { 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 (heroLevel <= rank.getOpenLevel() && i == 0 && heroLevel >= 100){ - star = rank.getLimitStar(); + if (i == 0 && heroLevel <= rank.getOpenLevel() && heroLevel > 100){ + star = rank.getLimitStar()+1; + break; + } + if (heroLevel >= 81 && heroLevel <= 100){ + star = 5; break; } } From 946ae79b7c3405415dda8f1bd266f77320362aea Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 7 Dec 2021 15:24:37 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 3d6004fa8..039deba31 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1806,7 +1806,7 @@ public class HeroLogic { break; } if (i == 0 && heroLevel <= rank.getOpenLevel() && heroLevel > 100){ - star = rank.getLimitStar()+1; + star = rank.getOpenStar(); break; } if (heroLevel >= 81 && heroLevel <= 100){