예제 #1
0
 private bool TryFind(int Type, out BuffRegister b)
 {
     for (int i = 0; i < buffs.Count; i++)
     {
         if (buffs[i].Type == Type)
         {
             b = buffs[i];
             return(true);
         }
     }
     b = null;
     return(false);
 }
예제 #2
0
 public void RemoveRegister(IGiveBuff give)
 {
     for (int i = buffs.Count; i > -1; i--)
     {
         BuffRegister b = buffs[i];
         b.Remove(give, out bool c);
         if (c)
         {
             b.OnValueChanged -= InvokeOnBuffRegisterValueChanged;
             buffs.RemoveAt(i);
         }
     }
     if (giveBuffs.Contains(give))
     {
         giveBuffs.Remove(give);
     }
     OnValueChanged?.Invoke(AMOUNT_GIVEBUFF_REGISTED);
 }
예제 #3
0
 public void Register(IGiveBuff give, int typeBuff, float a)
 {
     if (TryFind(typeBuff, out BuffRegister b))
     {
         b.Register(give, a);
     }
     else
     {
         b = new BuffRegister(typeBuff);
         b.OnValueChanged += InvokeOnBuffRegisterValueChanged;
         buffs.Add(b);
         b.Register(give, a);
     }
     if (!giveBuffs.Contains(give))
     {
         giveBuffs.Add(give);
     }
     OnValueChanged?.Invoke(AMOUNT_GIVEBUFF_REGISTED);
 }