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);
 }