public static void DetachBuff(SkillObj tarObj, SkillObj srcObj, BuffInfo_New buff, BuffConfig_New buffConfig) { var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return; } BuffLogic buffLogic = BuffLogics[buffLogicId]; //先从src方进行修正 if (srcObj != null) { var srcSkillList = srcObj.GetSkillList(); var srcBuffList = srcObj.GetBuffList(); if (srcSkillList != null) { foreach (var skillInfo in srcSkillList) { int skillId = srcObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, srcObj); logic.OnClearBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (srcBuffList != null) { foreach (var buffInfo in srcBuffList) { int buffId = srcObj.GetBuffID(buffInfo); BuffConfig_New srcBuffConfig = srcObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, srcObj); logic.OnClearBuff(tarObj, srcObj, buff, buffInfo, srcBuffConfig); } } } { var tarSkillList = tarObj.GetSkillList(); var tarBuffList = tarObj.GetBuffList(); if (tarSkillList != null) { foreach (var skillInfo in tarSkillList) { int skillId = tarObj.GetSkillID(skillInfo); SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); var logic = GetSkillLogic(skillInfo, tarObj); logic.OnDetachBuff(tarObj, srcObj, buff, skillInfo, skillConfig); } } if (tarBuffList != null) { foreach (var buffInfo in tarBuffList.Where(b => b.buff != buff.buff)) { int buffId = tarObj.GetBuffID(buffInfo); BuffConfig_New tarBuffConfig = tarObj.GetBuffConfig(buffId); var logic = GetBuffLogic(buffInfo, tarObj); logic.OnDetachBuff(tarObj, srcObj, buff, buffInfo, tarBuffConfig); } } } buffLogic.BuffOnEnd(tarObj, buff, buffConfig); buffLogic.OnDetach(tarObj, srcObj, buff, buffConfig); }
public static bool RemoveBuff(SkillObj tarObj, SkillObj srcObj, int deleteBuffId, BattleReason reason) { if (tarObj == null) { return(false); } var buffConfig = tarObj.GetBuffConfig(deleteBuffId); if (buffConfig == null) { return(false); } var tarBuffList = tarObj.GetBuffList(); BuffInfo_New buff = null; foreach (var b in tarBuffList) { if (tarObj.GetBuffID(b) == deleteBuffId) { buff = b; break; } } if (buff == null) { return(false); } //DetachBuff(tarObj, srcObj, buff, buffConfig); var buffLogicId = tarObj.GetBuffLogicId(buffConfig); if (!BuffLogics.ContainsKey(buffLogicId)) { return(false); } BuffLogic buffLogic = BuffLogics[buffLogicId]; buffLogic.BuffOnEnd(tarObj, buff, buffConfig); ////先从src方进行修正 //if (srcObj != null) //{ // var srcSkillList = srcObj.GetSkillList(); // var srcBuffList = srcObj.GetBuffList(); // if (srcSkillList != null) // { // foreach (var skillInfo in srcSkillList) // { // int skillId = srcObj.GetSkillID(skillInfo); // SkillConfig_New skillConfig = srcObj.GetSkillConfig(skillId); // var logic = GetSkillLogic(skillInfo, srcObj); // logic.OnClearBuff(tarObj, srcObj, buff, skillInfo, skillConfig); // } // } // if (srcBuffList != null) // { // foreach (var buffInfo in srcBuffList) // { // int buffId = srcObj.GetBuffID(buffInfo); // BuffConfig_New srcBuffConfig = srcObj.GetBuffConfig(buffId); // var logic = GetBuffLogic(buffInfo, srcObj); // logic.OnClearBuff(tarObj, srcObj, buff, buffInfo, srcBuffConfig); // } // } //} //{ // var tarSkillList = tarObj.GetSkillList(); // if (tarSkillList != null) // { // foreach (var skillInfo in tarSkillList) // { // int skillId = tarObj.GetSkillID(skillInfo); // SkillConfig_New skillConfig = tarObj.GetSkillConfig(skillId); // var logic = GetSkillLogic(skillInfo, tarObj); // logic.OnDetachBuff(tarObj, srcObj, buff, skillInfo, skillConfig); // } // } // if (tarBuffList != null) // { // foreach (var buffInfo in tarBuffList) // { // int buffId = tarObj.GetBuffID(buffInfo); // BuffConfig_New tarBuffConfig = tarObj.GetBuffConfig(buffId); // var logic = GetBuffLogic(buffInfo, tarObj); // logic.OnDetachBuff(tarObj, srcObj, buff, buffInfo, tarBuffConfig); // } // } //} //buffLogic.BuffOnEnd(tarObj, buff, buffConfig); return(true); }