diff --git a/luafight/Modules/Battle/Logic/BattleLogic.lua b/luafight/Modules/Battle/Logic/BattleLogic.lua index 618a4d4fb..6c648309a 100644 --- a/luafight/Modules/Battle/Logic/BattleLogic.lua +++ b/luafight/Modules/Battle/Logic/BattleLogic.lua @@ -165,7 +165,6 @@ end function BattleLogic.AddRole(roleData) curUid = curUid + 1 local data = rolePool:Get() - --rolePool:Get(curUid, roleData) data:Init(curUid, roleData) objList:Add(curUid, data) BattleLogic.Event:DispatchEvent(BattleEventName.AddRole, data) @@ -310,24 +309,20 @@ function BattleLogic.BattleEnd(result) end function BattleLogic.Clear() - local index = 1 - while index <= objList.size do - BattleLogic.RemoveObj(objList.vList[index].uid) + while objList.size > 0 do + BattleLogic.RemoveObj(objList.vList[objList.size].uid) end - index = 1 - while index <= tbActionList.size do - actionPool:Put(tbActionList.buffer[index]) - tbActionList:Remove(index) + while tbActionList.size > 0 do + actionPool:Put(tbActionList.buffer[tbActionList.size]) + tbActionList:Remove(tbActionList.size) end end function BattleLogic.ClearOrder() local index = 1 - local count = objList.size - while index <= count do + while index <= objList.size do if objList.vList[index].camp == 1 then BattleLogic.RemoveObj(objList.vList[index].uid) - count = count - 1 else index = index + 1 end diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java index 0e2469e38..d0875544d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java @@ -14,18 +14,18 @@ import java.util.concurrent.CopyOnWriteArrayList; public class SSkillLogicConfig implements BaseConfig { public static Map sSkillLogicConfigMap; public static Map sSkillLogicVoMap; - private int id; + private int id; - private float[][] target; + private float[][] target; - private int[][] effect; + private int[][] effect; - private float[][] effectValue; + private float[][] effectValue; - private float cd; + private float cd; - - @Override + + @Override public void init() throws Exception { sSkillLogicConfigMap = STableManager.getConfig(SSkillLogicConfig.class); Map skillLogicVoMap = new ConcurrentHashMap<>(); @@ -57,6 +57,32 @@ public class SSkillLogicConfig implements BaseConfig { return effect; } + public int getEffectValueIndex (int[][] effectArr,int value){ + StringBuilder effectStr = new StringBuilder(); + for (int[] effects :effectArr){ + for (int eff :effects){ + if (effectStr.length() == 0){ + effectStr = new StringBuilder(String.valueOf(eff)); + }else{ + effectStr.append("#").append(eff); + } + } + } + int[] ints = StringUtil.parseFiledInt(effectStr.toString()); + Map map = new ConcurrentHashMap<>(); + for (int i =0 ; i < ints.length; i++){ + map.put(i,ints[i]); + } + int index = 0; + for (Map.Entry entry : map.entrySet()){ + if (entry.getValue() == value){ + index = entry.getKey(); + break; + } + } + return index; + } + public float[][] getEffectValue() { return effectValue; } @@ -76,7 +102,7 @@ public class SSkillLogicConfig implements BaseConfig { SkillTargetVo skillTargetVo = new SkillTargetVo(); skillTargetVo.setTargetId((int) targets[i][0]); skillTargetVo.setContinuedTime(targets[i][1]); - skillTargetVo.setEffectVale(getEffectVal(effect[i],effectValue,i)); + skillTargetVo.setEffectVale(getEffectVal(effect[i],effectValue,effect)); skillTargetVos.add(skillTargetVo); } SSkillLogicVo sSkillLogicVo = new SSkillLogicVo(); @@ -86,7 +112,7 @@ public class SSkillLogicConfig implements BaseConfig { return sSkillLogicVo; } - private float[][] getEffectVal(int[] effects, float[][] effectValues,int index) { + private float[][] getEffectVal(int[] effects, float[][] effectValues,int[][] effect) { StringBuilder effectInfo = new StringBuilder(); for (int i = 0; i < effects.length; i++) { if (effectInfo.length() == 0){ @@ -94,7 +120,8 @@ public class SSkillLogicConfig implements BaseConfig { }else { effectInfo.append("|").append(effects[i]); } - float[] effectValue = effectValues[i +index]; + int index = getEffectValueIndex(effect, effects[i]); + float[] effectValue = effectValues[index]; for (float effectVal : effectValue) { effectInfo.append("#").append(effectVal); }