Exemplo n.º 1
0
 /// <summary>
 /// Adds an callback to an listener.
 /// </summary>
 /// <typeparam name="T">Type of the observed propert</typeparam>
 /// <param name="monitor">Listener to extend.</param>
 /// <param name="eventHandler">The event handler to register to the listener.</param>
 /// <returns>The listener itself for chaining.</returns>
 public static IPropertyListener Call <T>(
     this IPropertyMonitor <T> monitor,
     EventHandler <OnPropertyChangedEventArgs <T> > eventHandler)
 {
     monitor.PropertyChanged += eventHandler;
     return(monitor);
 }
Exemplo n.º 2
0
            public MultiPlayerPropertyMonitor(Player p, IEnumerable <IPropertyMonitor <T> > propertyMonitors) : base(propertyMonitors)
            {
                //ValueChanged.Add(self => ((IPropertyMonitor)self).ValueChanged.Invoke(self));
                //ValueChanged.Add(self => ((IPropertyMonitor<T>)self).ValueChanged.Invoke(self));
                //ValueChanged.Add(self => ((IEntityPropertyMonitor)self).ValueChanged.Invoke(self));
                //ValueChanged.Add(self => ((IEntityPropertyMonitor<T>)self).ValueChanged.Invoke(self));
                //ValueChanged.Add(self => ((IPlayerPropertyMonitor)self).ValueChanged.Invoke(self));

                Player = p;

                IPropertyMonitor <T> self = this;

                self.ValueChanged.Add(s => ((IEntityPropertyMonitor)s).ValueChanged.Invoke(this));
                self.ValueChanged.Add(s => ((IEntityPropertyMonitor <T>)s).ValueChanged.Invoke(this));
                self.ValueChanged.Add(s => ((IPlayerPropertyMonitor)s).ValueChanged.Invoke(this));
                self.ValueChanged.Add(s => ((IPlayerPropertyMonitor <T>)s).ValueChanged.Invoke(this));
            }
Exemplo n.º 3
0
        void PropValueChanged(IPropertyMonitor <T> propMonitor)
        {
            T newValue = propMonitor.Value;

            if (!Value.Equals(newValue))
            {
                Value    = newValue;
                Property = propMonitor.Property;

                if (!(Property == null || propMonitor.Property == null || propMonitor.Property.LastChangedTick >= Property.LastChangedTick))
                {
                    Debugger.Break();
                }

                ValueChanged.Invoke(this);
            }
        }
Exemplo n.º 4
0
 private void InternalValueChanged(IPropertyMonitor p)
 {
     Debug.Assert(InternalPropertyMonitor == p);
     ValueChanged.Invoke(this);
 }
Exemplo n.º 5
0
 /// <summary>
 /// Adds an condition to the listener, to filter all notifications.
 /// </summary>
 /// <typeparam name="T">Type of the property to notify.</typeparam>
 /// <param name="monitor">The listener to filter.</param>
 /// <param name="predicate">The filter condition.</param>
 /// <returns>The condition property listener.</returns>
 public static IPropertyMonitor <T> If <T>(this IPropertyMonitor <T> monitor, Func <T, bool> predicate)
 {
     return(new PredicatePropertyMonitor <T>(monitor, predicate));
 }