Esempio n. 1
0
 private ValueBuff Find(IGiveBuff host)
 {
     for (int i = froms.Count - 1; i > -1; i--)
     {
         if (froms[i].Giver == null || froms[i].Giver as UnityEngine.Object == null)
         {
             continue;
         }
         if (froms[i].Giver.Equals(host))
         {
             return(froms[i]);
         }
     }
     return(null);
 }
Esempio n. 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);
 }
Esempio n. 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);
 }
Esempio n. 4
0
    public void Remove(IGiveBuff f, out bool clear)
    {
        ValueBuff ee       = Find(f);
        float     oldValue = GetValue;

        if (ee != null)
        {
            froms.Remove(ee);
        }
        clear = froms.Count == 0;
        float newValue;

        if (clear)
        {
            newValue = 0;
        }
        else
        {
            newValue = GetValue;
        }
        OnValueChanged?.Invoke(Type, new ChangesValue(oldValue, newValue));
    }
Esempio n. 5
0
    public void Register(IGiveBuff give, float value)
    {
        ValueBuff vlb = null;

        if (give != null && give as UnityEngine.Object != null)
        {
            vlb = Find(give);
        }
        float oldValue = GetValue;

        if (vlb == null)
        {
            froms.Add(new ValueBuff(give, value));
        }
        else
        {
            Debug.Log("Da ton tai give");
            vlb.value = value;
        }
        float newValue = GetValue;

        OnValueChanged?.Invoke(Type, new ChangesValue(oldValue, newValue));
    }
Esempio n. 6
0
 public ValueBuff(IGiveBuff name, float value)
 {
     this.Giver = name;
     this.value = value;
 }