/// <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; }
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); }
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); }
protected virtual void OnSkillCDOver(TDBaseSkillData skillData) { Callback_OnCDOver?.Invoke(skillData as TData); }
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); }
/// <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)); }
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); }