From de527d2f0158569759ee35aee39073f9db3ecd5b Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Wed, 27 Dec 2023 18:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B8=BF=E8=92=99=E9=98=B5bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/arena/ArenaChallengeHandler.java | 9 +- .../StartHardStageRequestHandler.java | 2 +- .../ljsd/jieling/handler/map/MapLogic.java | 5 +- .../java/com/ljsd/jieling/kefu/Cmd_fixsj.java | 2 +- .../ljsd/jieling/logic/blood/BloodLogic.java | 6 +- .../java/com/ljsd/jieling/logic/dao/Hero.java | 62 ++++++------- .../com/ljsd/jieling/logic/dao/vo/HeroVo.java | 2 +- .../logic/expedition/ExpeditionLogic.java | 36 ++++---- .../ljsd/jieling/logic/fight/FightUtil.java | 8 +- .../passiveSkillCal/PassiveskillCalEnum.java | 2 +- .../logic/hardStage/HardStageLogic.java | 88 ++++++------------- .../ljsd/jieling/logic/hero/HeroLogic.java | 29 +++--- .../jieling/logic/player/PlayerLogic.java | 6 +- .../com/ljsd/jieling/util/CBean2Proto.java | 31 +++++-- 14 files changed, 135 insertions(+), 153 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java index 546d35cbc..0cc15923a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/arena/ArenaChallengeHandler.java @@ -58,7 +58,7 @@ public class ArenaChallengeHandler extends BaseHandler heroEntry : heroManager.getEndlessHeroInfo().entrySet()) { - if (heroEntry.getValue().getLevel() < 20) { + if (heroEntry.getValue().getLevel(user) < 20) { continue; } if (endlessHeroInfo.get(heroEntry.getKey()) == null) { @@ -2744,7 +2744,8 @@ public class MapLogic { skinId = 0; skinTime = 0; } - TrailHero trailHero = new TrailHero(hero.getTemplateId(), HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, 0), hero.getStar(), heroSkill, hero.getLevel(), hero.getGodSoulLv(),hero.getPropertyId()); + Map notBufferAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, 0); + TrailHero trailHero = new TrailHero(hero.getTemplateId(), notBufferAttribute, hero.getStar(), heroSkill, hero.getLevel(user), hero.getGodSoulLv(),hero.getPropertyId()); trailHero.setSkinId(skinId); trailHero.setSkinTime(skinTime); trailHero.setPosition(saveHero.getPosition()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fixsj.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fixsj.java index 697879a00..fc8053d95 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fixsj.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_fixsj.java @@ -63,7 +63,7 @@ public class Cmd_fixsj extends GmAbstract { if(entry.getValue().get(hero.getTemplateId())<1){ continue; } - if(hero.getLevel()!=1){ + if(hero.getLevel(user)!=1){ continue; } if(hero.getStar()!= SCHero.getsCHero().get(hero.getTemplateId()).getStar()){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java index cc2653378..5079f2a32 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/blood/BloodLogic.java @@ -67,7 +67,7 @@ public class BloodLogic { } } int position = heroInfo.getPosition(); - heroAllAttribute.put(heroInfo.getHeroId(), new FamilyHeroInfo(hero.getTemplateId(), hero.getLevel(),hero.getStar(), heroAttributeMap,position,hero.getGodSoulLv(),hero.getPropertyId())); + heroAllAttribute.put(heroInfo.getHeroId(), new FamilyHeroInfo(hero.getTemplateId(), hero.getLevel(user),hero.getStar(), heroAttributeMap,position,hero.getGodSoulLv(),hero.getPropertyId())); } return heroAllAttribute; } @@ -78,9 +78,9 @@ public class BloodLogic { FamilyHeroInfo value = entry.getValue(); Map attribute = value.getAttribute(); if(fightResult[0]==0) { - attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), Long.valueOf(fightResult[index])); + attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), fightResult[index]); }else{ - attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), Long.valueOf(0)); + attribute.put(HeroAttributeEnum.CurHP.getPropertyId(), 0L); } value.setAttribute(attribute); index++; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index fb877d97e..a29c9356c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -219,44 +219,31 @@ public class Hero extends MongoBase implements Comparable,Cloneable { /** * 获取等级,如果在鸿蒙阵中,需要返回鸿蒙等级 */ - public int getLevel() { - try { - int rootId = getRootId(); - User user = UserManager.getUser(rootId); - if (user == null){ - String uid = id.substring(0, 8); - user = UserManager.getUser(Integer.parseInt(uid)); - if (user == null){ - return level; - } - } - HeroManager heroManager = user.getHeroManager(); - // 英雄 配置表信息 - SCHero scHero = SCHero.getsCHero().get(templateId); - int maxLevel = scHero.getMaxLevel(); + public int getLevel(User user) { + HeroManager heroManager = user.getHeroManager(); + // 英雄 配置表信息 + SCHero scHero = SCHero.getsCHero().get(templateId); + int maxLevel = scHero.getMaxLevel(); - // 如果鸿蒙碑开启 返回鸿蒙系统中神将返回鸿蒙碑等级 - if (heroManager.getHongmengTablet() > 0) { - // 存在共鸣或者使者 - if (heroManager.getResonances().containsValue(id) || heroManager.getHongmengGuards().containsValue(id)) { - // 鸿蒙碑超过等级上限,返回鸿蒙碑等级 - if (heroManager.getHongmengTablet() <= maxLevel) { - return heroManager.getHongmengTablet(); - } - // 最高品质大于等于10的英雄,返回鸿蒙碑等级,否则返回上限等级 - return scHero.getMaxRank() >= 10 ? heroManager.getHongmengTablet() : maxLevel; + // 如果鸿蒙碑开启 返回鸿蒙系统中神将返回鸿蒙碑等级 + if (heroManager.getHongmengTablet() > 0) { + // 存在共鸣或者使者 + if (heroManager.getResonances().containsValue(id) || heroManager.getHongmengGuards().containsValue(id)) { + // 鸿蒙碑超过等级上限,返回鸿蒙碑等级 + if (heroManager.getHongmengTablet() <= maxLevel) { + return heroManager.getHongmengTablet(); } + // 最高品质大于等于10的英雄,返回鸿蒙碑等级,否则返回上限等级 + return scHero.getMaxRank() >= 10 ? heroManager.getHongmengTablet() : maxLevel; } - if (heroManager.getResonances().containsValue(id)) { - // 模板 - HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.LEVEL); - if (hongMengAddAttribute != null) { - // 是否达到限制等级 - return Math.min(hongMengAddAttribute.value, maxLevel); - } + } + if (heroManager.getResonances().containsValue(id)) { + // 模板 + HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.LEVEL); + if (hongMengAddAttribute != null) { + // 是否达到限制等级 + return Math.min(hongMengAddAttribute.value, maxLevel); } - } catch (Exception e) { - LOGGER.error("获取鸿蒙阵等级报错, id:{}, error:{}", id, e.getMessage()); } return level; } @@ -326,15 +313,16 @@ public class Hero extends MongoBase implements Comparable,Cloneable { /** * breaId 鸿蒙阵 */ - public int getBreakIdByHongMeng(HeroManager heroManager) { + public int getBreakIdByHongMeng(User user) { + HeroManager heroManager = user.getHeroManager(); // 英雄在共鸣池中 if (heroManager.getHongmengTablet() > 0){ if (heroManager.getResonances().containsValue(id) || heroManager.getHongmengGuards().containsValue(id)) { - return HeroLogic.getInstance().calRobotBreakByLevel(templateId, getLevel()); + return HeroLogic.getInstance().calRobotBreakByLevel(templateId, getLevel(user)); } }else{ if (heroManager.getResonances().containsValue(id)) { - return HeroLogic.getInstance().calRobotBreakByLevel(templateId, getLevel()); + return HeroLogic.getInstance().calRobotBreakByLevel(templateId, getLevel(user)); } } return breakId; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java index bd8a7451f..eaad0b2ab 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java @@ -43,7 +43,7 @@ public class HeroVo { heroVo.id = hero.getId(); heroVo.templateId = hero.getTemplateId(); heroVo.star = hero.getStar(); - heroVo.HMBreakId = hero.getBreakIdByHongMeng(heroManager); + heroVo.HMBreakId = hero.getBreakIdByHongMeng(user); heroVo.starBreakId = hero.getStarBreakId(); heroVo.baubles = user.getEquipManager().getBaubles(hero.getBauBlesId()); heroVo.propertyId = hero.getPropertyId(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 4300fe310..482fe13af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -259,10 +259,10 @@ public class ExpeditionLogic { //移除已经删除的hero Set removeId = heroHP.keySet().stream().filter(k -> { if(heroMap.containsKey(k)) { - return heroMap.get(k).getLevel() < 20; + return heroMap.get(k).getLevel(user) < 20; } if(heroMapTemp.containsKey(k)) { - return heroMapTemp.get(k).getLevel() < 20; + return heroMapTemp.get(k).getLevel(user) < 20; } return !heroMap.containsKey(k) && !heroMapTemp.containsKey(k); }).collect(Collectors.toSet()); @@ -856,24 +856,28 @@ public class ExpeditionLogic { } } - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(),hero.getLevel(), heroAttributeMap).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(hero.getTemplateId())) - .setUnitSkillIds(skillSb.substring(0,skillSb.length()-1)) - .setProperty(property.substring(0, property.length()-1)) - .setPosition(teamPosHeroInfo.getPosition()) - .setStar(hero.getStar()) - .setSkinId(hero.getSkin()) - .setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId)) - .setGodSoulLv(hero.getGodSoulLv()) - .setPropertyId(hero.getPropertyId()) - .build(); - heroFightInfos.add(heroFightInfo); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(),hero.getLevel(user), heroAttributeMap).toString(); + buildFightUnitInfo(user, teamId, heroFightInfos, teamPosHeroInfo, hero, skillSb, property); } return HeroLogic.getInstance().combinationFightTeam(user,teamId,heroFightInfos); } + public static void buildFightUnitInfo(User user, int teamId, List heroFightInfos, TeamPosHeroInfo teamPosHeroInfo, Hero hero, StringBuilder skillSb, String property) { + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(hero.getTemplateId())) + .setUnitSkillIds(skillSb.substring(0,skillSb.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setPosition(teamPosHeroInfo.getPosition()) + .setStar(hero.getStar()) + .setSkinId(hero.getSkin()) + .setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId)) + .setGodSoulLv(hero.getGodSoulLv()) + .setPropertyId(hero.getPropertyId()) + .build(); + heroFightInfos.add(heroFightInfo); + } + public void getAllTreasureInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index 2ffc12afc..63df9d562 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -357,7 +357,7 @@ public class FightUtil { } private static void getHeroPropertyBuid(User user, List heroFightInfos, TeamPosHeroInfo teamPosHeroInfo, Hero hero, Map heroAttributeMap, StringBuilder propertySb, String heroSkill) { - getHeroPropertyBuid2(heroFightInfos, teamPosHeroInfo, hero, heroAttributeMap, propertySb, heroSkill, hero.getLevel(), hero.getStar(), hero.getGodSoulLv()); + getHeroPropertyBuid2(heroFightInfos, teamPosHeroInfo, hero, heroAttributeMap, propertySb, heroSkill, hero.getLevel(user), hero.getStar(), hero.getGodSoulLv()); } private static void getHeroPropertyBuid2(List heroFightInfos, TeamPosHeroInfo teamPosHeroInfo, Hero hero, Map heroAttributeMap, StringBuilder propertySb, String heroSkill, int level, int star, int godSoulLv) { @@ -443,7 +443,7 @@ public class FightUtil { StringBuilder skillSb = new StringBuilder(); StringBuilder propertySb = new StringBuilder(); String heroSkill = HeroLogic.getInstance().getHeroSkills(user, hero, skillSb).toString(); - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(), heroAttributeMap).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(user), heroAttributeMap).toString(); CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo .newBuilder() .setUnitId(Integer.toString(hero.getTemplateId())) @@ -612,7 +612,7 @@ public class FightUtil { StringBuilder skillSb = new StringBuilder(); String heroSkill = HeroLogic.getInstance().getHeroSkills(userByRpc, hero, skillSb).toString(); Map attributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(userByRpc, hero, false, teamId); - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(), attributeMap).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(userByRpc), attributeMap).toString(); CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo .newBuilder() .setUnitId(Integer.toString(hero.getTemplateId())) @@ -663,7 +663,7 @@ public class FightUtil { StringBuilder stringBuilder = new StringBuilder(); StringBuilder propertySb = new StringBuilder(); String heroSkill = HeroLogic.getInstance().getYuxuHeroSkills(user, hero, yuxuHero,stringBuilder).toString(); - getHeroPropertyBuid2(heroFightInfos, teamPosHeroInfo, hero, heroAttributeMap, propertySb, heroSkill, yuxuHero.getLevel(), yuxuHero.getStar(), yuxuHero.getGodSoulLv()); + getHeroPropertyBuid2(heroFightInfos, teamPosHeroInfo, hero, heroAttributeMap, propertySb, heroSkill, yuxuHero.getLevel(user), yuxuHero.getStar(), yuxuHero.getGodSoulLv()); } //玉虚不继承任何英雄外的技能 return CommonProto.FightTeamInfo. diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java index 870427e33..bae89d946 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java @@ -57,7 +57,7 @@ public enum PassiveskillCalEnum { float[] value = config.getValue(); int battlePropertyId = (int) value[0]; SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByBattlePID(battlePropertyId); - int level = hero.getLevel(); + int level = hero.getLevel(user); int times=level-100; if(times<=0){ return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java index 48f75a87b..f68668f65 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hardStage/HardStageLogic.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.store.StoreLogic; @@ -35,7 +36,7 @@ public class HardStageLogic { private static final Logger LOGGER = LoggerFactory.getLogger(HardStageLogic.class); - private static Map> reportRecord;//全服第一次三星通过,最快速度三星通过 +// private static Map> reportRecord;//全服第一次三星通过,最快速度三星通过 private static int hardStageBuffCopy = 100;//buff类型-赋值6个相同神将 private static int hardStageBuffLimit = 101;//buff类型-只能上阵限制类型神将 @@ -56,7 +57,7 @@ public class HardStageLogic { if(map.containsKey(maxChapter.getAsInt())){ int maxId = map.get(maxChapter.getAsInt()).getNodeList().stream().mapToInt(HardStageNode::getId).max().getAsInt(); - if(map.get(maxChapter.getAsInt()).getNodeList().stream().filter(n -> n.getId() == maxId && n.isHasPass()).count() >0){ + if(map.get(maxChapter.getAsInt()).getNodeList().stream().anyMatch(n -> n.getId() == maxId && n.isHasPass())){ SHardStage config = SHardStage.getConfigMap().get(maxId); if(config != null){ if (SHardStage.getPreList(config.getId()) != null) { @@ -116,13 +117,6 @@ public class HardStageLogic { return builder; } - /** - * 添加战斗规则 - */ - public static void fight(ISession session, int teamId, int nodeId) { - - } - /** * 领取章节奖励 */ @@ -139,17 +133,10 @@ public class HardStageLogic { } } - /** - * 回放 - */ - public static void getHSReport() { - - } - /** * 判断奖励 */ - public static int passReward(User user, HardStageNode node, int[] num, List dropList) throws Exception { + public static int passReward(HardStageNode node, int[] num, List dropList) { int addStar = 0; SHardStage config = SHardStage.getConfigMap().get(node.getId()); int currentStar = node.getState(); @@ -179,7 +166,7 @@ public class HardStageLogic { //第一星 rewardId = config.getReward1()[0]; } - if (addDropAndStar(node, dropList, rewardId, user)) { + if (addDropAndStar(node, dropList, rewardId)) { node.setState(node.getState() + (int) increase); addStar += 1; } @@ -218,7 +205,7 @@ public class HardStageLogic { if (nodeConfig.getHardStageBuff() != 0) { buff = SHardStageBuff.getConfigMap().get(nodeConfig.getHardStageBuff()); if (buff != null && buff.getType() == hardStageBuffLimit) { - if (!Arrays.stream(buff.getVocation()).boxed().anyMatch(n -> n.equals(Integer.valueOf(hero.getPropertyId())))) { + if (Arrays.stream(buff.getVocation()).boxed().noneMatch(n -> n.equals(hero.getPropertyId()))) { continue; } } @@ -235,20 +222,8 @@ public class HardStageLogic { } } - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(), heroAttributeMap).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(hero.getTemplateId())) - .setUnitSkillIds(skillSb.substring(0, skillSb.length() - 1)) - .setProperty(property.substring(0, property.length() - 1)) - .setPosition(teamPosHeroInfo.getPosition()) - .setStar(hero.getStar()) - .setSkinId(hero.getSkin()) - .setForceScore(HeroLogic.getInstance().calTeamForce(user,teamId)) - .setGodSoulLv(hero.getGodSoulLv()) - .setPropertyId(hero.getPropertyId()) - .build(); - heroFightInfos.add(heroFightInfo); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getPropertyId(), hero.getLevel(user), heroAttributeMap).toString(); + ExpeditionLogic.buildFightUnitInfo(user, teamId, heroFightInfos, teamPosHeroInfo, hero, skillSb, property); } //TOO 添加被动技能 @@ -267,14 +242,14 @@ public class HardStageLogic { HardStageNode node = chapterMap.get(nodeConfig.getChapter()).getNode(nodeConfig.getId()); int star = 0; if (node.getType() == 1) {//大节点 - star = passReward(user, node, resultNum, dropList);//星级通关奖励 + star = passReward(node, resultNum, dropList);//星级通关奖励 chapterMap.get(nodeConfig.getChapter()).addStars(star); if (!node.isHasPass()) { node.setHasPass(true); - dropList.addAll(getFirstRewards(user, nodeConfig));//关卡通过奖励 + dropList.addAll(getFirstRewards(nodeConfig));//关卡通过奖励 updateChapterAndNodeLevel(user,nodeConfig); if (SHardStage.getPreList(nodeConfig.getId()) != null) { - SHardStage.getPreList(nodeConfig.getId()).stream().forEach(n -> { + SHardStage.getPreList(nodeConfig.getId()).forEach(n -> { if (n != null) { int level = user.getPlayerInfoManager().getLevel(); user.getHardStageManager().openNewNode(level, n); @@ -288,7 +263,7 @@ public class HardStageLogic { node.setHasPass(true); node.setState(1); user.getHardStageManager().setCurNode(nodeConfig.getSection());//通过的关卡 - dropList.addAll(getFirstRewards(user, nodeConfig));//关卡通过奖励 + dropList.addAll(getFirstRewards(nodeConfig));//关卡通过奖励 updateChapterAndNodeLevel(user,nodeConfig); user.getHardStageManager().updateString("chapterMap." + nodeConfig.getChapter(), chapterMap.get(nodeConfig.getChapter())); } @@ -315,8 +290,8 @@ public class HardStageLogic { /** * 首通奖励 */ - public static List getFirstRewards(User user, SHardStage nodeConfig) throws Exception { - List dropList = new ArrayList(); + public static List getFirstRewards(SHardStage nodeConfig) { + List dropList = new ArrayList<>(); for (int rewardGroupId : nodeConfig.getPassReward()) { dropList.add(rewardGroupId); } @@ -327,11 +302,10 @@ public class HardStageLogic { * 获取奖励 */ public static CommonProto.Drop.Builder getReward(User user, int rewardId) throws Exception { - CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{rewardId}, 1, 0, BIReason.HARD_STAGE_GET); - return drop; + return ItemUtil.drop(user, new int[]{rewardId}, 1, 0, BIReason.HARD_STAGE_GET); } - private static boolean addDropAndStar(HardStageNode node, List dropList, int rewardGroupId, User user) throws Exception { + private static boolean addDropAndStar(HardStageNode node, List dropList, int rewardGroupId) { if(!node.getRewardMap().containsKey(rewardGroupId)){ node.getRewardMap().put(rewardGroupId,false); } @@ -357,11 +331,11 @@ public class HardStageLogic { /** * 升级刷新 */ - public static void refreshInfoByLevel(User user,int level) throws Exception { - int curNodeId = user.getHardStageManager().getCurNode(); - int chapterId = user.getHardStageManager().getCurChapter(); - List noOpenId = user.getHardStageManager().getNoOpenId(); - List needDel = Lists.newArrayList(); + public static void refreshInfoByLevel(User user,int level) { +// int curNodeId = user.getHardStageManager().getCurNode(); +// int chapterId = user.getHardStageManager().getCurChapter(); + List noOpenId = user.getHardStageManager().getNoOpenId(); + List needDel = Lists.newArrayList(); for (int id:noOpenId) { /*if (curNodeId == 0 && chapterId == 0) { user.getHardStageManager().getChapterMap(user); @@ -380,9 +354,9 @@ public class HardStageLogic { } } for (int del:needDel) { - noOpenId.remove(noOpenId.indexOf(del)); + noOpenId.remove((Integer) del); } - if(needDel.size()>0){ + if(!needDel.isEmpty()){ user.getHardStageManager().setNoOpenId(noOpenId); needDel.clear(); } @@ -407,11 +381,11 @@ public class HardStageLogic { /** * 星星数检测 */ - public static int checkStarNum(StringBuffer charString) throws Exception{ + public static int checkStarNum(StringBuffer charString) { int num=0; char[] chars = charString.toString().toCharArray(); - for(int i = 0; i < chars.length; i++) { - if(chars[i]=='1') { + for (char aChar : chars) { + if (aChar == '1') { num++; } } @@ -423,18 +397,12 @@ public class HardStageLogic { */ public static int getHardStageStarsSum(User user) throws Exception { Map map = user.getHardStageManager().getChapterMap(user); - if (map.values() != null) { - int starSum = map.values().stream().mapToInt(n -> n.getStars()).sum(); - return starSum; - } - return 0; + return map.values().stream().mapToInt(HardStageChapter::getStars).sum(); } /** * gm测试 - * - * @param */ public static void test(User user,int id) throws Exception{ user.getHardStageManager().getChapterMap(user); @@ -455,7 +423,7 @@ public class HardStageLogic { //Set key = map.keySet(); for(Integer key:map.keySet()){ HardStageChapter chapter = map.get(key); - chapter.getNodeList().stream().forEach(n-> + chapter.getNodeList().forEach(n-> { if(!n.isHasPass()){ if(n.getType()== 1){ 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 1f72dcfc7..e524c95d1 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 @@ -1377,6 +1377,13 @@ public class HeroLogic { return result; } + /** + * 英雄升级 + * @param session + * @param heroId + * @param targetLevel + * @throws Exception + */ public void upHeroLevel(ISession session, String heroId, int targetLevel) throws Exception { User user = UserManager.getUser(session.getUid()); Hero hero = user.getHeroManager().getHero(heroId); @@ -1391,7 +1398,7 @@ public class HeroLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } } - int oldLevel = hero.getLevel(); + int oldLevel = hero.getOriginalLevel(); //判断需要进行升级还是进行突破 Map scHeroRankUpConfigByType = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE, scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = null; @@ -1419,7 +1426,7 @@ public class HeroLogic { } breakId = scHeroRankUpConfig.getId(); } else { - if (hero.getLevel() > targetLevel) { + if (hero.getOriginalLevel() > targetLevel) { throw new ErrorCodeException(ErrorCode.newDefineCode("level wrong")); } for (; oldLevel < targetLevel; oldLevel++) { @@ -1450,7 +1457,7 @@ public class HeroLogic { //校验消耗 boolean result = ItemUtil.itemCost(user, consumeMap, BIReason.UP_HERO_LEVEL_CONSUME, hero.getTemplateId()); if (!result) { - int heroLevel = hero.getLevel(); + int heroLevel = hero.getOriginalLevel(); for (; oldLevel < targetLevel; oldLevel++) { SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsCHero().get(oldLevel); if (!ItemUtil.itemCost(user, sHeroLevlConfig.getConsume(), BIReason.UP_HERO_LEVEL_CONSUME, hero.getTemplateId())) { @@ -1505,7 +1512,7 @@ public class HeroLogic { } Map scHeroRankUpConfigByType = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByType.get(oldStar); - if (targetHero.getLevel() < scHeroRankUpConfig.getLimitLevel()) { + if (targetHero.getOriginalLevel() < scHeroRankUpConfig.getLimitLevel()) { throw new ErrorCodeException(ErrorCode.HERO_LEVE_DOWN); } @@ -1567,7 +1574,7 @@ public class HeroLogic { if (reportConsumeHero.length() > 0) { reportConsumeHero.append("|"); } - reportConsumeHero.append(hero.getTemplateId()).append("-").append(hero.getStar()).append("-").append(hero.getLevel()); + reportConsumeHero.append(hero.getTemplateId()).append("-").append(hero.getStar()).append("-").append(hero.getOriginalLevel()); if (1 == isSame && hero.getTemplateId() != targetHero.getTemplateId()) { throw new ErrorCodeException(ErrorCode.HERO_UN_MATCH); @@ -1738,7 +1745,7 @@ public class HeroLogic { Map result = new HashMap<>(); int templateId = hero.getTemplateId(); SCHero scHero = SCHero.getsCHero().get(templateId); - SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsCHero().get(hero.getLevel()); + SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsCHero().get(hero.getLevel(user)); int[][] characterLevelPara = sHeroLevlConfig.getCharacterLevelPara(); Map paraForHero = getParaForHero(user, hero); Map baseValueMap = new HashMap<>(); @@ -1959,7 +1966,7 @@ public class HeroLogic { private Map getParaForHero(User user, Hero hero) { SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - return getParaRate(scHero, hero.getStar(), hero.getLevel(), hero.getBreakIdByHongMeng(user.getHeroManager())); + return getParaRate(scHero, hero.getStar(), hero.getLevel(user), hero.getBreakIdByHongMeng(user)); } private Map getParaForRobotHero(SCHero scHero, int level, int breakId) { @@ -2473,7 +2480,7 @@ public class HeroLogic { } else { heroAttributeMap = calHeroFinalAttributeWhenInMap(user, hero, false, teamId); } - return getHeroPropertyBuilder(sb, hero.getPropertyId(), hero.getLevel(), heroAttributeMap); + return getHeroPropertyBuilder(sb, hero.getPropertyId(), hero.getLevel(user), heroAttributeMap); } public StringBuilder getHeroPropertyBuilder(StringBuilder sb, int propertyId, int heroLevel, Map heroAttributeMap) { @@ -4588,7 +4595,7 @@ public class HeroLogic { itemId.add(item.getItemId()); itemNum.add((int) item.getItemNum()); }); - ReportUtil.onReportEvent(user, ReportEventEnum.HERO_COMPOSITION.getType(), String.valueOf(hero.getTemplateId()), hero.getLevel(), hero.getStar(), itemId, itemNum); + ReportUtil.onReportEvent(user, ReportEventEnum.HERO_COMPOSITION.getType(), String.valueOf(hero.getTemplateId()), hero.getOriginalLevel(), hero.getStar(), itemId, itemNum); } /** @@ -6356,13 +6363,13 @@ public class HeroLogic { int num = Math.min(heroManager.getHeroMap().size(), averageNum); // 获取玩家全部英雄 List heroes = heroManager.getHeroMap().values().stream() - .sorted(Comparator.comparing(v -> v.getLevel(), Comparator.reverseOrder())) + .sorted(Comparator.comparing(v -> v.getLevel(user), Comparator.reverseOrder())) .collect(Collectors.toList()) .subList(0, num); // 等级相加 int count = 0; for (int i = 0; i < num; i++) { - count += heroes.get(i).getLevel(); + count += heroes.get(i).getLevel(user); } // 避免zero异常 if (count == 0) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 8b4c2641a..528a27412 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -779,7 +779,7 @@ public class PlayerLogic { teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder() .setHeroid(hero.getId()) .setHeroTid(hero.getTemplateId()) - .setLevel(yuxuHero.getLevel()) + .setLevel(yuxuHero.getLevel(user)) .setStar(yuxuHero.getStar()) .setPosition(heroInfo.getPosition()) .setSkinId(hero.getSkin()) @@ -937,7 +937,7 @@ public class PlayerLogic { if(userInMem == null){ throw new ErrorCodeException(ErrorCode.FRIENDS_USER_NULL); } - Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId); + Hero hero = userInMem.getHeroManager().getHero(heroId); if(hero == null){ throw new ErrorCodeException(ErrorCode.newDefineCode("hero no")); } @@ -968,7 +968,7 @@ public class PlayerLogic { } builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute)); - builder.setHero(CBean2Proto.getHero(hero)); + builder.setHero(CBean2Proto.getHongmengHero(userInMem, hero)); builder.setPlayerGiftLv(HeroLogic.getInstance().getGiftPotentialLv(userInMem, heroId)); Map guildSkill = userInMem.getGuildMyInfo().getGuildSkill(); int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 5b5e1a02c..249a39282 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -89,8 +89,6 @@ public class CBean2Proto { /** * 获取玩家头像框列表 - * @param user - * @return */ public static List getHeadFrameList(User user){ List headFrameLists = new ArrayList<>(); @@ -323,6 +321,23 @@ public class CBean2Proto { .setFirstOrMini(function); } + /** + * 获取鸿蒙阵上的英雄信息 + * @param user 玩家信息 + * @param hero 英雄信息 + * @return + */ + public static CommonProto.Hero getHongmengHero(User user, Hero hero){ + CommonProto.Hero heroPro = getHero(hero); + heroPro.toBuilder().setLevel(hero.getLevel(user)); + return heroPro; + } + + /** + * 获取英雄的proto对象 + * @param hero 英雄信息 + * @return + */ public static CommonProto.Hero getHero(Hero hero){ // 魂印 List soulPoss = new ArrayList<>(); @@ -357,7 +372,7 @@ public class CBean2Proto { .newBuilder() .setId(hero.getId()) .setHeroId(hero.getTemplateId()) - .setLevel(hero.getLevel()) + .setLevel(hero.getOriginalLevel()) .setStar(hero.getStar()) .setBreakId(hero.getBreakId()) .setStarBreakId(hero.getStarBreakId()) @@ -1039,7 +1054,7 @@ public class CBean2Proto { return CommonProto.TeamSimpleInfo.newBuilder() .setHeroid(hero.getId()) .setHeroTid(hero.getTemplateId()) - .setLevel(hero.getLevel()) + .setLevel(hero.getLevel(user)) .setStar(hero.getStar()) .setPosition(position) .setSkinId(hero.getSkin()) @@ -1064,9 +1079,9 @@ public class CBean2Proto { public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByPokeMon(Pokemon pokemon,int position){ return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(pokemon.getId()).setHeroTid(pokemon.getTmpId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setPosition(position).build(); } - public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByPokeMon( com.ljsd.jieling.thrift.idl.Pokemon pokemon,int position){ - return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(pokemon.getId()).setHeroTid(pokemon.getTmpId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setPosition(position).build(); - } +// public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByPokeMon( com.ljsd.jieling.thrift.idl.Pokemon pokemon,int position){ +// return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(pokemon.getId()).setHeroTid(pokemon.getTmpId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setPosition(position).build(); +// } public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByMagicSoldier(MagicSoldier soldier){ return CommonProto.TeamSimpleInfo.newBuilder() .setHeroid(soldier.getId()) @@ -1151,7 +1166,7 @@ public class CBean2Proto { return list; } - /** + /* * 获取心愿格子信息 * @param user * @return