Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }