diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java index 90afba05d..567a48a57 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java @@ -10,7 +10,8 @@ import java.util.TreeMap; @Table(name = "HeroRankupConfig") public class SCHeroRankUpConfig implements BaseConfig{ - public static Map>> scHeroRankUpConfigByStar; + public static Map>> scHeroRankUpConfigByShow; + public static Map>> scHeroRankUpConfigByType; private int id; @@ -35,25 +36,50 @@ public class SCHeroRankUpConfig implements BaseConfig{ @Override public void init() throws Exception { Map>> result = new TreeMap<>(); + Map>> calc = new TreeMap<>(); Map config = STableManager.getConfig(SCHeroRankUpConfig.class); for(SCHeroRankUpConfig scHeroRankUpConfig: config.values()){ int show = scHeroRankUpConfig.getShow(); + int type = scHeroRankUpConfig.getType(); if(!result.containsKey(show)){ result.put(show,new TreeMap<>()); } + + if(!calc.containsKey(type)){ + calc.put(type,new TreeMap<>()); + } if(!result.get(show).containsKey(scHeroRankUpConfig.getStar())){ result.get(show).put(scHeroRankUpConfig.getStar(),new TreeMap<>()); } + + if(!calc.get(type).containsKey(scHeroRankUpConfig.getStar())){ + calc.get(type).put(scHeroRankUpConfig.getStar(),new TreeMap<>()); + } + if(show == GlobalsDef.UP_STAR_TYPE){ result.get(show).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitStar(),scHeroRankUpConfig); } - result.get(show).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); + if( show == GlobalsDef.BREAK_TYPE){ + result.get(show).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); + } + if(type == GlobalsDef.UP_STAR_TYPE){ + calc.get(type).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitStar(),scHeroRankUpConfig); + } + + if(type == GlobalsDef.BREAK_TYPE){ + calc.get(type).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); + } } - scHeroRankUpConfigByStar = result; + scHeroRankUpConfigByShow = result; + scHeroRankUpConfigByType = calc; } - public static Map getScHeroRankUpConfigByType(int type,int heroInitStar) { - return scHeroRankUpConfigByStar.get(type).get(heroInitStar); + public static Map getScHeroRankUpConfigByShow(int show, int heroInitStar) { + return scHeroRankUpConfigByShow.get(show).get(heroInitStar); + } + + public static Map getScHeroRankUpConfigByType(int type, int heroInitStar) { + return scHeroRankUpConfigByType.get(type).get(heroInitStar); } public int getId() { 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 853dbd329..c458a9bfc 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 @@ -273,7 +273,7 @@ public class HeroLogic { int oldLevel = hero.getLevel(); //判断需要进行升级还是进行突破 - Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE,scHero.getStar()); + Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByShow(GlobalsDef.BREAK_TYPE,scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = null; if(scHeroRankUpConfigByType!=null){ scHeroRankUpConfig = scHeroRankUpConfigByType.get(oldLevel); @@ -298,7 +298,7 @@ public class HeroLogic { consume = sHeroLevlConfig.getConsume(); } if(!isBreak){ - Map scHeroRankUpConfigByTypeStar = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE, scHero.getStar()); + Map scHeroRankUpConfigByTypeStar = SCHeroRankUpConfig.getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, scHero.getStar()); if(scHeroRankUpConfig == null && scHeroRankUpConfigByTypeStar == null && scHeroRankUpConfigByType!=null){ boolean isAll = true; for( SCHeroRankUpConfig scHeroRankUpConfigTmp :scHeroRankUpConfigByType.values()){ @@ -357,7 +357,7 @@ public class HeroLogic { int oldStar = targetHero.getStar(); SCHero scHero = SCHero.getsCHero().get(targetHero.getTemplateId()); - Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); + Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByType.get(oldStar); if( targetHero.getLevel() < scHeroRankUpConfig.getLimitLevel()){ MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"等级不够"); @@ -518,7 +518,7 @@ public class HeroLogic { float breakPara = 0.0f; Map scHeroRankUpConfigByTypeOfStar = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); if(scHeroRankUpConfigByTypeOfStar!= null){ - SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByTypeOfStar.get(hero.getStar()); + SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByTypeOfStar.get(hero.getStar()-1); if( scHeroRankUpConfig!=null && hero.getLevel() >= scHeroRankUpConfig.getLimitLevel()){ if(scHeroRankUpConfig.getType() == GlobalsDef.BREAK_TYPE){ breakPara = scHeroRankUpConfig.getRankupPara(); @@ -532,7 +532,7 @@ public class HeroLogic { int heroLevel = hero.getLevel(); Map scHeroRankUpConfigByTypOfBreak = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE,scHero.getStar()); for( SCHeroRankUpConfig scHeroRankUpConfigTmp :scHeroRankUpConfigByTypOfBreak.values()){ - if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() && hero.getBreakId()>= scHeroRankUpConfigTmp.getId()){ + if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() && hero.getBreakId()>= scHeroRankUpConfigTmp.getId() && breakPara< scHeroRankUpConfigTmp.getRankupPara()){ breakPara = scHeroRankUpConfigTmp.getRankupPara(); } if(heroLevel < scHeroRankUpConfigTmp.getOpenLevel()){