Beispiel #1
0
        //creator是buff的创建者,用于计算动态伤害参数
        public void addBuff(int buffTID, Unit creator = null)
        {
            Debug.Assert(mUnit.isServer);
            Log.i("addBuff id=" + buffTID, Log.Tag.Skill);
            TBBuff tb = TableMgr.single.GetData <TBBuff>(buffTID);

            if (tb == null)
            {
                return;
            }
            bool isReject = false;

            if (onMutex != null)
            {
                onMutex(mUnit, tb, ref isReject);
            }
            if (isReject)
            {
                return;
            }
            //挂载buff
            Buff buff = null;

            switch (tb.type)
            {
            case 0:
                buff = new LuaBuff();
                break;

            default:
                return;
            }
            buff.mTB = tb;
            mBuffs.Add(buff);
            buff.init(mUnit);
            addBuff(buff);
            if (tb.mutex != 0)
            {
                onMutex += buff.onMutex;
            }
        }
Beispiel #2
0
 public void update()
 {
     for (int i = mBuffs.Count - 1; i >= 0; --i)
     {
         Buff buff = mBuffs [i];
         if (buff.isOver)
         {
             mBuffs.RemoveAt(i);
             if (buff.mTB.mutex != 0)
             {
                 onMutex -= buff.onMutex;
             }
             decBuff(buff);
             buff.deinit();
         }
         else
         {
             buff.update();
         }
     }
 }