private BufferStateBase BufferAddBase(object buffer, BufferArgs bufferArgs) { // 实例化一个Buffer BufferStateBase newBuffer = BufferCreate(buffer, bufferArgs); // 判断该buffer是否应该添加到容器中 if (newBuffer.CurrArgs.m_Addition == true) { // 添加到容器中 newBuffer.OnEnter(); m_bufferList.Add(newBuffer); } else { // 判断该状态在容器中是否存在 if (BufferCheckExistsBase(buffer)) // 存在, 更新作用时间 { BufferStateBase oldBuffer = m_bufferList.Find(delegate(BufferStateBase obj) { return(obj.CurrBufferState.Equals(buffer)); }); if (oldBuffer != null) { oldBuffer.OnRenovate(newBuffer.CurrArgs); } } else // 不存在, 直接添加进去 // 添加到容器中 { newBuffer.OnEnter(); m_bufferList.Add(newBuffer); } } return(newBuffer); }
// 3.检查某个Buffer是否存在 private bool BufferCheckExistsBase(object buffer) { BufferStateBase findBuffer = m_bufferList.Find(delegate(BufferStateBase obj) { return(obj.CurrBufferState.Equals(buffer)); }); return(findBuffer == null ? false : true); }
public void RenovateBuff(BufferStateBase buffer, BufferArgs args) { foreach (var item in m_bufferList) { if (item == buffer) { temp = item; } } if (temp != null) { temp.OnRenovate(args); } }
// 1.添加一个新的Buffer(包括刷新或者重新添加) private BufferStateBase BufferCreate(object buffer, BufferArgs bufferArgs) { BufferStateBase newBuffer = Activator.CreateInstance( Type.GetType(buffer.ToString()) ) as BufferStateBase; newBuffer.CurrArgs = bufferArgs; newBuffer.CurrCtrl = CurrCtrl; newBuffer.CurrBufferType = buffer.GetType(); newBuffer.CurrBufferState = buffer; return(newBuffer); }
/// <summary> /// 移除某个特定的Buffer. /// </summary> /// <param name="buffer">Buffer.</param> public void BufferRemoveOne(object buffer) { foreach (var item in m_bufferList) { if (item == buffer) { temp = item; } } //在遍历list数据时无法直接操作list,因此将移除放到遍历结束执行 if (temp != null) { temp.OnExit(); m_bufferList.Remove(temp); temp = null; } }
/// <summary> /// 更新某个buff的参数 /// </summary> /// <param name="buffer"></param> /// <param name="args"></param> public void RenovateBuff(BufferStateBase buffer, BufferArgs args) { m_BufferMgr.RenovateBuff(buffer, args); }
/// <summary> /// 移除某个指定的Buff /// </summary> /// <param name="buff"></param> public void RemoveOneBuff(BufferStateBase buff) { m_BufferMgr.BufferRemoveOne(buff); }