From 41a27bb260666c8d0f23959713c018247fedf2a1 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Mon, 28 Jan 2019 18:20:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E6=88=98=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/core/GlobalsDef.java | 4 ++ .../com/ljsd/jieling/logic/dao/Equip.java | 10 ++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 37 +++++++++++++++---- 3 files changed, 43 insertions(+), 8 deletions(-) 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 9c8281c33..0f3cea282 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java @@ -17,4 +17,8 @@ public interface GlobalsDef { int RANKUP_PARA_TYPE =1; int BREAK_PARA_TYPE =2; + // 属性加成类型 + int ABSOLUTE_TYPE =1; // 绝对值 + int PERCENT_TYPE =2; // 百分比 + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java index cefb8a5cb..de57e1ef8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java @@ -52,7 +52,7 @@ public class Equip extends MongoBase { this.secondValueByIdMap = getSecondValue(sEquipConfig.getPool(),secondValue); } - public Map getSecondValue(int poolId,int nums){ + private Map getSecondValue(int poolId,int nums){ Map result = new HashMap<>(); List sEquipPropertyPoolList = SEquipPropertyPool.getSEquipPropertyPool(poolId); int totalWeight = 0; @@ -114,4 +114,12 @@ public class Equip extends MongoBase { updateString("heroId",heroId); this.heroId = heroId; } + + public Map getPropertyValueByIdMap() { + return propertyValueByIdMap; + } + + public Map getSecondValueByIdMap() { + return secondValueByIdMap; + } } 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 e1d18235f..a018b89d5 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 @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.hero; import com.ljsd.GameApplication; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -448,20 +449,42 @@ public class HeroLogic { } - //todo 计算英雄战斗力 战斗力 = 生命*0.7 + (护甲 + 魔坑)*5 + 攻击 *10 + (暴击率 + 效果命中率 + 效果抵抗率 )*5 +(属性攻击率 + 属性防御率)*30 public int calHeoForce(User user, Hero hero){ Map heroAllAttribute = calHeroAllAttribute(hero); - double heroBaseForce = heroAllAttribute.get(GlobalsDef.HP_TYPE) * 0.7 + (heroAllAttribute.get(GlobalsDef.PHYSICAL_DEFENCE_TYPE) + heroAllAttribute.get(GlobalsDef.MAGIC_DEFENCE_TYPE)) * 5 + heroAllAttribute.get(GlobalsDef.ATTACK_TYPE) * 10; - //todo 计算装备加成 Collection values = hero.getEquipByPositionMap().values(); EquipManager equipManager = user.getEquipManager(); for(String equipId:values){ Equip equip = equipManager.getEquipMap().get(equipId); - + Map propertyValueByIdMap = equip.getPropertyValueByIdMap(); + Map secondValueByIdMap = equip.getSecondValueByIdMap(); + combinedAttribute(propertyValueByIdMap,heroAllAttribute); + combinedAttribute(secondValueByIdMap,heroAllAttribute); + } + double result = 0; + for(Map.Entry item : heroAllAttribute.entrySet()){ + Integer propertyId = item.getKey(); + Integer propertyValue = item.getValue(); + SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(propertyId); + int style = sPropertyConfig.getStyle(); + float score = sPropertyConfig.getScore(); + if(style == GlobalsDef.PERCENT_TYPE){ + score = score/100; + } + result += propertyValue*score; + } + + return (int)result; + } + + private void combinedAttribute(Map otherAttriMaop,Map heroAttributeMap){ + for(Map.Entry item : otherAttriMaop.entrySet()){ + Integer propertyId = item.getKey(); + Integer propertyValue = item.getValue(); + if(heroAttributeMap.containsKey(propertyId)){ + propertyValue = heroAttributeMap.get(propertyId); + } + heroAttributeMap.put(propertyId,propertyValue); } - float equipAddForce =0.0f; - int result = (int) (heroBaseForce + equipAddForce); - return result; }