Example #1
0
 /// <summary>
 /// obj1:来源对象
 /// obj2:来源技能
 /// </summary>
 /// <param name="mono"></param>
 /// <param name="obj"></param>
 public override void OnBeAdded(BaseCoreMono mono, params object[] obj)
 {
     base.OnBeAdded(mono, obj);
     R_Caster  = GetAddedObjData <BaseUnit>(0);
     R_Skill   = GetAddedObjData <TDBaseSkillData>(1);
     R_Attr    = AttrMgr.Add(Attr);
     R_Convert = AttrMgr.Add(Convert);
     CurTime   = 0;
 }
Example #2
0
 public TData Add(TData buff, BaseUnit self, BaseUnit caster, TDBaseSkillData fromSkill)
 {
     MaxLayer = buff.MaxLayer > MaxLayer ? buff.MaxLayer : MaxLayer;
     if (MaxLayer <= 0)
     {
         return(null);
     }
     if (MaxLayer > Layer)
     {
         BuffList.Add(buff);
         buff.OnBeAdded(self, caster, fromSkill);
     }
     else
     {
         Remove(buff);
         BuffList.Add(buff);
         buff.OnBeAdded(self, caster, fromSkill);
     }
     return(buff);
 }
Example #3
0
            public TData Merge(TData buff, BaseUnit self, BaseUnit caster, TDBaseSkillData fromSkill)
            {
                MaxLayer = buff.MaxLayer > MaxLayer ? buff.MaxLayer : MaxLayer;
                if (MaxLayer <= 0)
                {
                    return(null);
                }
                TData newBuff = null;

                if (BuffList.Count == 0)
                {
                    newBuff = Add(buff, self, caster, fromSkill);
                }
                else
                {
                    newBuff = BuffList[0];
                    if (newBuff.MergeLayer >= MaxLayer)
                    {
                        return(newBuff);
                    }
                    newBuff.OnMerge(buff, caster, fromSkill);
                }
                return(newBuff);
            }
Example #4
0
 protected virtual void OnSkillCDOver(TDBaseSkillData skillData)
 {
     Callback_OnCDOver?.Invoke(skillData as TData);
 }
Example #5
0
        public virtual TData Add(TData buff, BaseUnit caster = null, float step = 0.0f, TDBaseSkillData skill = null)
        {
            if (!SelfBaseUnit.IsLive)
            {
                return(null);
            }
            TData     newBuff   = null;
            BuffGroup buffGroup = null;

            //有buff组的buff叠加
            if (!string.IsNullOrEmpty(buff.BuffGroupID))
            {
                if (!Data.ContainsKey(buff.BuffGroupID))
                {
                    var tempGroup = new BuffGroup();
                    Data.Add(buff.BuffGroupID, tempGroup);
                    ListData.Add(tempGroup);

                    //非永久buff加入 update队列
                    if (buff.MaxTime > 0)
                    {
                        UpdateDataList.Add(tempGroup);
                    }
                }
                buffGroup = Data[buff.BuffGroupID];
                newBuff   = buffGroup.Add(buff, SelfBaseUnit, caster, skill);
            }
            //没有buff组的buff合并
            else
            {
                if (!Data.ContainsKey(buff.TDID))
                {
                    var tempGroup = new BuffGroup();
                    Data.Add(buff.TDID, tempGroup);
                    ListData.Add(tempGroup);

                    //非永久buff加入 update队列
                    if (buff.MaxTime > 0)
                    {
                        UpdateDataList.Add(tempGroup);
                    }
                }
                buffGroup = Data[buff.TDID];
                newBuff   = buffGroup.Merge(buff, SelfBaseUnit, caster, skill);
            }
            Callback_OnBuffChange?.Invoke();
            if (newBuff != null)
            {
                newBuff.SetStep(step);
            }
            return(newBuff);
        }
Example #6
0
        /// <summary>
        /// 添加一个buff
        /// </summary>
        /// <param name="buffName"></param>
        /// <param name="caster">如果为null,caster默认为自己</param>
        public virtual TData Add(string buffName, BaseUnit caster = null, float step = 0.0f, TDBaseSkillData skill = null)
        {
            if (buffName.IsInvStr())
            {
                return(null);
            }
            if (!Table.Contains(buffName))
            {
                CLog.Error("未找到buff errorId=" + buffName);
                return(null);
            }
            TData tempBuff = Table.Find(buffName).Copy() as TData;

            return(Add(tempBuff, caster, step, skill));
        }
Example #7
0
        public virtual List <TData> Add(string[] buffName, BaseUnit caster = null, float step = 0.0f, TDBaseSkillData skill = null)
        {
            if (buffName == null)
            {
                return(null);
            }
            if (buffName.Length == 0)
            {
                return(null);
            }
            List <TData> ret = new List <TData>();

            for (int i = 0; i < buffName.Length; ++i)
            {
                ret.Add(Add(buffName[i], caster, step, skill));
            }
            return(ret);
        }