Ejemplo n.º 1
0
        /// <summary>
        /// Register a settings listener for a specific option. The settings listener
        /// will be called as soon as the option value changes, e.g. when modifying
        /// the configuration through the GUI, or when loading a game having a patch
        /// file defined. The settings listener is also called immediately by this
        /// method while registering.
        ///
        /// Only one settings listener can be defined for each name/option
        /// combination. This allows to call this method for the same listener
        /// multiple times and have it registered only once.
        /// </summary>
        /// <param name="name"> the name of the settings listener </param>
        /// <param name="option"> the settings option </param>
        /// <param name="listener"> the listener to be called when the settings option value
        /// changes </param>
        public virtual void registerSettingsListener(string name, string option, ISettingsListener listener)
        {
            removeSettingsListener(name, option);

            SettingsListenerInfo info = new SettingsListenerInfo(name, option, listener);

            allListeners.Add(info);
            IList <ISettingsListener> listenersForKey = listenersByKey[option];

            if (listenersForKey == null)
            {
                listenersForKey        = new LinkedList <ISettingsListener>();
                listenersByKey[option] = listenersForKey;
            }
            listenersForKey.Add(listener);

            // Trigger the settings listener immediately if a value is defined
            string value = getProperty(option);

            if (!string.ReferenceEquals(value, null))
            {
                listener.settingsValueChanged(option, value);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Отписывает слушателя от рассылки уведомлений
 /// </summary>
 public void RemoveListener(ISettingsListener listener)
 {
     _Listeners.Remove(listener);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Добавить слушателя, который будет оповещен при изменении настроек
 /// </summary>
 public void AddListener(ISettingsListener listener)
 {
     _Listeners.Add(listener);
 }
Ejemplo n.º 4
0
 protected internal virtual void setSettingsListener(string option, ISettingsListener settingsListener)
 {
     Settings.Instance.registerSettingsListener(Name, option, settingsListener);
 }
Ejemplo n.º 5
0
 public SettingsListenerInfo(string name, string key, ISettingsListener listener)
 {
     this.name     = name;
     this.key      = key;
     this.listener = listener;
 }