From 873c6c346e4c80427e02e38cb7c2897aa6b34ded Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 23 Jan 2019 16:03:21 +0800 Subject: [PATCH] hero up star --- .../jieling/config/SCHeroRankUpConfig.java | 3 +- .../com/ljsd/jieling/config/SGameSetting.java | 20 +++++-- .../com/ljsd/jieling/core/GlobalsDef.java | 7 +++ .../ljsd/jieling/logic/hero/HeroLogic.java | 59 +++++++++++++++++++ 4 files changed, 83 insertions(+), 6 deletions(-) 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 88f7a1ac8..4ce60c4f5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java @@ -5,6 +5,7 @@ import com.ljsd.jieling.logic.Table; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; @Table(name = "HeroRankupConfig") public class SCHeroRankUpConfig implements BaseConfig{ @@ -33,7 +34,7 @@ public class SCHeroRankUpConfig implements BaseConfig{ for(SCHeroRankUpConfig scHeroRankUpConfig: config.values()){ int type = scHeroRankUpConfig.getType(); if(!result.containsKey(type)){ - result.put(type,new HashMap<>()); + result.put(type,new TreeMap<>()); } if(type == 1){ result.get(type).put(scHeroRankUpConfig.getLimitLevel(),scHeroRankUpConfig); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java index 38848df39..d2baee9f1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGameSetting.java @@ -14,13 +14,23 @@ public class SGameSetting implements BaseConfig { private int[] speedFormula; + private static SGameSetting gameSetting; + + + + @Override public void init() throws Exception { - + Map config = STableManager.getConfig(SGameSetting.class); + gameSetting = config.get(1); } - public int getId() { + public static SGameSetting getGameSetting() { + return gameSetting; + } + + public int getId() { return id; } @@ -32,11 +42,11 @@ public class SGameSetting implements BaseConfig { return speedFormula; } - public float calSpeed(float speed){ - float result = 0.0f; + public float calSpeed(float speed,int level){ + float result = speed; int length = speedFormula.length; for(int i=0;i< speedFormula.length;i++){ - double pow = Math.pow(speed, --length); + double pow = Math.pow(level, --length); result += speedFormula[i]*pow; } return result; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java index 9a8d3f7a0..29e52b9d2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java @@ -6,4 +6,11 @@ public interface GlobalsDef { int BREAK_TYPE =1 ; //1突破 int UP_STAR_TYPE = 2; //2升星 + //英雄属性 + int HP_TYPE =1; + int ATTACK_TYPE =2; + int PhysicalDefence_TYPE =3; + int MagicDefence_TYPE =4; + int SPEED_TYPE =5; + } 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 18070c599..dfe36e9b6 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 @@ -324,6 +324,65 @@ public class HeroLogic { } + //初始属性*(1+化境增长)*等级系数 + 初始属性*突破系数 + + public float calHeroAttribute(Hero hero,int type){ + int templateId = hero.getTemplateId(); + SCHero scHero = SCHero.getsCHero().get(templateId); + float baseValue = getBaseValueByType(scHero,type); + + float characterLevelPara = SHeroLevlConfig.getsCHero().get(hero.getLevel()).getCharacterLevelPara(); + //计算化境增长 + Map scHeroRankUpConfigByTypeOfStar = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE); + SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByTypeOfStar.get(hero.getStar()); + float rankupPara =0.0f; + if( scHeroRankUpConfig!=null ){ + rankupPara = scHeroRankUpConfig.getRankupPara(); + } + //突破系数 + float breakPara = 0.0f; + int heroLevel = hero.getLevel(); + Map scHeroRankUpConfigByTypOfBreak = SCHeroRankUpConfig.getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE); + for( SCHeroRankUpConfig scHeroRankUpConfigTmp :scHeroRankUpConfigByTypOfBreak.values()){ + if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() ){ + breakPara = scHeroRankUpConfigTmp.getRankupPara(); + } + if(heroLevel <= scHeroRankUpConfigTmp.getOpenLevel()){ + break; + } + } + + if(type == GlobalsDef.SPEED_TYPE){ + return SGameSetting.getGameSetting().calSpeed(baseValue,heroLevel); + } + + return baseValue * ( 1 + rankupPara/10000.f) * characterLevelPara * breakPara; + + } + + private float getBaseValueByType(SCHero scHero,int type){ + float result = 0.0f; + switch (type){ + case GlobalsDef.HP_TYPE: + result = scHero.getHp(); + break; + case GlobalsDef.ATTACK_TYPE: + result = scHero.getAttack(); + break; + case GlobalsDef.PhysicalDefence_TYPE: + result = scHero.getPhysicalDefence(); + break; + case GlobalsDef.MagicDefence_TYPE: + result = scHero.getMagicDefence(); + break; + case GlobalsDef.SPEED_TYPE: + result = scHero.getSpeed(); + break; + + } + return result; + } +