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); }
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); }
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); }
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)); }
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)); }
public ValueBuff(IGiveBuff name, float value) { this.Giver = name; this.value = value; }