//检查是否含有特定效果 public static bool ContainEffect(IBuffContainer c, eBuff_Effect id) { foreach (Buff item in c.getBuffList()) { if (item.my_buff_info.effect == id) { return(true); } } return(false); }
public static List <Buff> getBuff_by_ID(IBuffContainer c, eBuff_Effect id) { List <Buff> res = new List <Buff>(); foreach (Buff item in c.getBuffList()) { if (item.my_buff_info.effect == id) { res.Add(item); } } return(res); }
/* 单个效果的触发 可以直接通过analyse执行效果 * 这里主要提供群体触发,机会回合切换等时间。(加入有什么效果的事件是其他技能发动时,也可以加,呜噗噗噗噗噗) */ public static void dealBuff(IBuffContainer container, bool run_delete, eBuffEvent buff_event) { List <Buff> dead_list = new List <Buff>(); //删除标记 List <Buff> dick = container.getBuffList(); foreach (Buff buff in dick) { analyseBuff_Effect(buff, buff_event); // 删除检查&标记 if (run_delete) { buff.my_Duration--; if (buff.my_Duration <= 0) { dead_list.Add(buff); analyseBuff_Effect(buff, eBuffEvent.Buff_Remove); // TODO 删除特效 for (int i = buff.vfx_duration.Count - 1; i >= 0; i--) { UnityEngine.Object.Destroy(buff.vfx_duration[i]); } } } } //执行删除 foreach (Buff i in dead_list) { if (container.getBuffList().Contains(i)) { container.getBuffList().Remove(i); } } }