//公开的方法 //1.增加一个Buff private void BuffAddBase(object buff, BuffArgs buffArgs) { //反射技术 -->根据字符串名称创建一个对象实例 BuffStateBase newBuff = Activator.CreateInstance(Type.GetType(buff.ToString())) as BuffStateBase; newBuff.CurrBuffArgs = buffArgs; newBuff.CurrentBuffType = buff.GetType(); newBuff.CurrentBuffState = buff; newBuff.CurrCtrl = CurrCtrl; //将Buff添加到容器中 //m_addition if (buffArgs.m_addition) { newBuff.OnEnter(); m_BuffList.Add(newBuff); } else { //判断当前容器中,是否包含这个Buff BuffStateBase findBuff = BuffCheckExitsBase(buff); if (findBuff != null) { findBuff.CurrBuffArgs.m_cintinueTime = newBuff.CurrBuffArgs.m_cintinueTime; } //如果没有,则直接加进去 else { newBuff.OnEnter(); m_BuffList.Add(newBuff); } } }
//检查容器中是否存在Buff private BuffStateBase BuffCheckExitsBase(object buff) { BuffStateBase findBuff = m_BuffList.Find(obj => obj.CurrentBuffState.Equals(buff)); return(findBuff == null ? null : findBuff); }