Exemplo n.º 1
0
    //公开的方法

    //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);
            }
        }
    }
Exemplo n.º 2
0
    //检查容器中是否存在Buff
    private BuffStateBase BuffCheckExitsBase(object buff)
    {
        BuffStateBase findBuff = m_BuffList.Find(obj => obj.CurrentBuffState.Equals(buff));

        return(findBuff == null ? null : findBuff);
    }