private void TriggerEvent(DictionaryChangedEventArgs <K, V> dictChanged)
 {
     if (OnDictionaryChanged != null &&
         OnDictionaryChanged.GetInvocationList().Length != 0)
     {
         OnDictionaryChanged(this, dictChanged);
     }
 }
        new public void Clear()
        {
            Dictionary <TKey, TValue> remove = new Dictionary <TKey, TValue>(this);

            base.Clear();
            OnRemove?.Invoke(this, remove);
            OnDictionaryChanged?.Invoke(this);
        }
        public new void Add(K key, V value)
        {
            OnDictionaryChanged?.Invoke(this, new DictChangedEventArgs <K, V>()
            {
                Key = key, Value = value
            });

            base.Add(key, value);
        }
        new public void Add(TKey key, TValue value)
        {
            base.Add(key, value);
            Dictionary <TKey, TValue> add = new Dictionary <TKey, TValue>();

            add.Add(key, value);
            OnAdd?.Invoke(this, add);
            OnDictionaryChanged?.Invoke(this);
        }
Esempio n. 5
0
 public V this[K key]
 {
     get
     {
         return(mInner[key]);
     }
     set
     {
         mInner[key] = value; OnDictionaryChanged?.Invoke(this, (key, value));
     }
 }
Esempio n. 6
0
        public void Remove(TKey key)
        {
            var keyIndex = GetKeyIndex(key);

            if (keyIndex != -1)
            {
                _keys.RemoveAt(keyIndex);
                _values.RemoveAt(keyIndex);

                OnValueChanged.InvokeSafe(key);
                OnDictionaryChanged.InvokeSafe();
            }
        }
        new public bool Remove(TKey key)
        {
            Dictionary <TKey, TValue> remove = new Dictionary <TKey, TValue>();

            if (base.ContainsKey(key))
            {
                remove.Add(key, base[key]);
            }
            bool result = base.Remove(key);

            OnRemove?.Invoke(this, remove);
            OnDictionaryChanged?.Invoke(this);
            return(result);
        }
Esempio n. 8
0
        // Note: Calls OnValueChanged for each value so that persistency & ui can be updated correctly
        public void Clear()
        {
            var keysTmp = new List <TKey>(_keys); // Note: copy keys to avoid modification from subscribers

            _keys.Clear();
            _values.Clear();

            foreach (var key in keysTmp)
            {
                OnValueChanged.InvokeSafe(key);
            }

            OnDictionaryChanged.InvokeSafe();
        }
        private void HandleAddDictionaryEvent(NetworkedDictionaryEvent <TKey, TValue> dictionaryEvent)
        {
            if (NetworkingManager.Singleton.IsServer)
            {
                if (NetworkingManager.Singleton.ConnectedClients.Count > 0)
                {
                    dirtyEvents.Add(dictionaryEvent);
                }

                OnDictionaryChanged?.Invoke(dictionaryEvent);
            }
            else
            {
                dirtyEvents.Add(dictionaryEvent);
            }
        }
Esempio n. 10
0
        public virtual void Set(TKey key, TValue value)
        {
            var keyIndex = GetKeyIndex(key);

            if (keyIndex == -1)
            {
                _keys.Add(key);
                _values.Add(value);
            }
            else
            {
                _values[keyIndex] = value;
            }

            OnValueChanged.InvokeSafe(key);
            OnDictionaryChanged.InvokeSafe();
        }
 new public TValue this[TKey key]
 {
     set
     {
         if (!base.ContainsKey(key))
         {
             throw new AquaFrameworkException("Invalid key.");
         }
         Dictionary <TKey, TValue> remove = new Dictionary <TKey, TValue>();
         Dictionary <TKey, TValue> add    = new Dictionary <TKey, TValue>();
         remove.Add(key, base[key]);
         base[key] = value;
         add.Add(key, value);
         OnRemove?.Invoke(this, remove);
         OnAdd?.Invoke(this, add);
         OnDictionaryChanged?.Invoke(this);
     }
     get
     {
         return(base[key]);
     }
 }
 /// <summary>
 /// Remove element from dictionary
 /// </summary>
 /// <param name="key"></param>
 public new void Remove(TKey key)
 {
     base.Remove(key);
     OnDictionaryChanged?.Invoke(this, new DictionaryChangedEventArgs <TKey, TValue>(key, default, DictionaryActionType.RemoveItem));
 /// <summary>
 /// Add new element to dictionary
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public new void Add(TKey key, TValue value)
 {
     base.Add(key, value);
     OnDictionaryChanged?.Invoke(this, new DictionaryChangedEventArgs <TKey, TValue>(key, value, DictionaryActionType.RemoveItem));
 }