From b183dd664b319f29e61b54f3b8ff06af90332668 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 28 Jan 2019 17:36:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E5=8D=87=E6=98=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/server/HeroRankupConfig.txt | 36 ++++++++++++------- .../jieling/config/SCHeroRankUpConfig.java | 25 ++++++++----- .../ljsd/jieling/logic/hero/HeroLogic.java | 12 ++++--- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/conf/server/HeroRankupConfig.txt b/conf/server/HeroRankupConfig.txt index e6d5cea14..aca6a3f09 100644 --- a/conf/server/HeroRankupConfig.txt +++ b/conf/server/HeroRankupConfig.txt @@ -1,12 +1,24 @@ -Id Type RankupPara LimitLevel OpenLevel LimitStar OpenStar ConsumeMaterial -int int float int int int int mut,int#int,2 -1 1 2000 30 40 3 3 14#10000|4#20 -2 1 5000 40 50 3 3 14#20000|4#40 -3 1 9000 50 60 3 3 14#30000|4#100 -4 1 14000 60 80 4 4 14#30000|4#300 -5 1 20000 80 100 5 5 14#70000|4#1000 -6 1 60000 100 140 5 6 14#120000|4#0 -7 2 2000 140 160 6 7 14#0|4#2000 -8 2 4000 160 180 7 8 14#0|4#3000 -9 2 7000 180 200 8 9 14#0|4#4000 -10 2 10000 200 250 9 10 14#0|4#10000 +Id Type RankupPara LimitLevel OpenLevel LimitStar OpenStar ConsumeMaterial Star +int int float int int int int mut,int#int,2 int +1 1 2000 30 40 5 5 14#10000|4#20 5 +2 1 5000 40 50 5 5 14#20000|4#40 5 +3 1 9000 50 60 5 5 14#30000|4#100 5 +4 1 14000 60 80 5 5 14#30000|4#300 5 +5 1 20000 80 100 5 5 14#70000|4#1000 5 +6 1 60000 100 140 5 6 14#120000|4#0 5 +7 2 2000 140 160 6 7 14#0|4#2000 5 +8 2 4000 160 180 7 8 14#0|4#3000 5 +9 2 7000 180 200 8 9 14#0|4#4000 5 +10 2 10000 200 250 9 10 14#0|4#10000 5 +51 1 2000 30 40 4 4 14#10000|4#20 4 +52 1 5000 40 50 4 4 14#20000|4#40 4 +53 1 9000 50 60 4 4 14#30000|4#100 4 +54 1 14000 60 80 4 4 14#30000|4#300 4 +55 1 20000 80 100 4 5 14#70000|4#1000 4 +56 1 60000 100 140 5 6 14#120000|4#0 4 +57 2 2000 140 160 6 7 14#0|4#2000 4 +58 2 4000 160 180 7 8 14#0|4#3000 4 +59 2 7000 180 200 8 9 14#0|4#4000 4 +101 1 2000 30 40 3 3 14#10000|4#20 3 +102 1 5000 40 50 3 3 14#20000|4#40 3 +103 1 9000 50 60 3 3 14#30000|4#100 3 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 7f5152f6e..aebc491ab 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,7 @@ import java.util.TreeMap; @Table(name = "HeroRankupConfig") public class SCHeroRankUpConfig implements BaseConfig{ - public static Map> scHeroRankUpConfigByType; + public static Map>> scHeroRankUpConfigByStar; private int id; @@ -28,25 +28,30 @@ public class SCHeroRankUpConfig implements BaseConfig{ private int consumeMaterial[][]; + private int star; + @Override public void init() throws Exception { - Map> result = new HashMap<>(); + Map>> result = new HashMap<>(); Map config = STableManager.getConfig(SCHeroRankUpConfig.class); for(SCHeroRankUpConfig scHeroRankUpConfig: config.values()){ int type = scHeroRankUpConfig.getType(); if(!result.containsKey(type)){ result.put(type,new TreeMap<>()); } - if(type == GlobalsDef.UP_STAR_TYPE){ - result.get(type).put(scHeroRankUpConfig.getLimitStar(),scHeroRankUpConfig); + if(!result.get(type).containsKey(scHeroRankUpConfig.getStar())){ + result.get(type).put(scHeroRankUpConfig.getStar(),new HashMap<>()); } - result.get(type).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); + if(type == GlobalsDef.UP_STAR_TYPE){ + result.get(type).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitStar(),scHeroRankUpConfig); + } + result.get(type).get(scHeroRankUpConfig.getStar()).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); } - scHeroRankUpConfigByType = result; + scHeroRankUpConfigByStar = result; } - public static Map getScHeroRankUpConfigByType(int type) { - return scHeroRankUpConfigByType.get(type); + public static Map getScHeroRankUpConfigByType(int type,int heroInitStar) { + return scHeroRankUpConfigByStar.get(type).get(heroInitStar); } public int getId() { @@ -80,4 +85,8 @@ public class SCHeroRankUpConfig implements BaseConfig{ public int[][] getConsumeMaterial() { return consumeMaterial; } + + public int getStar() { + return star; + } } 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 b35e3e3b4..e1d18235f 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 @@ -215,10 +215,11 @@ public class HeroLogic { MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_LEVEL_RESPONSE_VALUE,""); return; } + SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); int oldLevel = hero.getLevel(); //判断需要进行升级还是进行突破 - Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE); + Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE,scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByType.get(oldLevel); boolean isBreak =false; int[][] consume; @@ -270,13 +271,13 @@ public class HeroLogic { } int oldStar = targetHero.getStar(); - Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE); + SCHero scHero = SCHero.getsCHero().get(targetHero.getTemplateId()); + Map scHeroRankUpConfigByType = SCHeroRankUpConfig.getScHeroRankUpConfigByType(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,"等级不够"); return; } - SCHero scHero = SCHero.getsCHero().get(targetHero.getTemplateId()); Map consumeMaterialInfoByPosition = scHero.getConsumeMaterialInfoOfPositionByStar(oldStar + 1); boolean canUse = true; List removeHeroIds = new ArrayList<>(); @@ -399,7 +400,8 @@ public class HeroLogic { private Map getParaForHero(Hero hero){ Map result = new HashMap<>(2); - Map scHeroRankUpConfigByTypeOfStar = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE); + SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); + Map scHeroRankUpConfigByTypeOfStar = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByTypeOfStar.get(hero.getStar()); float rankupPara =0.0f; if( scHeroRankUpConfig!=null ){ @@ -408,7 +410,7 @@ public class HeroLogic { //突破系数 float breakPara = 0.0f; int heroLevel = hero.getLevel(); - Map scHeroRankUpConfigByTypOfBreak = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE); + Map scHeroRankUpConfigByTypOfBreak = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE,scHero.getStar()); for( SCHeroRankUpConfig scHeroRankUpConfigTmp :scHeroRankUpConfigByTypOfBreak.values()){ if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() ){ breakPara = scHeroRankUpConfigTmp.getRankupPara();